diff --git a/.editorconfig b/.editorconfig index b79f2c4f21..5dbbb2dc68 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,99 +1,199 @@ -# editorconfig.org +# EditorConfig is awesome:http://EditorConfig.org +# From https://raw.githubusercontent.com/dotnet/roslyn/master/.editorconfig # top-most EditorConfig file root = true -[project.json] -indent_size = 2 - -# C# files -[*.cs] -insert_final_newline = true +# Don't use tabs for indentation. +[*] indent_style = space +# (Please don't specify an indent_size here; that has too many unintended consequences.) + +# Code files +[*.{cs,csx,vb,vbx}] indent_size = 4 -# New line preferences -csharp_new_line_before_open_brace = all -csharp_new_line_before_else = true -csharp_new_line_before_catch = true -csharp_new_line_before_finally = true -csharp_new_line_before_members_in_object_initializers = true -csharp_new_line_before_members_in_anonymous_types = true -csharp_new_line_between_query_expression_clauses = true +insert_final_newline = true +charset = utf-8-bom -# Indentation preferences -csharp_indent_block_contents = true -csharp_indent_braces = false -csharp_indent_case_contents = true -csharp_indent_switch_labels = true -csharp_indent_labels = one_less_than_current +# Xml project files +[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}] +indent_size = 2 + +# Xml config files +[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}] +indent_size = 2 + +# Yml/Yaml files +[*.{yaml,yml}] +indent_size = 2 + +# JSON files +[*.json] +indent_size = 2 + +# Shell scripts +[*.sh] +end_of_line = lf + +[*.{cmd,bat}] +end_of_line = crlf + +# Dotnet code style settings: +[*.{cs,vb}] +# Sort using and Import directives with System.* appearing first +dotnet_sort_system_directives_first = true +# Put a blank line between System.* and Microsoft.* +dotnet_separate_import_directive_groups = true -# avoid this. unless absolutely necessary +# Avoid "this." and "Me." if not necessary dotnet_style_qualification_for_field = false:suggestion dotnet_style_qualification_for_property = false:suggestion dotnet_style_qualification_for_method = false:suggestion dotnet_style_qualification_for_event = false:suggestion -# use var everywhere -csharp_style_var_for_built_in_types = true:suggestion -csharp_style_var_when_type_is_apparent = true:suggestion -csharp_style_var_elsewhere = true:suggestion - -# use language keywords instead of BCL types +# Use language keywords instead of framework type names for type references dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion dotnet_style_predefined_type_for_member_access = true:suggestion -# name all constant fields using PascalCase -dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion -dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields -dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style +# Prefer read-only on fields +dotnet_style_readonly_field = true:warning + +# Suggest more modern language features when available +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_conditional_expression_over_return = false +dotnet_style_prefer_conditional_expression_over_assignment = false +dotnet_style_prefer_auto_properties = true + +# Accessibility modifiers +dotnet_style_require_accessibility_modifiers = always:suggestion + + +# Naming Rules + +# Interfaces start with an I and are PascalCased +dotnet_naming_rule.interfaces_must_be_pascal_cased_and_prefixed_with_I.symbols = interface_symbols +dotnet_naming_rule.interfaces_must_be_pascal_cased_and_prefixed_with_I.style = pascal_case_and_prefix_with_I_style +dotnet_naming_rule.interfaces_must_be_pascal_cased_and_prefixed_with_I.severity = warning + +# External members are PascalCased +dotnet_naming_rule.externally_visible_members_must_be_pascal_cased.symbols = externally_visible_symbols +dotnet_naming_rule.externally_visible_members_must_be_pascal_cased.style = pascal_case_style +dotnet_naming_rule.externally_visible_members_must_be_pascal_cased.severity = warning + +# Parameters are camelCased +dotnet_naming_rule.parameters_must_be_camel_cased.symbols = parameter_symbols +dotnet_naming_rule.parameters_must_be_camel_cased.style = camel_case_style +dotnet_naming_rule.parameters_must_be_camel_cased.severity = warning + +# Constants are PascalCased +dotnet_naming_rule.constants_must_be_pascal_cased.symbols = constant_symbols +dotnet_naming_rule.constants_must_be_pascal_cased.style = pascal_case_style +dotnet_naming_rule.constants_must_be_pascal_cased.severity = warning + +# Uncomment this group and comment out the next group if you prefer s_ prefixes for static fields + +# Private static fields are prefixed with s_ and are camelCased like s_myStatic +#dotnet_naming_rule.private_static_fields_must_be_camel_cased_and_prefixed_with_s_underscore.symbols = private_static_field_symbols +#dotnet_naming_rule.private_static_fields_must_be_camel_cased_and_prefixed_with_s_underscore.style = camel_case_and_prefix_with_s_underscore_style +#dotnet_naming_rule.private_static_fields_must_be_camel_cased_and_prefixed_with_s_underscore.severity = warning + +# Static readonly fields are PascalCased +dotnet_naming_rule.static_readonly_fields_should_be_pascal_case.symbols = private_static_readonly_field_symbols +dotnet_naming_rule.static_readonly_fields_should_be_pascal_case.style = pascal_case_style +dotnet_naming_rule.static_readonly_fields_should_be_pascal_case.severity = warning + +# Comment this group and uncomment out the next group if you don't want _ prefixed fields. -dotnet_naming_symbols.constant_fields.applicable_kinds = field -dotnet_naming_symbols.constant_fields.required_modifiers = const +# Private instance fields are camelCased with an _ like _myField +dotnet_naming_rule.private_instance_fields_must_be_camel_cased_and_prefixed_with_underscore.symbols = private_field_symbols +dotnet_naming_rule.private_instance_fields_must_be_camel_cased_and_prefixed_with_underscore.style = camel_case_and_prefix_with_underscore_style +dotnet_naming_rule.private_instance_fields_must_be_camel_cased_and_prefixed_with_underscore.severity = warning -# name all static fields using PascalCase -dotnet_naming_rule.static_fields_should_be_pascal_case.severity = suggestion -dotnet_naming_rule.static_fields_should_be_pascal_case.symbols = static_fields -dotnet_naming_rule.static_fields_should_be_pascal_case.style = pascal_case_style +# Private instance fields are camelCased +#dotnet_naming_rule.private_instance_fields_must_be_camel_cased.symbols = private_field_symbols +#dotnet_naming_rule.private_instance_fields_must_be_camel_cased.style = camel_case_style +#dotnet_naming_rule.private_instance_fields_must_be_camel_cased.severity = warning -dotnet_naming_symbols.static_fields.applicable_kinds = field -dotnet_naming_symbols.static_fields.required_modifiers = static +# Symbols +dotnet_naming_symbols.externally_visible_symbols.applicable_kinds = class,struct,interface,enum,property,method,field,event,delegate +dotnet_naming_symbols.externally_visible_symbols.applicable_accessibilities = public,internal,friend,protected,protected_internal,protected_friend,private_protected -dotnet_naming_style.pascal_case_style.capitalization = pascal_case +dotnet_naming_symbols.interface_symbols.applicable_kinds = interface +dotnet_naming_symbols.interface_symbols.applicable_accessibilities = * -# internal and private fields should be _camelCase -dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion -dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields -dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style +dotnet_naming_symbols.parameter_symbols.applicable_kinds = parameter +dotnet_naming_symbols.parameter_symbols.applicable_accessibilities = * -dotnet_naming_symbols.private_internal_fields.applicable_kinds = field -dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal +dotnet_naming_symbols.constant_symbols.applicable_kinds = field +dotnet_naming_symbols.constant_symbols.required_modifiers = const +dotnet_naming_symbols.constant_symbols.applicable_accessibilities = * -dotnet_naming_style.camel_case_underscore_style.required_prefix = _ -dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case +dotnet_naming_symbols.private_static_field_symbols.applicable_kinds = field +dotnet_naming_symbols.private_static_field_symbols.required_modifiers = static,shared +dotnet_naming_symbols.private_static_field_symbols.applicable_accessibilities = private + +dotnet_naming_symbols.private_static_readonly_field_symbols.applicable_kinds = field +dotnet_naming_symbols.private_static_readonly_field_symbols.required_modifiers = static,shared,readonly +dotnet_naming_symbols.private_static_readonly_field_symbols.applicable_accessibilities = private + +dotnet_naming_symbols.private_field_symbols.applicable_kinds = field +dotnet_naming_symbols.private_field_symbols.applicable_accessibilities = private + +# Styles +dotnet_naming_style.camel_case_style.capitalization = camel_case + +dotnet_naming_style.pascal_case_style.capitalization = pascal_case + +dotnet_naming_style.camel_case_and_prefix_with_s_underscore_style.required_prefix = s_ +dotnet_naming_style.camel_case_and_prefix_with_s_underscore_style.capitalization = camel_case + +dotnet_naming_style.camel_case_and_prefix_with_underscore_style.required_prefix = _ +dotnet_naming_style.camel_case_and_prefix_with_underscore_style.capitalization = camel_case + +dotnet_naming_style.pascal_case_and_prefix_with_I_style.required_prefix = I +dotnet_naming_style.pascal_case_and_prefix_with_I_style.capitalization = pascal_case + + +# CSharp code style settings: +[*.cs] +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_switch_labels = true +csharp_indent_labels = flush_left + +# Prefer "var" everywhere +csharp_style_var_for_built_in_types = true:suggestion +csharp_style_var_when_type_is_apparent = true:suggestion +csharp_style_var_elsewhere = true:suggestion # Code style defaults -dotnet_sort_system_directives_first = true -dotnet_style_require_accessibility_modifiers = omit_if_default csharp_preserve_single_line_blocks = true -csharp_preserve_single_line_statements = false +csharp_preserve_single_line_statements = true -# Expression-level preferences -dotnet_style_object_initializer = true:suggestion -dotnet_style_collection_initializer = true:suggestion -dotnet_style_explicit_tuple_names = true:suggestion -dotnet_style_prefer_inferred_tuple_names = true:suggestion -dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion -dotnet_style_coalesce_expression = true:suggestion -dotnet_style_null_propagation = true:suggestion - -# Expression-bodied members +# Prefer method-like constructs to have a block body csharp_style_expression_bodied_methods = false:none csharp_style_expression_bodied_constructors = false:none csharp_style_expression_bodied_operators = false:none + +# Prefer property-like constructs to have an expression-body csharp_style_expression_bodied_properties = true:none csharp_style_expression_bodied_indexers = true:none csharp_style_expression_bodied_accessors = true:none +# Expression +csharp_prefer_simple_default_expression = true:suggestion +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_pattern_local_over_anonymous_function = true:suggestion + # Pattern matching csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion csharp_style_pattern_matching_over_as_with_null_check = true:suggestion @@ -103,6 +203,15 @@ csharp_style_inlined_variable_declaration = true:suggestion csharp_style_throw_expression = true:suggestion csharp_style_conditional_delegate_call = true:suggestion +# Newline settings +csharp_new_line_before_open_brace = all +csharp_new_line_before_else = true +csharp_new_line_before_catch = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_between_query_expression_clauses = true + # Space preferences csharp_space_after_cast = false csharp_space_after_colon_in_inheritance_clause = true @@ -125,36 +234,4 @@ 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 - -# C++ Files -[*.{cpp,h,in}] -curly_bracket_next_line = true -indent_brace_style = Allman - -# Xml project files -[*.{csproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}] -indent_size = 2 - -# Xml build files -[*.builds] -indent_size = 2 - -# Yml/Yaml files -[*.{yaml,yml}] -indent_size = 2 - -# Xml files -[*.{xml,stylecop,resx,ruleset}] -indent_size = 2 - -# Xml config files -[*.{props,targets,config,nuspec}] -indent_size = 2 - -# Shell scripts -[*.sh] -end_of_line = lf - -[*.{cmd, bat}] -end_of_line = crlf +csharp_space_between_square_brackets = false \ No newline at end of file diff --git a/Rx.NET/Source/Directory.build.props b/Rx.NET/Source/Directory.build.props index 7c05ded82b..4584b4077b 100644 --- a/Rx.NET/Source/Directory.build.props +++ b/Rx.NET/Source/Directory.build.props @@ -21,6 +21,7 @@ $(MSBuildThisFileDirectory)artifacts true true + latest diff --git a/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/BufferCountBenchmark.cs b/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/BufferCountBenchmark.cs index 8e262d717a..fb714e5c89 100644 --- a/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/BufferCountBenchmark.cs +++ b/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/BufferCountBenchmark.cs @@ -13,7 +13,7 @@ namespace Benchmarks.System.Reactive [MemoryDiagnoser] public class BufferCountBenchmark { - IList _store; + private IList _store; [Benchmark] public void Exact() diff --git a/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/Program.cs b/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/Program.cs index 9b1d620f69..2e1c24ffab 100644 --- a/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/Program.cs +++ b/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/Program.cs @@ -7,9 +7,9 @@ namespace Benchmarks.System.Reactive { - class Program + internal class Program { - static void Main() + private static void Main() { var switcher = new BenchmarkSwitcher(new[] { typeof(ZipBenchmark), diff --git a/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/RangeBenchmark.cs b/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/RangeBenchmark.cs index ab42b0fa35..3f3ef2f173 100644 --- a/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/RangeBenchmark.cs +++ b/Rx.NET/Source/benchmarks/Benchmarks.System.Reactive/RangeBenchmark.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. @@ -14,8 +14,7 @@ public class RangeBenchmark { [Params(1, 10, 100, 1000, 10000, 100000, 1000000)] public int N; - - int _store; + private int _store; [Benchmark] public void Range() diff --git a/Rx.NET/Source/src/AssemblyInfo.cs b/Rx.NET/Source/src/AssemblyInfo.cs index 598bc0228d..c58daae750 100644 --- a/Rx.NET/Source/src/AssemblyInfo.cs +++ b/Rx.NET/Source/src/AssemblyInfo.cs @@ -7,5 +7,4 @@ [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] -[assembly: AllowPartiallyTrustedCallers] -[assembly: NeutralResourcesLanguage("en-US")] \ No newline at end of file +[assembly: NeutralResourcesLanguage("en-US")] diff --git a/Rx.NET/Source/src/Microsoft.Reactive.Testing/ColdObservable.cs b/Rx.NET/Source/src/Microsoft.Reactive.Testing/ColdObservable.cs index 06402d31bc..fed6354587 100644 --- a/Rx.NET/Source/src/Microsoft.Reactive.Testing/ColdObservable.cs +++ b/Rx.NET/Source/src/Microsoft.Reactive.Testing/ColdObservable.cs @@ -2,61 +2,58 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Reactive; -using System; using System.Reactive.Disposables; namespace Microsoft.Reactive.Testing { - class ColdObservable : ITestableObservable + internal class ColdObservable : ITestableObservable { - readonly TestScheduler scheduler; - readonly Recorded>[] messages; - readonly List subscriptions = new List(); + private readonly TestScheduler _scheduler; + private readonly Recorded>[] _messages; + private readonly List _subscriptions = new List(); public ColdObservable(TestScheduler scheduler, params Recorded>[] messages) { - if (scheduler == null) - throw new ArgumentNullException(nameof(scheduler)); - if (messages == null) - throw new ArgumentNullException(nameof(messages)); - - this.scheduler = scheduler; - this.messages = messages; + _scheduler = scheduler ?? throw new ArgumentNullException(nameof(scheduler)); + _messages = messages ?? throw new ArgumentNullException(nameof(messages)); } public virtual IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } - subscriptions.Add(new Subscription(scheduler.Clock)); - var index = subscriptions.Count - 1; + _subscriptions.Add(new Subscription(_scheduler.Clock)); + var index = _subscriptions.Count - 1; var d = new CompositeDisposable(); - for (var i = 0; i < messages.Length; ++i) + for (var i = 0; i < _messages.Length; ++i) { - var notification = messages[i].Value; - d.Add(scheduler.ScheduleRelative(default(object), messages[i].Time, (scheduler1, state1) => { notification.Accept(observer); return Disposable.Empty; })); + var notification = _messages[i].Value; + d.Add(_scheduler.ScheduleRelative(default(object), _messages[i].Time, (scheduler1, state1) => { notification.Accept(observer); return Disposable.Empty; })); } return Disposable.Create(() => { - subscriptions[index] = new Subscription(subscriptions[index].Subscribe, scheduler.Clock); + _subscriptions[index] = new Subscription(_subscriptions[index].Subscribe, _scheduler.Clock); d.Dispose(); }); } public IList Subscriptions { - get { return subscriptions; } + get { return _subscriptions; } } public IList>> Messages { - get { return messages; } + get { return _messages; } } } } diff --git a/Rx.NET/Source/src/Microsoft.Reactive.Testing/HotObservable.cs b/Rx.NET/Source/src/Microsoft.Reactive.Testing/HotObservable.cs index 80d36d8329..c43ce7cf8c 100644 --- a/Rx.NET/Source/src/Microsoft.Reactive.Testing/HotObservable.cs +++ b/Rx.NET/Source/src/Microsoft.Reactive.Testing/HotObservable.cs @@ -2,36 +2,31 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Reactive; -using System; using System.Reactive.Disposables; namespace Microsoft.Reactive.Testing { - class HotObservable : ITestableObservable + internal class HotObservable : ITestableObservable { - readonly TestScheduler scheduler; - readonly List> observers = new List>(); - readonly List subscriptions = new List(); - readonly Recorded>[] messages; + private readonly TestScheduler _scheduler; + private readonly List> _observers = new List>(); + private readonly List _subscriptions = new List(); + private readonly Recorded>[] _messages; public HotObservable(TestScheduler scheduler, params Recorded>[] messages) { - if (scheduler == null) - throw new ArgumentNullException(nameof(scheduler)); - if (messages == null) - throw new ArgumentNullException(nameof(messages)); - - this.scheduler = scheduler; - this.messages = messages; + _scheduler = scheduler ?? throw new ArgumentNullException(nameof(scheduler)); + _messages = messages ?? throw new ArgumentNullException(nameof(messages)); for (var i = 0; i < messages.Length; ++i) { var notification = messages[i].Value; scheduler.ScheduleAbsolute(default(object), messages[i].Time, (scheduler1, state1) => { - var _observers = observers.ToArray(); + var _observers = this._observers.ToArray(); for (var j = 0; j < _observers.Length; ++j) { notification.Accept(_observers[j]); @@ -44,27 +39,29 @@ public HotObservable(TestScheduler scheduler, params Recorded>[] public virtual IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } - observers.Add(observer); - subscriptions.Add(new Subscription(scheduler.Clock)); - var index = subscriptions.Count - 1; + _observers.Add(observer); + _subscriptions.Add(new Subscription(_scheduler.Clock)); + var index = _subscriptions.Count - 1; return Disposable.Create(() => { - observers.Remove(observer); - subscriptions[index] = new Subscription(subscriptions[index].Subscribe, scheduler.Clock); + _observers.Remove(observer); + _subscriptions[index] = new Subscription(_subscriptions[index].Subscribe, _scheduler.Clock); }); } public IList Subscriptions { - get { return subscriptions; } + get { return _subscriptions; } } public IList>> Messages { - get { return messages; } + get { return _messages; } } } } diff --git a/Rx.NET/Source/src/Microsoft.Reactive.Testing/MockObserver.cs b/Rx.NET/Source/src/Microsoft.Reactive.Testing/MockObserver.cs index fd1154739c..59028f9460 100644 --- a/Rx.NET/Source/src/Microsoft.Reactive.Testing/MockObserver.cs +++ b/Rx.NET/Source/src/Microsoft.Reactive.Testing/MockObserver.cs @@ -2,23 +2,20 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.Reactive; -using System; namespace Microsoft.Reactive.Testing { - class MockObserver : ITestableObserver + internal class MockObserver : ITestableObserver { - TestScheduler scheduler; - List>> messages; + private TestScheduler scheduler; + private List>> messages; public MockObserver(TestScheduler scheduler) { - if (scheduler == null) - throw new ArgumentNullException(nameof(scheduler)); - - this.scheduler = scheduler; + this.scheduler = scheduler ?? throw new ArgumentNullException(nameof(scheduler)); messages = new List>>(); } diff --git a/Rx.NET/Source/src/Microsoft.Reactive.Testing/NamespaceDoc.cs b/Rx.NET/Source/src/Microsoft.Reactive.Testing/NamespaceDoc.cs index 463d55d081..40b5167e40 100644 --- a/Rx.NET/Source/src/Microsoft.Reactive.Testing/NamespaceDoc.cs +++ b/Rx.NET/Source/src/Microsoft.Reactive.Testing/NamespaceDoc.cs @@ -8,7 +8,7 @@ namespace Microsoft.Reactive.Testing /// The Microsoft.Reactive.Testing namespace contains interfaces and classes providing functionality to test applications and libraries built using Reactive Extensions. /// [System.Runtime.CompilerServices.CompilerGeneratedAttribute] - class NamespaceDoc + internal class NamespaceDoc { } } diff --git a/Rx.NET/Source/src/Microsoft.Reactive.Testing/Properties/AssemblyInfo.cs b/Rx.NET/Source/src/Microsoft.Reactive.Testing/Properties/AssemblyInfo.cs index bff391c5ac..317c6542fb 100644 --- a/Rx.NET/Source/src/Microsoft.Reactive.Testing/Properties/AssemblyInfo.cs +++ b/Rx.NET/Source/src/Microsoft.Reactive.Testing/Properties/AssemblyInfo.cs @@ -1,9 +1,7 @@ using System; using System.Runtime.InteropServices; -using System.Security; [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] -//[assembly: AllowPartiallyTrustedCallers] \ No newline at end of file diff --git a/Rx.NET/Source/src/Microsoft.Reactive.Testing/ReactiveAssert.cs b/Rx.NET/Source/src/Microsoft.Reactive.Testing/ReactiveAssert.cs index a752c2a8ca..250e1c34cb 100644 --- a/Rx.NET/Source/src/Microsoft.Reactive.Testing/ReactiveAssert.cs +++ b/Rx.NET/Source/src/Microsoft.Reactive.Testing/ReactiveAssert.cs @@ -6,9 +6,8 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; -using System.Text; -using System.Reactive.Disposables; using System.Reactive.Linq; +using System.Text; using Xunit; namespace Microsoft.Reactive.Testing @@ -18,7 +17,7 @@ namespace Microsoft.Reactive.Testing /// public static class ReactiveAssert { - static string Message(IEnumerable actual, IEnumerable expected) + private static string Message(IEnumerable actual, IEnumerable expected) { var sb = new StringBuilder(); sb.AppendLine(); @@ -43,12 +42,19 @@ static string Message(IEnumerable actual, IEnumerable expected) public static void AreElementsEqual(IEnumerable expected, IEnumerable actual) { if (expected == null) + { throw new ArgumentNullException(nameof(expected)); + } + if (actual == null) + { throw new ArgumentNullException(nameof(actual)); + } if (!expected.SequenceEqual(actual)) + { Assert.True(false, Message(actual, expected)); + } } /// @@ -62,12 +68,19 @@ public static void AreElementsEqual(IEnumerable expected, IEnumerable a public static void AreElementsEqual(IEnumerable expected, IEnumerable actual, string message) { if (expected == null) + { throw new ArgumentNullException(nameof(expected)); + } + if (actual == null) + { throw new ArgumentNullException(nameof(actual)); + } if (!expected.SequenceEqual(actual)) + { Assert.True(false, message); + } } /// @@ -80,9 +93,14 @@ public static void AreElementsEqual(IEnumerable expected, IEnumerable a public static void AreElementsEqual(IObservable expected, IObservable actual) { if (expected == null) + { throw new ArgumentNullException(nameof(expected)); + } + if (actual == null) + { throw new ArgumentNullException(nameof(actual)); + } AreElementsEqual(expected.Materialize().ToEnumerable(), actual.Materialize().ToEnumerable()); } @@ -98,9 +116,14 @@ public static void AreElementsEqual(IObservable expected, IObservable a public static void AreElementsEqual(IObservable expected, IObservable actual, string message) { if (expected == null) + { throw new ArgumentNullException(nameof(expected)); + } + if (actual == null) + { throw new ArgumentNullException(nameof(actual)); + } AreElementsEqual(expected.Materialize().ToEnumerable(), actual.Materialize().ToEnumerable(), message); } @@ -114,7 +137,9 @@ public static void AreElementsEqual(IObservable expected, IObservable a public static void Throws(Action action) where TException : Exception { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var failed = false; try @@ -131,7 +156,9 @@ public static void Throws(Action action) where TException : Exceptio } if (failed) + { Assert.True(false, string.Format(CultureInfo.CurrentCulture, "Expected {0}.", typeof(TException).Name)); + } } /// @@ -144,7 +171,9 @@ public static void Throws(Action action) where TException : Exceptio public static void Throws(Action action, string message) where TException : Exception { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var failed = false; try @@ -161,7 +190,9 @@ public static void Throws(Action action, string message) where TExce } if (failed) + { Assert.True(false, message); + } } /// @@ -174,7 +205,9 @@ public static void Throws(Action action, string message) where TExce public static void Throws(TException exception, Action action) where TException : Exception { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var failed = false; try @@ -192,7 +225,9 @@ public static void Throws(TException exception, Action action) where } if (failed) + { Assert.True(false, string.Format(CultureInfo.CurrentCulture, "Expected {0}.", typeof(TException).Name)); + } } /// @@ -206,7 +241,9 @@ public static void Throws(TException exception, Action action) where public static void Throws(TException exception, Action action, string message) where TException : Exception { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var failed = false; try @@ -224,7 +261,9 @@ public static void Throws(TException exception, Action action, strin } if (failed) + { Assert.True(false, message); + } } /// @@ -237,9 +276,14 @@ public static void Throws(TException exception, Action action, strin public static void AssertEqual(this IEnumerable actual, IEnumerable expected) { if (actual == null) + { throw new ArgumentNullException(nameof(actual)); + } + if (expected == null) + { throw new ArgumentNullException(nameof(expected)); + } ReactiveAssert.AreElementsEqual(expected, actual); } @@ -254,9 +298,14 @@ public static void AssertEqual(this IEnumerable actual, IEnumerable exp public static void AssertEqual(this IEnumerable actual, params T[] expected) { if (actual == null) + { throw new ArgumentNullException(nameof(actual)); + } + if (expected == null) + { throw new ArgumentNullException(nameof(expected)); + } ReactiveAssert.AreElementsEqual(expected, actual); } @@ -271,9 +320,14 @@ public static void AssertEqual(this IEnumerable actual, params T[] expecte public static void AssertEqual(this IObservable actual, IObservable expected) { if (actual == null) + { throw new ArgumentNullException(nameof(actual)); + } + if (expected == null) + { throw new ArgumentNullException(nameof(expected)); + } ReactiveAssert.AreElementsEqual(expected, actual); } diff --git a/Rx.NET/Source/src/Microsoft.Reactive.Testing/ReactiveTest.cs b/Rx.NET/Source/src/Microsoft.Reactive.Testing/ReactiveTest.cs index ca34268e48..e90a5fa7c6 100644 --- a/Rx.NET/Source/src/Microsoft.Reactive.Testing/ReactiveTest.cs +++ b/Rx.NET/Source/src/Microsoft.Reactive.Testing/ReactiveTest.cs @@ -16,7 +16,7 @@ public class ReactiveTest /// Default virtual time used for creation of observable sequences in -based unit tests. /// public const long Created = 100; - + /// /// Default virtual time used to subscribe to observable sequences in -based unit tests. /// @@ -50,7 +50,9 @@ public static Recorded> OnNext(long ticks, T value) public static Recorded> OnNext(long ticks, Func predicate) { if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return new Recorded>(ticks, new OnNextPredicate(predicate)); } @@ -89,7 +91,9 @@ public static Recorded> OnCompleted(long ticks, T witness) public static Recorded> OnError(long ticks, Exception exception) { if (exception == null) + { throw new ArgumentNullException(nameof(exception)); + } return new Recorded>(ticks, Notification.CreateOnError(exception)); } @@ -105,11 +109,13 @@ public static Recorded> OnError(long ticks, Exception excepti public static Recorded> OnError(long ticks, Func predicate) { if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return new Recorded>(ticks, new OnErrorPredicate(predicate)); } - + /// /// Factory method for an OnError notification record at a given time with a given error, using inference to determine the type of . /// @@ -122,7 +128,9 @@ public static Recorded> OnError(long ticks, Func> OnError(long ticks, Exception exception, T witness) { if (exception == null) + { throw new ArgumentNullException(nameof(exception)); + } return new Recorded>(ticks, Notification.CreateOnError(exception)); } @@ -139,7 +147,9 @@ public static Recorded> OnError(long ticks, Exception excepti public static Recorded> OnError(long ticks, Func predicate, T witness) { if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return new Recorded>(ticks, new OnErrorPredicate(predicate)); } @@ -167,7 +177,7 @@ public static Subscription Subscribe(long start) #region Predicate-based notification assert helper classes - class OnNextPredicate : PredicateNotification + private class OnNextPredicate : PredicateNotification { private readonly Func _predicate; @@ -179,17 +189,25 @@ public OnNextPredicate(Func predicate) public override bool Equals(Notification other) { if (Object.ReferenceEquals(this, other)) + { return true; - if (Object.ReferenceEquals(other, null)) + } + + if (other is null) + { return false; + } + if (other.Kind != NotificationKind.OnNext) + { return false; + } return _predicate(other.Value); } } - class OnErrorPredicate : PredicateNotification + private class OnErrorPredicate : PredicateNotification { private readonly Func _predicate; @@ -201,17 +219,25 @@ public OnErrorPredicate(Func predicate) public override bool Equals(Notification other) { if (Object.ReferenceEquals(this, other)) + { return true; - if (Object.ReferenceEquals(other, null)) + } + + if (other is null) + { return false; + } + if (other.Kind != NotificationKind.OnError) + { return false; + } return _predicate(other.Exception); } } - abstract class PredicateNotification : Notification + private abstract class PredicateNotification : Notification { #region Non-implemented members (by design) diff --git a/Rx.NET/Source/src/Microsoft.Reactive.Testing/Recorded.cs b/Rx.NET/Source/src/Microsoft.Reactive.Testing/Recorded.cs index 85d9d0410d..fc54a15fbc 100644 --- a/Rx.NET/Source/src/Microsoft.Reactive.Testing/Recorded.cs +++ b/Rx.NET/Source/src/Microsoft.Reactive.Testing/Recorded.cs @@ -83,7 +83,10 @@ public bool Equals(Recorded other) public override bool Equals(object obj) { if (obj is Recorded) + { return Equals((Recorded)obj); + } + return false; } diff --git a/Rx.NET/Source/src/Microsoft.Reactive.Testing/Subscription.cs b/Rx.NET/Source/src/Microsoft.Reactive.Testing/Subscription.cs index cbf71d4b55..a4bfe0a2ad 100644 --- a/Rx.NET/Source/src/Microsoft.Reactive.Testing/Subscription.cs +++ b/Rx.NET/Source/src/Microsoft.Reactive.Testing/Subscription.cs @@ -22,8 +22,8 @@ public struct Subscription : IEquatable /// public const long Infinite = long.MaxValue; - private long _subscribe; - private long _unsubscribe; + private readonly long _subscribe; + private readonly long _unsubscribe; /// /// Gets the subscription virtual time. @@ -72,7 +72,7 @@ public bool Equals(Subscription other) /// The first Subscription value to compare. /// The second Subscription value to compare. /// true if the first Subscription value has the same Subscribe and Unsubscribe as the second Subscription value; otherwise, false. - public static bool operator==(Subscription left, Subscription right) + public static bool operator ==(Subscription left, Subscription right) { return left.Equals(right); } @@ -96,7 +96,10 @@ public bool Equals(Subscription other) public override bool Equals(object obj) { if (obj is Subscription) + { return Equals((Subscription)obj); + } + return false; } @@ -116,9 +119,13 @@ public override int GetHashCode() public override string ToString() { if (Unsubscribe == Infinite) + { return string.Format(CultureInfo.CurrentCulture, "({0}, Infinite)", Subscribe); + } else + { return string.Format(CultureInfo.CurrentCulture, "({0}, {1})", Subscribe, Unsubscribe); + } } } } diff --git a/Rx.NET/Source/src/Microsoft.Reactive.Testing/TestScheduler.cs b/Rx.NET/Source/src/Microsoft.Reactive.Testing/TestScheduler.cs index dfae974d07..f004458766 100644 --- a/Rx.NET/Source/src/Microsoft.Reactive.Testing/TestScheduler.cs +++ b/Rx.NET/Source/src/Microsoft.Reactive.Testing/TestScheduler.cs @@ -26,7 +26,9 @@ public class TestScheduler : VirtualTimeScheduler public override IDisposable ScheduleAbsolute(TState state, long dueTime, Func action) { if (dueTime <= Clock) + { dueTime = Clock + 1; + } return base.ScheduleAbsolute(state, dueTime, action); } @@ -75,7 +77,9 @@ protected override long ToRelative(TimeSpan timeSpan) public ITestableObserver Start(Func> create, long created, long subscribed, long disposed) { if (create == null) + { throw new ArgumentNullException(nameof(create)); + } var source = default(IObservable); var subscription = default(IDisposable); @@ -102,7 +106,9 @@ public ITestableObserver Start(Func> create, long created, public ITestableObserver Start(Func> create, long disposed) { if (create == null) + { throw new ArgumentNullException(nameof(create)); + } return Start(create, ReactiveTest.Created, ReactiveTest.Subscribed, disposed); } @@ -117,7 +123,9 @@ public ITestableObserver Start(Func> create, long disposed) public ITestableObserver Start(Func> create) { if (create == null) + { throw new ArgumentNullException(nameof(create)); + } return Start(create, ReactiveTest.Created, ReactiveTest.Subscribed, ReactiveTest.Disposed); } @@ -132,7 +140,9 @@ public ITestableObserver Start(Func> create) public ITestableObservable CreateHotObservable(params Recorded>[] messages) { if (messages == null) + { throw new ArgumentNullException(nameof(messages)); + } return new HotObservable(this, messages); } @@ -147,7 +157,9 @@ public ITestableObservable CreateHotObservable(params Recorded CreateColdObservable(params Recorded>[] messages) { if (messages == null) + { throw new ArgumentNullException(nameof(messages)); + } return new ColdObservable(this, messages); } diff --git a/Rx.NET/Source/src/System.Reactive.Observable.Aliases/Observable.Aliases.cs b/Rx.NET/Source/src/System.Reactive.Observable.Aliases/Observable.Aliases.cs index 5d15a300e6..5ce3d94a94 100644 --- a/Rx.NET/Source/src/System.Reactive.Observable.Aliases/Observable.Aliases.cs +++ b/Rx.NET/Source/src/System.Reactive.Observable.Aliases/Observable.Aliases.cs @@ -5,9 +5,7 @@ #pragma warning disable 1591 using System.Collections.Generic; -using System.Reactive.Concurrency; using System.Reactive.Linq; -using System.Reactive; using System.Reactive.Threading.Tasks; // needed for doc comments using System.Threading; using System.Threading.Tasks; diff --git a/Rx.NET/Source/src/System.Reactive.Observable.Aliases/Qbservable.Aliases.Generated.cs b/Rx.NET/Source/src/System.Reactive.Observable.Aliases/Qbservable.Aliases.Generated.cs index 08e32c4e73..5e9bf5d29b 100644 --- a/Rx.NET/Source/src/System.Reactive.Observable.Aliases/Qbservable.Aliases.Generated.cs +++ b/Rx.NET/Source/src/System.Reactive.Observable.Aliases/Qbservable.Aliases.Generated.cs @@ -5,18 +5,11 @@ #pragma warning disable 1591 -using System; -using System.Reactive.Concurrency; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.Reactive.Joins; -using System.Linq; using System.Linq.Expressions; -using System.Reflection; using System.Threading; using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Subjects; namespace System.Reactive.Linq { diff --git a/Rx.NET/Source/src/System.Reactive/AnonymousObservable.cs b/Rx.NET/Source/src/System.Reactive/AnonymousObservable.cs index 93ed5e6c6a..c4a5a93815 100644 --- a/Rx.NET/Source/src/System.Reactive/AnonymousObservable.cs +++ b/Rx.NET/Source/src/System.Reactive/AnonymousObservable.cs @@ -21,10 +21,7 @@ public sealed class AnonymousObservable : ObservableBase /// is null. public AnonymousObservable(Func, IDisposable> subscribe) { - if (subscribe == null) - throw new ArgumentNullException(nameof(subscribe)); - - _subscribe = subscribe; + _subscribe = subscribe ?? throw new ArgumentNullException(nameof(subscribe)); } /// diff --git a/Rx.NET/Source/src/System.Reactive/AnonymousObserver.cs b/Rx.NET/Source/src/System.Reactive/AnonymousObserver.cs index 9e947738d0..7588639e9b 100644 --- a/Rx.NET/Source/src/System.Reactive/AnonymousObserver.cs +++ b/Rx.NET/Source/src/System.Reactive/AnonymousObserver.cs @@ -23,16 +23,9 @@ public sealed class AnonymousObserver : ObserverBase /// or or is null. public AnonymousObserver(Action onNext, Action onError, Action onCompleted) { - if (onNext == null) - throw new ArgumentNullException(nameof(onNext)); - if (onError == null) - throw new ArgumentNullException(nameof(onError)); - if (onCompleted == null) - throw new ArgumentNullException(nameof(onCompleted)); - - _onNext = onNext; - _onError = onError; - _onCompleted = onCompleted; + _onNext = onNext ?? throw new ArgumentNullException(nameof(onNext)); + _onError = onError ?? throw new ArgumentNullException(nameof(onError)); + _onCompleted = onCompleted ?? throw new ArgumentNullException(nameof(onCompleted)); } /// diff --git a/Rx.NET/Source/src/System.Reactive/AnonymousSafeObserver.cs b/Rx.NET/Source/src/System.Reactive/AnonymousSafeObserver.cs index 8ddd722b18..10abcc0e5a 100644 --- a/Rx.NET/Source/src/System.Reactive/AnonymousSafeObserver.cs +++ b/Rx.NET/Source/src/System.Reactive/AnonymousSafeObserver.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Reactive.Disposables; using System.Threading; namespace System.Reactive @@ -47,7 +46,9 @@ public override void OnNext(T value) finally { if (!__noError) + { Dispose(); + } } } } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/AsyncLock.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/AsyncLock.cs index 55f4f09b0b..c0866bfd64 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/AsyncLock.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/AsyncLock.cs @@ -13,7 +13,7 @@ public sealed class AsyncLock : IDisposable { private bool isAcquired = false; private bool hasFaulted = false; - private object guard = new object(); + private readonly object guard = new object(); private Queue<(Action action, Delegate @delegate, object state)> queue; /// @@ -26,7 +26,9 @@ public sealed class AsyncLock : IDisposable public void Wait(Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } Wait(action, closureAction => closureAction()); } @@ -44,13 +46,15 @@ public void Wait(Action action) internal void Wait(TState state, Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } Wait(state, action, (actionObject, stateObject) => ((Action)actionObject)((TState)stateObject)); } private void Wait(object state, Delegate @delegate, Action action) - { + { // allow one thread to update the state lock (guard) { diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/CatchScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/CatchScheduler.cs index 1f0315067e..cc77789c05 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/CatchScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/CatchScheduler.cs @@ -77,7 +77,7 @@ public CatchSchedulerLongRunning(ISchedulerLongRunning scheduler, Func(TState state, Action action) { return _scheduler.ScheduleLongRunning( - (scheduler: this, action, state), + (scheduler: this, action, state), (tuple, cancel) => { try @@ -124,7 +124,9 @@ public void Dispose() // take effect. // if (_failed) + { return default; + } try { @@ -135,7 +137,9 @@ public void Dispose() _failed = true; if (!_catchScheduler._handler(exception)) + { throw; + } Disposable.TryDispose(ref _cancel); return default; diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/ConcurrencyAbstractionLayerImpl.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/ConcurrencyAbstractionLayerImpl.cs index c1054756cd..af37d2b79e 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/ConcurrencyAbstractionLayerImpl.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/ConcurrencyAbstractionLayerImpl.cs @@ -33,7 +33,9 @@ public WorkItem(Action action, object state) public IDisposable StartPeriodicTimer(Action action, TimeSpan period) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } // // The contract for periodic scheduling in Rx is that specifying TimeSpan.Zero as the period causes the scheduler to @@ -74,7 +76,8 @@ public void StartThread(Action action, object state) var item = (WorkItem)itemObject; item.Action(item.State); - }) { IsBackground = true }.Start(new WorkItem(action, state)); + }) + { IsBackground = true }.Start(new WorkItem(action, state)); } private static TimeSpan Normalize(TimeSpan dueTime) => dueTime < TimeSpan.Zero ? TimeSpan.Zero : dueTime; @@ -168,7 +171,7 @@ public Timer(Action action, object state, TimeSpan dueTime) private static void Tick(object state) { - var timer = (Timer) state; + var timer = (Timer)state; try { @@ -238,7 +241,7 @@ private sealed class FastPeriodicTimer : IDisposable public FastPeriodicTimer(Action action) { _action = action; - + new Thread(_ => Loop(_)) { Name = "Rx-FastPeriodicTimer", @@ -246,7 +249,7 @@ public FastPeriodicTimer(Action action) } .Start(this); } - + private static void Loop(object threadParam) { var timer = (FastPeriodicTimer)threadParam; diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/CurrentThreadScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/CurrentThreadScheduler.cs index 42b65280f3..452bf3afa5 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/CurrentThreadScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/CurrentThreadScheduler.cs @@ -3,8 +3,6 @@ // See the LICENSE file in the project root for more information. using System.ComponentModel; -using System.Threading; -using System.Reactive.Disposables; namespace System.Reactive.Concurrency { @@ -46,7 +44,9 @@ private static TimeSpan Time get { if (s_clock == null) + { s_clock = ConcurrencyAbstractionLayer.Current.StartStopwatch(); + } return s_clock.Elapsed; } @@ -78,7 +78,9 @@ private static TimeSpan Time public override IDisposable Schedule(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var queue = default(SchedulerQueue); diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/DefaultScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/DefaultScheduler.cs index 881cf4c358..db575500df 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/DefaultScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/DefaultScheduler.cs @@ -35,7 +35,9 @@ private DefaultScheduler() public override IDisposable Schedule(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var workItem = new UserWorkItem(this, state, action); @@ -58,11 +60,15 @@ public override IDisposable Schedule(TState state, Func(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var dt = Scheduler.Normalize(dueTime); if (dt.Ticks == 0) + { return Schedule(state, action); + } var workItem = new UserWorkItem(this, state, action); @@ -87,9 +93,14 @@ public override IDisposable Schedule(TState state, TimeSpan dueTime, Fun public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func action) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return new PeriodicallyScheduledWorkItem(state, period, action); } @@ -105,7 +116,7 @@ public PeriodicallyScheduledWorkItem(TState state, TimeSpan period, Func(TState state, Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return new LongScheduledWorkItem(state, action); } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/EventLoopScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/EventLoopScheduler.cs index fb4ecffb4e..85826edc64 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/EventLoopScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/EventLoopScheduler.cs @@ -94,13 +94,11 @@ public EventLoopScheduler() /// is null. public EventLoopScheduler(Func threadFactory) { - if (threadFactory == null) - throw new ArgumentNullException(nameof(threadFactory)); #else internal EventLoopScheduler(Func threadFactory) { #endif - _threadFactory = threadFactory; + _threadFactory = threadFactory ?? throw new ArgumentNullException(nameof(threadFactory)); _stopwatch = ConcurrencyAbstractionLayer.Current.StartStopwatch(); _gate = new object(); @@ -144,7 +142,9 @@ internal bool ExitIfEmpty public override IDisposable Schedule(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var due = _stopwatch.Elapsed + dueTime; var si = new ScheduledItem(this, state, action, due); @@ -152,7 +152,9 @@ public override IDisposable Schedule(TState state, TimeSpan dueTime, Fun lock (_gate) { if (_disposed) + { throw new ObjectDisposedException(""); + } if (dueTime <= TimeSpan.Zero) { @@ -185,9 +187,14 @@ public override IDisposable Schedule(TState state, TimeSpan dueTime, Fun public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func action) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return new PeriodicallyScheduledWorkItem(this, state, period, action); } @@ -298,7 +305,10 @@ private void Run() // Bug fix that ensures the number of calls to Release never greatly exceeds the number of calls to Wait. // See work item #37: https://rx.codeplex.com/workitem/37 // - while (_evt.CurrentCount > 0) _evt.Wait(); + while (_evt.CurrentCount > 0) + { + _evt.Wait(); + } // // The event could have been set by a call to Dispose. This takes priority over anything else. We quit the @@ -306,7 +316,7 @@ private void Run() // if (_disposed) { - ((IDisposable)_evt).Dispose(); + _evt.Dispose(); return; } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/HistoricalScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/HistoricalScheduler.cs index f6ab3b9a85..2bd0440c03 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/HistoricalScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/HistoricalScheduler.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System.Collections.Generic; -using System.Reactive.Disposables; namespace System.Reactive.Concurrency { @@ -135,7 +134,9 @@ protected override IScheduledItem GetNext() public override IDisposable ScheduleAbsolute(TState state, DateTimeOffset dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var si = default(ScheduledItem); diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/ImmediateScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/ImmediateScheduler.cs index e1618faab1..27e3dba065 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/ImmediateScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/ImmediateScheduler.cs @@ -34,7 +34,9 @@ private ImmediateScheduler() public override IDisposable Schedule(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return action(new AsyncLockScheduler(), state); } @@ -51,7 +53,9 @@ public override IDisposable Schedule(TState state, Func(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var dt = Scheduler.Normalize(dueTime); if (dt.Ticks > 0) @@ -69,7 +73,9 @@ private sealed class AsyncLockScheduler : LocalScheduler public override IDisposable Schedule(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var m = new SingleAssignmentDisposable(); @@ -94,7 +100,9 @@ public override IDisposable Schedule(TState state, Func(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } if (dueTime.Ticks <= 0) { diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/LocalScheduler.TimerQueue.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/LocalScheduler.TimerQueue.cs index 2b90b64e72..d09229aa87 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/LocalScheduler.TimerQueue.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/LocalScheduler.TimerQueue.cs @@ -302,7 +302,9 @@ private static void UpdateLongTermProcessingTimer() lock (s_gate) */ { if (s_longTerm.Count == 0) + { return; + } // // To avoid setting the timer all over again for the first work item if it hasn't changed, @@ -310,7 +312,9 @@ private static void UpdateLongTermProcessingTimer() // var next = s_longTerm.Peek(); if (next == s_nextLongTermWorkItem) + { return; + } // // We need to arrive early in order to accommodate for potential drift. The relative amount @@ -350,7 +354,9 @@ private static void EvaluateLongTermQueue(object state) var due = Scheduler.Normalize(next.DueTime - next.Scheduler.Now); if (due >= SHORTTERM) + { break; + } var item = s_longTerm.Dequeue(); item.Scheduler.ScheduleShortTermWork(item); diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/LocalScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/LocalScheduler.cs index 6ef957b1bf..7023acff6a 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/LocalScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/LocalScheduler.cs @@ -25,7 +25,9 @@ public abstract partial class LocalScheduler : IScheduler, IStopwatchProvider, I public virtual IDisposable Schedule(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return Schedule(state, TimeSpan.Zero, action); } @@ -52,7 +54,9 @@ public virtual IDisposable Schedule(TState state, Func(TState state, DateTimeOffset dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return Enqueue(state, dueTime, action); } @@ -79,11 +83,17 @@ public virtual IDisposable Schedule(TState state, DateTimeOffset dueTime protected virtual object GetService(Type serviceType) { if (serviceType == typeof(IStopwatchProvider)) + { return this as IStopwatchProvider; + } else if (serviceType == typeof(ISchedulerLongRunning)) + { return this as ISchedulerLongRunning; + } else if (serviceType == typeof(ISchedulerPeriodic)) + { return this as ISchedulerPeriodic; + } return null; } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/NewThreadScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/NewThreadScheduler.cs index bd5fc05de9..19b4402d95 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/NewThreadScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/NewThreadScheduler.cs @@ -12,7 +12,7 @@ namespace System.Reactive.Concurrency /// public sealed class NewThreadScheduler : LocalScheduler, ISchedulerLongRunning, ISchedulerPeriodic { - internal static readonly Lazy s_instance = new Lazy(() => new NewThreadScheduler()); + internal static readonly Lazy Instance = new Lazy(() => new NewThreadScheduler()); private readonly Func _threadFactory; @@ -27,7 +27,7 @@ public NewThreadScheduler() /// /// Gets an instance of this scheduler that uses the default Thread constructor. /// - public static NewThreadScheduler Default => s_instance.Value; + public static NewThreadScheduler Default => Instance.Value; #if !NO_THREAD /// @@ -37,13 +37,11 @@ public NewThreadScheduler() /// is null. public NewThreadScheduler(Func threadFactory) { - if (threadFactory == null) - throw new ArgumentNullException(nameof(threadFactory)); #else private NewThreadScheduler(Func threadFactory) { #endif - _threadFactory = threadFactory; + _threadFactory = threadFactory ?? throw new ArgumentNullException(nameof(threadFactory)); } /// @@ -58,10 +56,14 @@ private NewThreadScheduler(Func threadFactory) public override IDisposable Schedule(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } - var scheduler = new EventLoopScheduler(_threadFactory); - scheduler.ExitIfEmpty = true; + var scheduler = new EventLoopScheduler(_threadFactory) + { + ExitIfEmpty = true + }; return scheduler.Schedule(state, dueTime, action); } @@ -76,7 +78,9 @@ public override IDisposable Schedule(TState state, TimeSpan dueTime, Fun public IDisposable ScheduleLongRunning(TState state, Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var d = new BooleanDisposable(); @@ -108,9 +112,14 @@ public IDisposable ScheduleLongRunning(TState state, Action(TState state, TimeSpan period, Func action) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var periodic = new Periodic(state, period, action); @@ -152,7 +161,9 @@ public void Run() lock (_cancel) { if (Monitor.Wait(_cancel, timeout)) + { return; + } } _state = _action(_state); @@ -185,4 +196,4 @@ public override IStopwatch StartStopwatch() return new StopwatchImpl(); } } -} \ No newline at end of file +} diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/ScheduledItem.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/ScheduledItem.cs index d1764c342e..0c5b730574 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/ScheduledItem.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/ScheduledItem.cs @@ -25,11 +25,8 @@ public abstract class ScheduledItem : IScheduledItem, ICom /// is null. protected ScheduledItem(TAbsolute dueTime, IComparer comparer) { - if (comparer == null) - throw new ArgumentNullException(nameof(comparer)); - DueTime = dueTime; - _comparer = comparer; + _comparer = comparer ?? throw new ArgumentNullException(nameof(comparer)); } /// @@ -65,7 +62,7 @@ public void Invoke() public int CompareTo(ScheduledItem other) { // MSDN: By definition, any object compares greater than null, and two null references compare equal to each other. - if (ReferenceEquals(other, null)) + if (other is null) { return 1; } @@ -186,14 +183,9 @@ public sealed class ScheduledItem : ScheduledItem public ScheduledItem(IScheduler scheduler, TValue state, Func action, TAbsolute dueTime, IComparer comparer) : base(dueTime, comparer) { - if (scheduler == null) - throw new ArgumentNullException(nameof(scheduler)); - if (action == null) - throw new ArgumentNullException(nameof(action)); - - _scheduler = scheduler; + _scheduler = scheduler ?? throw new ArgumentNullException(nameof(scheduler)); _state = state; - _action = action; + _action = action ?? throw new ArgumentNullException(nameof(action)); } /// diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Async.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Async.cs index 475ef2af26..3a6fa7ea70 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Async.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Async.cs @@ -20,7 +20,9 @@ public static partial class Scheduler public static SchedulerOperation Yield(this IScheduler scheduler) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new SchedulerOperation(a => scheduler.Schedule(a), scheduler.GetCancellationToken()); } @@ -36,7 +38,9 @@ public static SchedulerOperation Yield(this IScheduler scheduler) public static SchedulerOperation Yield(this IScheduler scheduler, CancellationToken cancellationToken) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new SchedulerOperation(a => scheduler.Schedule(a), cancellationToken); } @@ -52,7 +56,9 @@ public static SchedulerOperation Yield(this IScheduler scheduler, CancellationTo public static SchedulerOperation Sleep(this IScheduler scheduler, TimeSpan dueTime) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new SchedulerOperation(a => scheduler.Schedule(dueTime, a), scheduler.GetCancellationToken()); } @@ -69,7 +75,9 @@ public static SchedulerOperation Sleep(this IScheduler scheduler, TimeSpan dueTi public static SchedulerOperation Sleep(this IScheduler scheduler, TimeSpan dueTime, CancellationToken cancellationToken) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new SchedulerOperation(a => scheduler.Schedule(dueTime, a), cancellationToken); } @@ -85,7 +93,9 @@ public static SchedulerOperation Sleep(this IScheduler scheduler, TimeSpan dueTi public static SchedulerOperation Sleep(this IScheduler scheduler, DateTimeOffset dueTime) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new SchedulerOperation(a => scheduler.Schedule(dueTime, a), scheduler.GetCancellationToken()); } @@ -102,7 +112,9 @@ public static SchedulerOperation Sleep(this IScheduler scheduler, DateTimeOffset public static SchedulerOperation Sleep(this IScheduler scheduler, DateTimeOffset dueTime, CancellationToken cancellationToken) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new SchedulerOperation(a => scheduler.Schedule(dueTime, a), cancellationToken); } @@ -119,9 +131,14 @@ public static SchedulerOperation Sleep(this IScheduler scheduler, DateTimeOffset public static IDisposable ScheduleAsync(this IScheduler scheduler, TState state, Func action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, state, action); } @@ -138,9 +155,14 @@ public static IDisposable ScheduleAsync(this IScheduler scheduler, TStat public static IDisposable ScheduleAsync(this IScheduler scheduler, TState state, Func> action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, state, action); } @@ -155,9 +177,14 @@ public static IDisposable ScheduleAsync(this IScheduler scheduler, TStat public static IDisposable ScheduleAsync(this IScheduler scheduler, Func action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, action, (self, closureAction, ct) => closureAction(self, ct)); } @@ -172,9 +199,14 @@ public static IDisposable ScheduleAsync(this IScheduler scheduler, Func> action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, action, (self, closureAction, ct) => closureAction(self, ct)); } @@ -192,9 +224,14 @@ public static IDisposable ScheduleAsync(this IScheduler scheduler, Func(this IScheduler scheduler, TState state, TimeSpan dueTime, Func action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, state, dueTime, action); } @@ -212,9 +249,14 @@ public static IDisposable ScheduleAsync(this IScheduler scheduler, TStat public static IDisposable ScheduleAsync(this IScheduler scheduler, TState state, TimeSpan dueTime, Func> action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, state, dueTime, action); } @@ -230,9 +272,14 @@ public static IDisposable ScheduleAsync(this IScheduler scheduler, TStat public static IDisposable ScheduleAsync(this IScheduler scheduler, TimeSpan dueTime, Func action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, action, dueTime, (self, closureAction, ct) => closureAction(self, ct)); } @@ -248,9 +295,14 @@ public static IDisposable ScheduleAsync(this IScheduler scheduler, TimeSpan dueT public static IDisposable ScheduleAsync(this IScheduler scheduler, TimeSpan dueTime, Func> action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, action, dueTime, (self, closureAction, ct) => closureAction(self, ct)); } @@ -268,9 +320,14 @@ public static IDisposable ScheduleAsync(this IScheduler scheduler, TimeSpan dueT public static IDisposable ScheduleAsync(this IScheduler scheduler, TState state, DateTimeOffset dueTime, Func action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, state, dueTime, action); } @@ -288,9 +345,14 @@ public static IDisposable ScheduleAsync(this IScheduler scheduler, TStat public static IDisposable ScheduleAsync(this IScheduler scheduler, TState state, DateTimeOffset dueTime, Func> action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, state, dueTime, action); } @@ -306,9 +368,14 @@ public static IDisposable ScheduleAsync(this IScheduler scheduler, TStat public static IDisposable ScheduleAsync(this IScheduler scheduler, DateTimeOffset dueTime, Func action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, action, dueTime, (self, closureAction, ct) => closureAction(self, ct)); } @@ -324,9 +391,14 @@ public static IDisposable ScheduleAsync(this IScheduler scheduler, DateTimeOffse public static IDisposable ScheduleAsync(this IScheduler scheduler, DateTimeOffset dueTime, Func> action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAsync_(scheduler, action, dueTime, (self, closureAction, ct) => closureAction(self, ct)); } @@ -369,7 +441,9 @@ private static IDisposable InvokeAsync(IScheduler self, TState s, Func { if (t.IsCanceled) + { return; + } if (t.Exception != null) { @@ -389,8 +463,7 @@ private static IDisposable InvokeAsync(IScheduler self, TState s, Func action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return scheduler.Schedule(action, (_action, self) => _action(() => self(_action))); } @@ -38,9 +42,14 @@ public static IDisposable Schedule(this IScheduler scheduler, Action act public static IDisposable Schedule(this IScheduler scheduler, TState state, Action> action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return scheduler.Schedule((state, action), (s, p) => InvokeRec1(s, p)); } @@ -63,9 +72,14 @@ private static IDisposable InvokeRec1(IScheduler scheduler, (TState stat public static IDisposable Schedule(this IScheduler scheduler, TimeSpan dueTime, Action> action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return scheduler.Schedule(action, dueTime, (_action, self) => _action(dt => self(_action, dt))); } @@ -83,9 +97,14 @@ public static IDisposable Schedule(this IScheduler scheduler, TimeSpan dueTime, public static IDisposable Schedule(this IScheduler scheduler, TState state, TimeSpan dueTime, Action> action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return scheduler.Schedule((state, action), dueTime, (s, p) => InvokeRec2(s, p)); } @@ -108,9 +127,14 @@ private static IDisposable InvokeRec2(IScheduler scheduler, (TState stat public static IDisposable Schedule(this IScheduler scheduler, DateTimeOffset dueTime, Action> action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return scheduler.Schedule(action, dueTime, (_action, self) => _action(dt => self(_action, dt))); } @@ -128,9 +152,14 @@ public static IDisposable Schedule(this IScheduler scheduler, DateTimeOffset due public static IDisposable Schedule(this IScheduler scheduler, TState state, DateTimeOffset dueTime, Action> action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return scheduler.Schedule((state, action), dueTime, (s, p) => InvokeRec3(s, p)); } @@ -142,7 +171,7 @@ private static IDisposable InvokeRec3(IScheduler scheduler, (TState stat return recursiveInvoker; } - abstract class InvokeRecBaseState : IDisposable + private abstract class InvokeRecBaseState : IDisposable { protected readonly IScheduler scheduler; @@ -161,11 +190,10 @@ public void Dispose() } - sealed class InvokeRec1State : InvokeRecBaseState + private sealed class InvokeRec1State : InvokeRecBaseState { - readonly Action> action; - - readonly Action recurseCallback; + private readonly Action> action; + private readonly Action recurseCallback; public InvokeRec1State(IScheduler scheduler, Action> action) : base(scheduler) { @@ -177,7 +205,8 @@ internal void InvokeNext(TState state) { var sad = new SingleAssignmentDisposable(); group.Add(sad); - sad.Disposable = scheduler.Schedule((state, sad, @this: this), (_, nextState) => { + sad.Disposable = scheduler.Schedule((state, sad, @this: this), (_, nextState) => + { nextState.@this.group.Remove(nextState.sad); nextState.@this.InvokeFirst(nextState.state); return Disposable.Empty; @@ -190,11 +219,10 @@ internal void InvokeFirst(TState state) } } - sealed class InvokeRec2State : InvokeRecBaseState + private sealed class InvokeRec2State : InvokeRecBaseState { - readonly Action> action; - - readonly Action recurseCallback; + private readonly Action> action; + private readonly Action recurseCallback; public InvokeRec2State(IScheduler scheduler, Action> action) : base(scheduler) { @@ -206,7 +234,8 @@ internal void InvokeNext(TState state, TimeSpan time) { var sad = new SingleAssignmentDisposable(); group.Add(sad); - sad.Disposable = scheduler.Schedule((state, sad, @this: this), time, (_, nextState) => { + sad.Disposable = scheduler.Schedule((state, sad, @this: this), time, (_, nextState) => + { nextState.@this.group.Remove(nextState.sad); nextState.@this.InvokeFirst(nextState.state); return Disposable.Empty; @@ -219,11 +248,10 @@ internal void InvokeFirst(TState state) } } - sealed class InvokeRec3State : InvokeRecBaseState + private sealed class InvokeRec3State : InvokeRecBaseState { - readonly Action> action; - - readonly Action recurseCallback; + private readonly Action> action; + private readonly Action recurseCallback; public InvokeRec3State(IScheduler scheduler, Action> action) : base(scheduler) { @@ -235,7 +263,8 @@ internal void InvokeNext(TState state, DateTimeOffset dtOffset) { var sad = new SingleAssignmentDisposable(); group.Add(sad); - sad.Disposable = scheduler.Schedule((state, sad, @this: this), dtOffset, (_, nextState) => { + sad.Disposable = scheduler.Schedule((state, sad, @this: this), dtOffset, (_, nextState) => + { nextState.@this.group.Remove(nextState.sad); nextState.@this.InvokeFirst(nextState.state); return Disposable.Empty; diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Services.Emulation.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Services.Emulation.cs index e4d98ee047..012dfbcd32 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Services.Emulation.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Services.Emulation.cs @@ -28,11 +28,19 @@ public static partial class Scheduler public static IDisposable SchedulePeriodic(this IScheduler scheduler, TState state, TimeSpan period, Func action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return SchedulePeriodic_(scheduler, state, period, action); } @@ -54,11 +62,19 @@ public static IDisposable SchedulePeriodic(this IScheduler scheduler, TS public static IDisposable SchedulePeriodic(this IScheduler scheduler, TState state, TimeSpan period, Action action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return SchedulePeriodic_(scheduler, (state, action), period, t => { t.action(t.state); return t; }); } @@ -78,11 +94,19 @@ public static IDisposable SchedulePeriodic(this IScheduler scheduler, TS public static IDisposable SchedulePeriodic(this IScheduler scheduler, TimeSpan period, Action action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return SchedulePeriodic_(scheduler, action, period, a => { a(); return a; }); } @@ -99,7 +123,9 @@ public static IDisposable SchedulePeriodic(this IScheduler scheduler, TimeSpan p public static IStopwatch StartStopwatch(this IScheduler scheduler) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } // // All schedulers deriving from LocalScheduler will automatically pick up this @@ -576,7 +602,9 @@ private void Tick(int command, Action recurse) // safely bail out, delegating work to the catch-up tail calls. // if (Interlocked.Increment(ref _pendingTickCount) == 1) + { goto case DISPATCH_START; + } break; diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Simple.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Simple.cs index bf6d5788eb..de0246628c 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Simple.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Simple.cs @@ -18,9 +18,14 @@ public static partial class Scheduler public static IDisposable Schedule(this IScheduler scheduler, Action action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } // Surprisingly, passing the method group of Invoke will create a fresh // delegate each time although it's static, while an anonymous @@ -44,12 +49,17 @@ public static IDisposable Schedule(this IScheduler scheduler, Action action) internal static IDisposable ScheduleAction(this IScheduler scheduler, TState state, Action action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return scheduler.Schedule( - (action, state), + (action, state), (_, tuple) => { tuple.action(tuple.state); @@ -68,9 +78,14 @@ internal static IDisposable ScheduleAction(this IScheduler scheduler, TS public static IDisposable Schedule(this IScheduler scheduler, TimeSpan dueTime, Action action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } // See note above. return scheduler.Schedule(action, dueTime, (s, a) => Invoke(s, a)); @@ -88,9 +103,14 @@ public static IDisposable Schedule(this IScheduler scheduler, TimeSpan dueTime, internal static IDisposable ScheduleAction(this IScheduler scheduler, TState state, TimeSpan dueTime, Action action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } // See note above. return scheduler.Schedule((state, action), dueTime, (s, tuple) => Invoke(s, tuple)); @@ -107,9 +127,14 @@ internal static IDisposable ScheduleAction(this IScheduler scheduler, TS public static IDisposable Schedule(this IScheduler scheduler, DateTimeOffset dueTime, Action action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } // See note above. return scheduler.Schedule(action, dueTime, (s, a) => Invoke(s, a)); @@ -127,9 +152,14 @@ public static IDisposable Schedule(this IScheduler scheduler, DateTimeOffset due internal static IDisposable ScheduleAction(this IScheduler scheduler, TState state, DateTimeOffset dueTime, Action action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } // See note above. return scheduler.Schedule((state, action), dueTime, (s, tuple) => Invoke(s, tuple)); @@ -145,9 +175,14 @@ internal static IDisposable ScheduleAction(this IScheduler scheduler, TS public static IDisposable ScheduleLongRunning(this ISchedulerLongRunning scheduler, Action action) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return scheduler.ScheduleLongRunning(action, (a, c) => a(c)); } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Wrappers.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Wrappers.cs index 86e08eb5b0..a692d9fcea 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Wrappers.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Wrappers.cs @@ -15,7 +15,9 @@ public static partial class Scheduler public static IScheduler DisableOptimizations(this IScheduler scheduler) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new DisableOptimizationsScheduler(scheduler); } @@ -30,9 +32,14 @@ public static IScheduler DisableOptimizations(this IScheduler scheduler) public static IScheduler DisableOptimizations(this IScheduler scheduler, params Type[] optimizationInterfaces) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (optimizationInterfaces == null) + { throw new ArgumentNullException(nameof(optimizationInterfaces)); + } return new DisableOptimizationsScheduler(scheduler, optimizationInterfaces); } @@ -49,9 +56,14 @@ public static IScheduler Catch(this IScheduler scheduler, Func(scheduler, handler); } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.cs index fd590c208d..4077118f9b 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.cs @@ -2,8 +2,8 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Reactive.PlatformServices; using System.Globalization; +using System.Reactive.PlatformServices; namespace System.Reactive.Concurrency { @@ -90,7 +90,10 @@ private static IScheduler Initialize(string name) var res = PlatformEnlightenmentProvider.Current.GetService(name); #pragma warning restore CS0618 // Type or member is obsolete if (res == null) + { throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, Strings_Core.CANT_OBTAIN_SCHEDULER, name)); + } + return res; } } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerOperation.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerOperation.cs index e7462b4186..0c812717ce 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerOperation.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerOperation.cs @@ -89,10 +89,14 @@ internal SchedulerOperationAwaiter(Func schedule, Cancellat public void OnCompleted(Action continuation) { if (continuation == null) + { throw new ArgumentNullException(nameof(continuation)); + } if (_continuation != null) + { throw new InvalidOperationException(Strings_Core.SCHEDULER_OPERATION_ALREADY_AWAITED); + } if (_postBackToOriginalContext) { diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerQueue.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerQueue.cs index 57a7f04b2d..bdad239415 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerQueue.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerQueue.cs @@ -31,7 +31,9 @@ public SchedulerQueue() public SchedulerQueue(int capacity) { if (capacity < 0) + { throw new ArgumentOutOfRangeException(nameof(capacity)); + } _queue = new PriorityQueue>(capacity); } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerWrapper.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerWrapper.cs index ad1e8043e3..4aac7c60bd 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerWrapper.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/SchedulerWrapper.cs @@ -28,7 +28,9 @@ public SchedulerWrapper(IScheduler scheduler, ConditionalWeakTable(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return _scheduler.Schedule(state, Wrap(action)); } @@ -36,7 +38,9 @@ public IDisposable Schedule(TState state, Func(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return _scheduler.Schedule(state, dueTime, Wrap(action)); } @@ -44,7 +48,9 @@ public IDisposable Schedule(TState state, TimeSpan dueTime, Func(TState state, DateTimeOffset dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return _scheduler.Schedule(state, dueTime, Wrap(action)); } @@ -63,12 +69,15 @@ protected IScheduler GetRecursiveWrapper(IScheduler scheduler) public object GetService(Type serviceType) { - var serviceProvider = _scheduler as IServiceProvider; - if (serviceProvider == null) + if (!(_scheduler is IServiceProvider serviceProvider)) + { return null; + } if (TryGetService(serviceProvider, serviceType, out var result)) + { return result; + } return serviceProvider.GetService(serviceType); } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/Synchronization.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/Synchronization.cs index 0187744d39..86eec1bad0 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/Synchronization.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/Synchronization.cs @@ -31,14 +31,19 @@ public static class Synchronization public static IObservable SubscribeOn(IObservable source, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new SubscribeOnObservable(source, scheduler); } - sealed class SubscribeOnObservable : ObservableBase + private sealed class SubscribeOnObservable : ObservableBase { private sealed class Subscription : IDisposable { @@ -47,7 +52,7 @@ private sealed class Subscription : IDisposable public Subscription(IObservable source, IScheduler scheduler, IObserver observer) { Disposable.TrySetSingle( - ref _cancel, + ref _cancel, scheduler.Schedule( (@this: this, source, observer), (closureScheduler, state) => @@ -63,8 +68,8 @@ public void Dispose() } } - readonly IObservable source; - readonly IScheduler scheduler; + private readonly IObservable source; + private readonly IScheduler scheduler; public SubscribeOnObservable(IObservable source, IScheduler scheduler) { @@ -93,21 +98,25 @@ protected override IDisposable SubscribeCore(IObserver observer) public static IObservable SubscribeOn(IObservable source, SynchronizationContext context) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (context == null) + { throw new ArgumentNullException(nameof(context)); + } return new SubscribeOnCtxObservable(source, context); } - sealed class SubscribeOnCtxObservable : ObservableBase + private sealed class SubscribeOnCtxObservable : ObservableBase { private sealed class Subscription : IDisposable { private readonly IObservable _source; private readonly IObserver _observer; private readonly SynchronizationContext _context; - private IDisposable _cancel; public Subscription(IObservable source, SynchronizationContext context, IObserver observer) @@ -133,8 +142,8 @@ public void Dispose() } } - readonly IObservable _source; - readonly SynchronizationContext _context; + private readonly IObservable _source; + private readonly SynchronizationContext _context; public SubscribeOnCtxObservable(IObservable source, SynchronizationContext context) { @@ -163,9 +172,14 @@ protected override IDisposable SubscribeCore(IObserver observer) public static IObservable ObserveOn(IObservable source, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new ObserveOn.Scheduler(source, scheduler); } @@ -181,9 +195,14 @@ public static IObservable ObserveOn(IObservable sourc public static IObservable ObserveOn(IObservable source, SynchronizationContext context) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (context == null) + { throw new ArgumentNullException(nameof(context)); + } return new ObserveOn.Context(source, context); } @@ -202,7 +221,9 @@ public static IObservable ObserveOn(IObservable sourc public static IObservable Synchronize(IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return new Synchronize(source); } @@ -218,9 +239,14 @@ public static IObservable Synchronize(IObservable sou public static IObservable Synchronize(IObservable source, object gate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (gate == null) + { throw new ArgumentNullException(nameof(gate)); + } return new Synchronize(source, gate); } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/SynchronizationContextScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/SynchronizationContextScheduler.cs index 0ec534f1a9..bce28477be 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/SynchronizationContextScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/SynchronizationContextScheduler.cs @@ -22,10 +22,7 @@ public class SynchronizationContextScheduler : LocalScheduler /// is null. public SynchronizationContextScheduler(SynchronizationContext context) { - if (context == null) - throw new ArgumentNullException(nameof(context)); - - _context = context; + _context = context ?? throw new ArgumentNullException(nameof(context)); _alwaysPost = true; } @@ -37,10 +34,7 @@ public SynchronizationContextScheduler(SynchronizationContext context) /// is null. public SynchronizationContextScheduler(SynchronizationContext context, bool alwaysPost) { - if (context == null) - throw new ArgumentNullException(nameof(context)); - - _context = context; + _context = context ?? throw new ArgumentNullException(nameof(context)); _alwaysPost = alwaysPost; } @@ -55,7 +49,9 @@ public SynchronizationContextScheduler(SynchronizationContext context, bool alwa public override IDisposable Schedule(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } if (!_alwaysPost && _context == SynchronizationContext.Current) { @@ -87,7 +83,9 @@ public override IDisposable Schedule(TState state, Func(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var dt = Scheduler.Normalize(dueTime); if (dt.Ticks == 0) diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/TaskPoolScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/TaskPoolScheduler.cs index 241a0e020c..24bc6a0aaf 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/TaskPoolScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/TaskPoolScheduler.cs @@ -126,7 +126,7 @@ public LongScheduledWorkItem(TaskPoolScheduler scheduler, TState state, Action { - var @this = (LongScheduledWorkItem) thisObject; + var @this = (LongScheduledWorkItem)thisObject; // // Notice we don't check _cancel.IsDisposed. The contract for ISchedulerLongRunning @@ -157,10 +157,7 @@ public void Dispose() /// is null. public TaskPoolScheduler(TaskFactory taskFactory) { - if (taskFactory == null) - throw new ArgumentNullException(nameof(taskFactory)); - - this.taskFactory = taskFactory; + this.taskFactory = taskFactory ?? throw new ArgumentNullException(nameof(taskFactory)); } /// @@ -179,7 +176,9 @@ public TaskPoolScheduler(TaskFactory taskFactory) public override IDisposable Schedule(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return new ScheduledWorkItem(this, state, action); } @@ -196,7 +195,9 @@ public override IDisposable Schedule(TState state, Func(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var dt = Scheduler.Normalize(dueTime); if (dt.Ticks == 0) @@ -252,9 +253,14 @@ public override IStopwatch StartStopwatch() public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func action) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return new PeriodicallyScheduledWorkItem(state, period, action, taskFactory); } @@ -300,7 +306,7 @@ private void MoveNext() }, this, CancellationToken.None, - TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.OnlyOnRanToCompletion, + TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.OnlyOnRanToCompletion, _taskFactory.Scheduler ); } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/Thread.Stub.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/Thread.Stub.cs index e05a5ba704..b7f2b645b2 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/Thread.Stub.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/Thread.Stub.cs @@ -27,6 +27,6 @@ public void Start() private void Run() => _start(); } - delegate void ThreadStart(); + internal delegate void ThreadStart(); } #endif diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/ThreadPoolScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/ThreadPoolScheduler.cs index fd5843a11d..a54e06af28 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/ThreadPoolScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/ThreadPoolScheduler.cs @@ -38,12 +38,14 @@ private ThreadPoolScheduler() public override IDisposable Schedule(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var workItem = new UserWorkItem(this, state, action); ThreadPool.QueueUserWorkItem( - closureWorkItem => ((UserWorkItem)closureWorkItem).Run(), + closureWorkItem => ((UserWorkItem)closureWorkItem).Run(), workItem); return workItem; @@ -61,7 +63,9 @@ public override IDisposable Schedule(TState state, Func(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var dt = Scheduler.Normalize(dueTime); if (dt.Ticks == 0) @@ -91,7 +95,9 @@ public override IDisposable Schedule(TState state, TimeSpan dueTime, Fun public IDisposable ScheduleLongRunning(TState state, Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_newBackgroundThread.Value.ScheduleLongRunning(state, action); } @@ -123,9 +129,14 @@ public override IStopwatch StartStopwatch() public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func action) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } if (period == TimeSpan.Zero) { diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/VirtualTimeScheduler.Extensions.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/VirtualTimeScheduler.Extensions.cs index c62390f178..9692be5f41 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/VirtualTimeScheduler.Extensions.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/VirtualTimeScheduler.Extensions.cs @@ -25,9 +25,14 @@ public static IDisposable ScheduleRelative(this VirtualTim where TAbsolute : IComparable { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } // As stated in Scheduler.Simple.cs, // an anonymous delegate will allow delegate caching. @@ -50,9 +55,14 @@ public static IDisposable ScheduleAbsolute(this VirtualTim where TAbsolute : IComparable { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return scheduler.ScheduleAbsolute(action, dueTime, (s, a) => Invoke(s, a)); } diff --git a/Rx.NET/Source/src/System.Reactive/Concurrency/VirtualTimeScheduler.cs b/Rx.NET/Source/src/System.Reactive/Concurrency/VirtualTimeScheduler.cs index eb9806e4a6..2f0415e22b 100644 --- a/Rx.NET/Source/src/System.Reactive/Concurrency/VirtualTimeScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Concurrency/VirtualTimeScheduler.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Globalization; -using System.Reactive.Disposables; namespace System.Reactive.Concurrency { @@ -20,7 +19,7 @@ public abstract class VirtualTimeSchedulerBase : ISchedule /// Creates a new virtual time scheduler with the default value of TAbsolute as the initial clock value. /// protected VirtualTimeSchedulerBase() - : this(default(TAbsolute), Comparer.Default) + : this(default, Comparer.Default) { } @@ -32,11 +31,8 @@ protected VirtualTimeSchedulerBase() /// is null. protected VirtualTimeSchedulerBase(TAbsolute initialClock, IComparer comparer) { - if (comparer == null) - throw new ArgumentNullException(nameof(comparer)); - Clock = initialClock; - Comparer = comparer; + Comparer = comparer ?? throw new ArgumentNullException(nameof(comparer)); } /// @@ -92,7 +88,9 @@ protected VirtualTimeSchedulerBase(TAbsolute initialClock, IComparer public IDisposable ScheduleRelative(TState state, TRelative dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var runAt = Add(Clock, dueTime); @@ -110,7 +108,9 @@ public IDisposable ScheduleRelative(TState state, TRelative dueTime, Fun public IDisposable Schedule(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleAbsolute(state, Clock, action); } @@ -127,7 +127,9 @@ public IDisposable Schedule(TState state, Func(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleRelative(state, ToRelative(dueTime), action); } @@ -144,7 +146,9 @@ public IDisposable Schedule(TState state, TimeSpan dueTime, Func(TState state, DateTimeOffset dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return ScheduleRelative(state, ToRelative(dueTime - Now), action); } @@ -195,10 +199,14 @@ public void AdvanceTo(TAbsolute time) { var dueToClock = Comparer.Compare(time, Clock); if (dueToClock < 0) + { throw new ArgumentOutOfRangeException(nameof(time)); + } if (dueToClock == 0) + { return; + } if (!IsEnabled) { @@ -241,10 +249,14 @@ public void AdvanceBy(TRelative time) var dueToClock = Comparer.Compare(dt, Clock); if (dueToClock < 0) + { throw new ArgumentOutOfRangeException(nameof(time)); + } if (dueToClock == 0) + { return; + } if (!IsEnabled) { @@ -267,7 +279,9 @@ public void Sleep(TRelative time) var dueToClock = Comparer.Compare(dt, Clock); if (dueToClock < 0) + { throw new ArgumentOutOfRangeException(nameof(time)); + } Clock = dt; } @@ -305,7 +319,9 @@ public TAbsolute Clock protected virtual object GetService(Type serviceType) { if (serviceType == typeof(IStopwatchProvider)) + { return this as IStopwatchProvider; + } return null; } @@ -399,7 +415,9 @@ protected override IScheduledItem GetNext() public override IDisposable ScheduleAbsolute(TState state, TAbsolute dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var si = default(ScheduledItem); diff --git a/Rx.NET/Source/src/System.Reactive/Disposables/CancellationDisposable.cs b/Rx.NET/Source/src/System.Reactive/Disposables/CancellationDisposable.cs index 0c793bd381..649050ea54 100644 --- a/Rx.NET/Source/src/System.Reactive/Disposables/CancellationDisposable.cs +++ b/Rx.NET/Source/src/System.Reactive/Disposables/CancellationDisposable.cs @@ -20,10 +20,7 @@ public sealed class CancellationDisposable : ICancelable /// is null. public CancellationDisposable(CancellationTokenSource cts) { - if (cts == null) - throw new ArgumentNullException(nameof(cts)); - - _cts = cts; + _cts = cts ?? throw new ArgumentNullException(nameof(cts)); } /// diff --git a/Rx.NET/Source/src/System.Reactive/Disposables/CompositeDisposable.cs b/Rx.NET/Source/src/System.Reactive/Disposables/CompositeDisposable.cs index da9c4379ab..064c460e79 100644 --- a/Rx.NET/Source/src/System.Reactive/Disposables/CompositeDisposable.cs +++ b/Rx.NET/Source/src/System.Reactive/Disposables/CompositeDisposable.cs @@ -4,7 +4,6 @@ using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Threading; namespace System.Reactive.Disposables @@ -16,7 +15,6 @@ namespace System.Reactive.Disposables public sealed class CompositeDisposable : ICollection, ICancelable { private readonly object _gate = new object(); - private bool _disposed; private List _disposables; private int _count; @@ -42,7 +40,9 @@ public CompositeDisposable() public CompositeDisposable(int capacity) { if (capacity < 0) + { throw new ArgumentOutOfRangeException(nameof(capacity)); + } _disposables = new List(capacity); } @@ -72,7 +72,9 @@ public CompositeDisposable(params IDisposable[] disposables) public CompositeDisposable(IEnumerable disposables) { if (disposables == null) + { throw new ArgumentNullException(nameof(disposables)); + } // If the disposables is a collection, get its size // and use it as a capacity hint for the copy. @@ -126,7 +128,9 @@ private void Init(IEnumerable disposables, int capacityHint) public void Add(IDisposable item) { if (item == null) + { throw new ArgumentNullException(nameof(item)); + } lock (_gate) { @@ -153,7 +157,9 @@ public void Add(IDisposable item) public bool Remove(IDisposable item) { if (item == null) + { throw new ArgumentNullException(nameof(item)); + } lock (_gate) { @@ -278,7 +284,9 @@ public void Clear() public bool Contains(IDisposable item) { if (item == null) + { throw new ArgumentNullException(nameof(item)); + } lock (_gate) { @@ -300,9 +308,14 @@ public bool Contains(IDisposable item) public void CopyTo(IDisposable[] array, int arrayIndex) { if (array == null) + { throw new ArgumentNullException(nameof(array)); + } + if (arrayIndex < 0 || arrayIndex >= array.Length) + { throw new ArgumentOutOfRangeException(nameof(arrayIndex)); + } lock (_gate) { @@ -367,17 +380,16 @@ public IEnumerator GetEnumerator() /// An empty enumerator for the /// method to avoid allocation on disposed or empty composites. /// - static readonly CompositeEnumerator EMPTY_ENUMERATOR = + private static readonly CompositeEnumerator EMPTY_ENUMERATOR = new CompositeEnumerator(new IDisposable[0]); /// /// An enumerator for an array of disposables. /// - sealed class CompositeEnumerator : IEnumerator + private sealed class CompositeEnumerator : IEnumerator { - readonly IDisposable[] disposables; - - int index; + private readonly IDisposable[] disposables; + private int index; public CompositeEnumerator(IDisposable[] disposables) { diff --git a/Rx.NET/Source/src/System.Reactive/Disposables/ContextDisposable.cs b/Rx.NET/Source/src/System.Reactive/Disposables/ContextDisposable.cs index d3f7bb6b21..816a01de9d 100644 --- a/Rx.NET/Source/src/System.Reactive/Disposables/ContextDisposable.cs +++ b/Rx.NET/Source/src/System.Reactive/Disposables/ContextDisposable.cs @@ -22,12 +22,12 @@ public sealed class ContextDisposable : ICancelable /// or is null. public ContextDisposable(SynchronizationContext context, IDisposable disposable) { - if (context == null) - throw new ArgumentNullException(nameof(context)); if (disposable == null) + { throw new ArgumentNullException(nameof(disposable)); + } - Context = context; + Context = context ?? throw new ArgumentNullException(nameof(context)); Disposable.SetSingle(ref _disposable, disposable); } diff --git a/Rx.NET/Source/src/System.Reactive/Disposables/Disposable.cs b/Rx.NET/Source/src/System.Reactive/Disposables/Disposable.cs index 1de3e3cbfa..0db46d52ab 100644 --- a/Rx.NET/Source/src/System.Reactive/Disposables/Disposable.cs +++ b/Rx.NET/Source/src/System.Reactive/Disposables/Disposable.cs @@ -55,7 +55,9 @@ public void Dispose() public static IDisposable Create(Action dispose) { if (dispose == null) + { throw new ArgumentNullException(nameof(dispose)); + } return new AnonymousDisposable(dispose); } @@ -70,7 +72,9 @@ public static IDisposable Create(Action dispose) public static IDisposable Create(TState state, Action dispose) { if (dispose == null) + { throw new ArgumentNullException(nameof(dispose)); + } return new AnonymousDisposable(state, dispose); } @@ -83,7 +87,7 @@ internal static IDisposable GetValue(ref IDisposable fieldRef) { var current = Volatile.Read(ref fieldRef); - return current == BooleanDisposable.True + return current == BooleanDisposable.True ? null : current; } @@ -113,7 +117,9 @@ internal static bool SetSingle(ref IDisposable fieldRef, IDisposable value) var result = TrySetSingle(ref fieldRef, value); if (result == TrySetSingleResult.AlreadyAssigned) + { throw new InvalidOperationException(Strings_Core.DISPOSABLE_ALREADY_ASSIGNED); + } return result == TrySetSingleResult.Success; } @@ -126,10 +132,14 @@ internal static TrySetSingleResult TrySetSingle(ref IDisposable fieldRef, IDispo { var old = Interlocked.CompareExchange(ref fieldRef, value, null); if (old == null) + { return TrySetSingleResult.Success; + } if (old != BooleanDisposable.True) + { return TrySetSingleResult.AlreadyAssigned; + } value?.Dispose(); return TrySetSingleResult.Disposed; @@ -220,7 +230,9 @@ internal static bool TryDispose(ref IDisposable fieldRef) var old = Interlocked.Exchange(ref fieldRef, BooleanDisposable.True); if (old == BooleanDisposable.True) + { return false; + } old?.Dispose(); return true; @@ -231,7 +243,9 @@ internal static bool TryRelease(ref IDisposable fieldRef, TState state, var old = Interlocked.Exchange(ref fieldRef, BooleanDisposable.True); if (old == BooleanDisposable.True) + { return false; + } disposeAction(old, state); return true; diff --git a/Rx.NET/Source/src/System.Reactive/Disposables/MultipleAssignmentDisposable.cs b/Rx.NET/Source/src/System.Reactive/Disposables/MultipleAssignmentDisposable.cs index b481f7f62a..9eb9e9716f 100644 --- a/Rx.NET/Source/src/System.Reactive/Disposables/MultipleAssignmentDisposable.cs +++ b/Rx.NET/Source/src/System.Reactive/Disposables/MultipleAssignmentDisposable.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Threading; namespace System.Reactive.Disposables { diff --git a/Rx.NET/Source/src/System.Reactive/Disposables/RefCountDisposable.cs b/Rx.NET/Source/src/System.Reactive/Disposables/RefCountDisposable.cs index 6f0647fa4a..468e5d244f 100644 --- a/Rx.NET/Source/src/System.Reactive/Disposables/RefCountDisposable.cs +++ b/Rx.NET/Source/src/System.Reactive/Disposables/RefCountDisposable.cs @@ -37,10 +37,7 @@ public RefCountDisposable(IDisposable disposable) : this(disposable, false) /// is null. public RefCountDisposable(IDisposable disposable, bool throwWhenDisposed) { - if (disposable == null) - throw new ArgumentNullException(nameof(disposable)); - - _disposable = disposable; + _disposable = disposable ?? throw new ArgumentNullException(nameof(disposable)); _count = 0; _throwWhenDisposed = throwWhenDisposed; } @@ -67,7 +64,9 @@ public IDisposable GetDisposable() if (cnt == int.MinValue) { if (_throwWhenDisposed) + { throw new ObjectDisposedException("RefCountDisposable"); + } return Disposable.Empty; } @@ -114,7 +113,8 @@ public void Dispose() var b = Interlocked.CompareExchange(ref _count, u, cnt); - if (b == cnt) { + if (b == cnt) + { // if there were 0 active disposables, there can't be any more after // the CAS so we can dispose the underlying disposable if (active == 0) @@ -147,7 +147,8 @@ private void Release() var b = Interlocked.CompareExchange(ref _count, u, cnt); - if (b == cnt) { + if (b == cnt) + { // if after the CAS there was zero active disposables and // the main has been also marked for disposing, // it is safe to dispose the underlying disposable diff --git a/Rx.NET/Source/src/System.Reactive/Disposables/ScheduledDisposable.cs b/Rx.NET/Source/src/System.Reactive/Disposables/ScheduledDisposable.cs index 2c617b9047..17efc091ab 100644 --- a/Rx.NET/Source/src/System.Reactive/Disposables/ScheduledDisposable.cs +++ b/Rx.NET/Source/src/System.Reactive/Disposables/ScheduledDisposable.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System.Reactive.Concurrency; -using System.Threading; namespace System.Reactive.Disposables { @@ -22,12 +21,12 @@ public sealed class ScheduledDisposable : ICancelable /// or is null. public ScheduledDisposable(IScheduler scheduler, IDisposable disposable) { - if (scheduler == null) - throw new ArgumentNullException(nameof(scheduler)); if (disposable == null) + { throw new ArgumentNullException(nameof(disposable)); + } - Scheduler = scheduler; + Scheduler = scheduler ?? throw new ArgumentNullException(nameof(scheduler)); Disposables.Disposable.SetSingle(ref _disposable, disposable); } diff --git a/Rx.NET/Source/src/System.Reactive/Disposables/SerialDisposable.cs b/Rx.NET/Source/src/System.Reactive/Disposables/SerialDisposable.cs index 4695bbd62c..962fb01739 100644 --- a/Rx.NET/Source/src/System.Reactive/Disposables/SerialDisposable.cs +++ b/Rx.NET/Source/src/System.Reactive/Disposables/SerialDisposable.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Threading; namespace System.Reactive.Disposables { diff --git a/Rx.NET/Source/src/System.Reactive/Disposables/SingleAssignmentDisposable.cs b/Rx.NET/Source/src/System.Reactive/Disposables/SingleAssignmentDisposable.cs index e9a4d97410..b4a60dccfc 100644 --- a/Rx.NET/Source/src/System.Reactive/Disposables/SingleAssignmentDisposable.cs +++ b/Rx.NET/Source/src/System.Reactive/Disposables/SingleAssignmentDisposable.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Threading; namespace System.Reactive.Disposables { diff --git a/Rx.NET/Source/src/System.Reactive/Disposables/StableCompositeDisposable.cs b/Rx.NET/Source/src/System.Reactive/Disposables/StableCompositeDisposable.cs index fb3336db74..bd97b80237 100644 --- a/Rx.NET/Source/src/System.Reactive/Disposables/StableCompositeDisposable.cs +++ b/Rx.NET/Source/src/System.Reactive/Disposables/StableCompositeDisposable.cs @@ -21,9 +21,14 @@ public abstract class StableCompositeDisposable : ICancelable public static ICancelable Create(IDisposable disposable1, IDisposable disposable2) { if (disposable1 == null) + { throw new ArgumentNullException(nameof(disposable1)); + } + if (disposable2 == null) + { throw new ArgumentNullException(nameof(disposable2)); + } return new Binary(disposable1, disposable2); } @@ -36,7 +41,9 @@ public static ICancelable Create(IDisposable disposable1, IDisposable disposable public static ICancelable Create(params IDisposable[] disposables) { if (disposables == null) + { throw new ArgumentNullException(nameof(disposables)); + } return new NAry(disposables); } @@ -49,7 +56,9 @@ public static ICancelable Create(params IDisposable[] disposables) public static ICancelable Create(IEnumerable disposables) { if (disposables == null) + { throw new ArgumentNullException(nameof(disposables)); + } return new NAry(disposables); } @@ -104,7 +113,9 @@ public NAry(IEnumerable disposables) // Doing this on the list to avoid duplicate enumeration of disposables. // if (_disposables.Contains(null)) + { throw new ArgumentException(Strings_Core.DISPOSABLES_CANT_CONTAIN_NULL, nameof(disposables)); + } } public override bool IsDisposed => _disposables == null; diff --git a/Rx.NET/Source/src/System.Reactive/EventPattern.cs b/Rx.NET/Source/src/System.Reactive/EventPattern.cs index bd34290fd4..6be7e87d49 100644 --- a/Rx.NET/Source/src/System.Reactive/EventPattern.cs +++ b/Rx.NET/Source/src/System.Reactive/EventPattern.cs @@ -58,10 +58,15 @@ public EventPattern(TSender sender, TEventArgs e) /// true if both objects represent the same event; otherwise, false. public bool Equals(EventPattern other) { - if (ReferenceEquals(null, other)) + if (other is null) + { return false; + } + if (ReferenceEquals(this, other)) + { return true; + } return EqualityComparer.Default.Equals(Sender, other.Sender) && EqualityComparer.Default.Equals(EventArgs, other.EventArgs); } diff --git a/Rx.NET/Source/src/System.Reactive/EventPatternSourceBase.cs b/Rx.NET/Source/src/System.Reactive/EventPatternSourceBase.cs index c17f4c4eba..24944fad1b 100644 --- a/Rx.NET/Source/src/System.Reactive/EventPatternSourceBase.cs +++ b/Rx.NET/Source/src/System.Reactive/EventPatternSourceBase.cs @@ -27,13 +27,8 @@ public abstract class EventPatternSourceBase /// or is null. protected EventPatternSourceBase(IObservable> source, Action, /*object,*/ EventPattern> invokeHandler) { - if (source == null) - throw new ArgumentNullException(nameof(source)); - if (invokeHandler == null) - throw new ArgumentNullException(nameof(invokeHandler)); - - _source = source; - _invokeHandler = invokeHandler; + _source = source ?? throw new ArgumentNullException(nameof(source)); + _invokeHandler = invokeHandler ?? throw new ArgumentNullException(nameof(invokeHandler)); _subscriptions = new Dictionary>(); } @@ -46,9 +41,14 @@ protected EventPatternSourceBase(IObservable> protected void Add(Delegate handler, Action invoke) { if (handler == null) + { throw new ArgumentNullException(nameof(handler)); + } + if (invoke == null) + { throw new ArgumentNullException(nameof(invoke)); + } var gate = new object(); var isAdded = false; @@ -110,7 +110,9 @@ private void Add(Delegate handler, IDisposable disposable) protected void Remove(Delegate handler) { if (handler == null) + { throw new ArgumentNullException(nameof(handler)); + } var d = default(IDisposable); diff --git a/Rx.NET/Source/src/System.Reactive/ExperimentalAttribute.cs b/Rx.NET/Source/src/System.Reactive/ExperimentalAttribute.cs index d1eb02648a..de3fccded8 100644 --- a/Rx.NET/Source/src/System.Reactive/ExperimentalAttribute.cs +++ b/Rx.NET/Source/src/System.Reactive/ExperimentalAttribute.cs @@ -7,7 +7,7 @@ namespace System.Reactive /// /// Marks the program elements that are experimental. This class cannot be inherited. /// - [Experimental, AttributeUsage(AttributeTargets.All, AllowMultiple=false, Inherited=true)] + [Experimental, AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)] public sealed class ExperimentalAttribute : Attribute { } diff --git a/Rx.NET/Source/src/System.Reactive/Internal/Constants.cs b/Rx.NET/Source/src/System.Reactive/Internal/Constants.cs index 837ea3fe66..a7c93521c1 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/Constants.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/Constants.cs @@ -10,11 +10,11 @@ internal static class Constants_Core { private const string OBSOLETE_REFACTORING = "This property is no longer supported due to refactoring of the API surface and elimination of platform-specific dependencies."; - public const string OBSOLETE_SCHEDULER_NEWTHREAD = OBSOLETE_REFACTORING + " Please use NewThreadScheduler.Default to obtain an instance of this scheduler type."; - public const string OBSOLETE_SCHEDULER_TASKPOOL = OBSOLETE_REFACTORING + " Please use TaskPoolScheduler.Default to obtain an instance of this scheduler type."; + public const string OBSOLETE_SCHEDULER_NEWTHREAD = OBSOLETE_REFACTORING + " Please use NewThreadScheduler.Default to obtain an instance of this scheduler type."; + public const string OBSOLETE_SCHEDULER_TASKPOOL = OBSOLETE_REFACTORING + " Please use TaskPoolScheduler.Default to obtain an instance of this scheduler type."; public const string OBSOLETE_SCHEDULER_THREADPOOL = OBSOLETE_REFACTORING + " Consider using Scheduler.Default to obtain the platform's most appropriate pool-based scheduler. In order to access a specific pool-based scheduler, please add a reference to the System.Reactive.PlatformServices assembly for your target platform and use the appropriate scheduler in the System.Reactive.Concurrency namespace."; - public const string OBSOLETE_SCHEDULEREQUIRED = "This instance property is no longer supported. Use CurrentThreadScheduler.IsScheduleRequired instead."; + public const string OBSOLETE_SCHEDULEREQUIRED = "This instance property is no longer supported. Use CurrentThreadScheduler.IsScheduleRequired instead."; } // We can't make those based on the Strings_*.resx file, because the ObsoleteAttribute needs a compile-time constant. diff --git a/Rx.NET/Source/src/System.Reactive/Internal/CurrentPlatformEnlightenmentProvider.cs b/Rx.NET/Source/src/System.Reactive/Internal/CurrentPlatformEnlightenmentProvider.cs index d6f2f5bfbc..a7beb89a73 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/CurrentPlatformEnlightenmentProvider.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/CurrentPlatformEnlightenmentProvider.cs @@ -88,8 +88,10 @@ public virtual T GetService(object[] args) where T : class #else var ifType = t; #endif - var asm = new AssemblyName(ifType.Assembly.FullName); - asm.Name = "System.Reactive"; + var asm = new AssemblyName(ifType.Assembly.FullName) + { + Name = "System.Reactive" + }; var name = "System.Reactive.Linq.QueryDebugger, " + asm.FullName; var dbg = Type.GetType(name, false); diff --git a/Rx.NET/Source/src/System.Reactive/Internal/Either.Generic.cs b/Rx.NET/Source/src/System.Reactive/Internal/Either.Generic.cs index 958e1c80eb..cee88b0fef 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/Either.Generic.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/Either.Generic.cs @@ -13,7 +13,7 @@ private Either() { } - public static Either CreateLeft(TLeft value) => new Left(value); + public static Either CreateLeft(TLeft value) => new Left(value); public static Either CreateRight(TRight value) => new Right(value); @@ -36,9 +36,14 @@ public Left(TLeft value) public bool Equals(Left other) { if (other == this) + { return true; + } + if (other == null) + { return false; + } return EqualityComparer.Default.Equals(Value, other.Value); } @@ -69,9 +74,14 @@ public Right(TRight value) public bool Equals(Right other) { if (other == this) + { return true; + } + if (other == null) + { return false; + } return EqualityComparer.Default.Equals(Value, other.Value); } diff --git a/Rx.NET/Source/src/System.Reactive/Internal/ExceptionHelper.cs b/Rx.NET/Source/src/System.Reactive/Internal/ExceptionHelper.cs index 8fa50ff3e9..03b923675b 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/ExceptionHelper.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/ExceptionHelper.cs @@ -2,11 +2,8 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; using System.Collections.Generic; -using System.Text; using System.Threading; -using System.Linq; namespace System.Reactive { @@ -81,8 +78,10 @@ public static bool TryAddException(ref Exception field, Exception ex) else if (current is AggregateException a) { - var list = new List(a.InnerExceptions); - list.Add(ex); + var list = new List(a.InnerExceptions) + { + ex + }; b = new AggregateException(list); } else @@ -99,7 +98,7 @@ public static bool TryAddException(ref Exception field, Exception ex) /// /// The class indicating a terminal state as an Exception type. /// - sealed class TerminatedException : Exception + private sealed class TerminatedException : Exception { internal TerminatedException() : base("No further exceptions") { diff --git a/Rx.NET/Source/src/System.Reactive/Internal/HalfSerializer.cs b/Rx.NET/Source/src/System.Reactive/Internal/HalfSerializer.cs index a136028391..74c7da55a7 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/HalfSerializer.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/HalfSerializer.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; -using System.Collections.Generic; -using System.Text; using System.Threading; namespace System.Reactive diff --git a/Rx.NET/Source/src/System.Reactive/Internal/Helpers.cs b/Rx.NET/Source/src/System.Reactive/Internal/Helpers.cs index 5e86aac3e3..d69c4e76e1 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/Helpers.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/Helpers.cs @@ -11,10 +11,14 @@ internal static class Helpers public static int? GetLength(IEnumerable source) { if (source is T[] array) + { return array.Length; + } if (source is IList list) + { return list.Count; + } return null; } diff --git a/Rx.NET/Source/src/System.Reactive/Internal/Lookup.cs b/Rx.NET/Source/src/System.Reactive/Internal/Lookup.cs index 03becac55b..e2cd26c734 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/Lookup.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/Lookup.cs @@ -38,7 +38,9 @@ public IEnumerable this[K key] { if (!_dictionary.TryGetValue(key, out var list)) + { return Enumerable.Empty(); + } return Hide(list); } diff --git a/Rx.NET/Source/src/System.Reactive/Internal/PlatformEnlightenmentProvider.cs b/Rx.NET/Source/src/System.Reactive/Internal/PlatformEnlightenmentProvider.cs index c37e84e0c7..8123d80b34 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/PlatformEnlightenmentProvider.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/PlatformEnlightenmentProvider.cs @@ -52,12 +52,9 @@ public static IPlatformEnlightenmentProvider Current set { - if (value == null) - throw new ArgumentNullException(nameof(value)); - - s_current = value; + s_current = value ?? throw new ArgumentNullException(nameof(value)); } - + } private static IPlatformEnlightenmentProvider CreatePlatformProvider() => new CurrentPlatformEnlightenmentProvider(); diff --git a/Rx.NET/Source/src/System.Reactive/Internal/PriorityQueue.cs b/Rx.NET/Source/src/System.Reactive/Internal/PriorityQueue.cs index c1f4832563..397edecd32 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/PriorityQueue.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/PriorityQueue.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Threading; using System.Collections.Generic; namespace System.Reactive @@ -32,10 +31,15 @@ private bool IsHigherPriority(int left, int right) private int Percolate(int index) { if (index >= _size || index < 0) + { return index; + } + var parent = (index - 1) / 2; if (parent < 0 || parent == index) + { return index; + } if (IsHigherPriority(index, parent)) { @@ -51,16 +55,24 @@ private int Percolate(int index) private void Heapify(int index) { if (index >= _size || index < 0) + { return; + } var left = 2 * index + 1; var right = 2 * index + 2; var first = index; if (left < _size && IsHigherPriority(left, first)) + { first = left; + } + if (right < _size && IsHigherPriority(right, first)) + { first = right; + } + if (first != index) { var temp = _items[index]; @@ -75,7 +87,9 @@ private void Heapify(int index) public T Peek() { if (_size == 0) + { throw new InvalidOperationException(Strings_Core.HEAP_EMPTY); + } return _items[0].Value; } @@ -83,10 +97,12 @@ public T Peek() private void RemoveAt(int index) { _items[index] = _items[--_size]; - _items[_size] = default(IndexedItem); + _items[_size] = default; if (Percolate(index) == index) + { Heapify(index); + } if (_size < _items.Length / 4) { @@ -140,7 +156,10 @@ public int CompareTo(IndexedItem other) { var c = Value.CompareTo(other.Value); if (c == 0) + { c = Id.CompareTo(other.Id); + } + return c; } } diff --git a/Rx.NET/Source/src/System.Reactive/Internal/Producer.cs b/Rx.NET/Source/src/System.Reactive/Internal/Producer.cs index 0139edc336..06ca16dd98 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/Producer.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/Producer.cs @@ -4,7 +4,6 @@ using System.Reactive.Concurrency; using System.Reactive.Disposables; -using System.Threading; namespace System.Reactive { @@ -31,7 +30,9 @@ internal abstract class BasicProducer : IProducer public IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return SubscribeRaw(observer, enableSafeguard: true); } @@ -53,7 +54,7 @@ public IDisposable SubscribeRaw(IObserver observer, bool enableSafeguar if (CurrentThreadScheduler.IsScheduleRequired) { var runAssignable = new SingleAssignmentDisposable(); - + CurrentThreadScheduler.Instance.ScheduleAction( (@this: this, runAssignable, observer), tuple => tuple.runAssignable.Disposable = tuple.@this.Run(tuple.observer)); @@ -89,7 +90,9 @@ internal abstract class Producer : IProducer public IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return SubscribeRaw(observer, enableSafeguard: true); } diff --git a/Rx.NET/Source/src/System.Reactive/Internal/ReflectionUtils.cs b/Rx.NET/Source/src/System.Reactive/Internal/ReflectionUtils.cs index b0aa40d4a8..bec9fbcdbc 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/ReflectionUtils.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/ReflectionUtils.cs @@ -40,30 +40,43 @@ public static void GetEventMethods(Type targetType, object { e = targetType.GetEventEx(eventName, true); if (e == null) + { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings_Linq.COULD_NOT_FIND_STATIC_EVENT, eventName, targetType.FullName)); + } } else { e = targetType.GetEventEx(eventName, false); if (e == null) + { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings_Linq.COULD_NOT_FIND_INSTANCE_EVENT, eventName, targetType.FullName)); + } } addMethod = e.GetAddMethod(); removeMethod = e.GetRemoveMethod(); if (addMethod == null) + { throw new InvalidOperationException(Strings_Linq.EVENT_MISSING_ADD_METHOD); + } + if (removeMethod == null) + { throw new InvalidOperationException(Strings_Linq.EVENT_MISSING_REMOVE_METHOD); + } var psa = addMethod.GetParameters(); if (psa.Length != 1) + { throw new InvalidOperationException(Strings_Linq.EVENT_ADD_METHOD_SHOULD_TAKE_ONE_PARAMETER); + } var psr = removeMethod.GetParameters(); if (psr.Length != 1) + { throw new InvalidOperationException(Strings_Linq.EVENT_REMOVE_METHOD_SHOULD_TAKE_ONE_PARAMETER); + } isWinRT = false; @@ -74,7 +87,9 @@ public static void GetEventMethods(Type targetType, object var pet = psr[0]; if (pet.ParameterType != typeof(EventRegistrationToken)) + { throw new InvalidOperationException(Strings_Linq.EVENT_WINRT_REMOVE_METHOD_SHOULD_TAKE_ERT); + } } #endif @@ -85,16 +100,24 @@ public static void GetEventMethods(Type targetType, object var parameters = invokeMethod.GetParameters(); if (parameters.Length != 2) + { throw new InvalidOperationException(Strings_Linq.EVENT_PATTERN_REQUIRES_TWO_PARAMETERS); + } if (!typeof(TSender).IsAssignableFrom(parameters[0].ParameterType)) + { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings_Linq.EVENT_SENDER_NOT_ASSIGNABLE, typeof(TSender).FullName)); + } if (!typeof(TEventArgs).IsAssignableFrom(parameters[1].ParameterType)) + { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings_Linq.EVENT_ARGS_NOT_ASSIGNABLE, typeof(TEventArgs).FullName)); + } if (invokeMethod.ReturnType != typeof(void)) + { throw new InvalidOperationException(Strings_Linq.EVENT_MUST_RETURN_VOID); + } } public static EventInfo GetEventEx(this Type type, string name, bool isStatic) diff --git a/Rx.NET/Source/src/System.Reactive/Internal/SafeObserver.cs b/Rx.NET/Source/src/System.Reactive/Internal/SafeObserver.cs index 073fbb9b63..61c9205d1b 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/SafeObserver.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/SafeObserver.cs @@ -69,7 +69,7 @@ public static ISafeObserver Wrap(IObserver observer) } private IDisposable _disposable; - + public abstract void OnNext(TSource value); public abstract void OnError(Exception error); @@ -89,7 +89,9 @@ public void Dispose() protected virtual void Dispose(bool disposing) { if (disposing) + { Disposable.TryDispose(ref _disposable); + } } } } diff --git a/Rx.NET/Source/src/System.Reactive/Internal/ScheduledObserver.cs b/Rx.NET/Source/src/System.Reactive/Internal/ScheduledObserver.cs index d5d59c80b0..c914cf3fc2 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/ScheduledObserver.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/ScheduledObserver.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Collections.Generic; using System.Reactive.Concurrency; using System.Reactive.Disposables; using System.Threading; @@ -14,17 +13,15 @@ namespace System.Reactive internal class ScheduledObserver : ObserverBase, IScheduledObserver { - private volatile int _state = 0; + private int _state = 0; private const int STOPPED = 0; private const int RUNNING = 1; private const int PENDING = 2; private const int FAULTED = 9; - private readonly ConcurrentQueue _queue = new ConcurrentQueue(); - private volatile bool _failed; - private volatile Exception _error; - private volatile bool _completed; - + private bool _failed; + private Exception _error; + private bool _completed; private readonly IObserver _observer; private readonly IScheduler _scheduler; private readonly ISchedulerLongRunning _longRunning; @@ -43,9 +40,9 @@ public ScheduledObserver(IScheduler scheduler, IObserver observer) } } - sealed class SemaphoreSlimRelease : IDisposable + private sealed class SemaphoreSlimRelease : IDisposable { - SemaphoreSlim _dispatcherEvent; + private SemaphoreSlim _dispatcherEvent; public SemaphoreSlimRelease(SemaphoreSlim dispatcherEvent) { @@ -90,7 +87,9 @@ private void Dispatch(ICancelable cancel) _dispatcherEvent.Wait(); if (cancel.IsDisposed) + { return; + } var next = default(T); while (_queue.TryDequeue(out next)) @@ -103,7 +102,9 @@ private void Dispatch(ICancelable cancel) { var nop = default(T); while (_queue.TryDequeue(out nop)) + { ; + } throw; } @@ -111,7 +112,9 @@ private void Dispatch(ICancelable cancel) _dispatcherEvent.Wait(); if (cancel.IsDisposed) + { return; + } } if (_failed) @@ -144,7 +147,9 @@ public void EnsureActive(int n) EnsureDispatcher(); } else + { EnsureActiveSlow(); + } } private void EnsureActiveSlow() @@ -161,7 +166,9 @@ private void EnsureActiveSlow() } if (old == FAULTED) + { return; + } // If we find the consumer loop running, we transition to PENDING to handle // the case where the queue is seen empty by the consumer, making it transition @@ -187,7 +194,9 @@ private void EnsureActiveSlow() // this state. // if (old == PENDING || old == RUNNING && Interlocked.CompareExchange(ref _state, PENDING, RUNNING) == RUNNING) + { break; + } } if (isOwner) @@ -218,7 +227,9 @@ private void Run(object state, Action recurse) // _observer.OnError(...) // Lost an OnNext // if (!_queue.IsEmpty) + { continue; + } Interlocked.Exchange(ref _state, STOPPED); _observer.OnError(_error); @@ -243,7 +254,9 @@ private void Run(object state, Action recurse) // _observer.OnCompleted() // Lost an OnNext // if (!_queue.IsEmpty) + { continue; + } Interlocked.Exchange(ref _state, STOPPED); _observer.OnCompleted(); @@ -253,7 +266,9 @@ private void Run(object state, Action recurse) var old = Interlocked.CompareExchange(ref _state, STOPPED, RUNNING); if (old == RUNNING || old == FAULTED) + { return; + } Debug.Assert(old == PENDING); @@ -274,7 +289,9 @@ private void Run(object state, Action recurse) var nop = default(T); while (_queue.TryDequeue(out nop)) + { ; + } throw; } @@ -366,45 +383,43 @@ internal interface IScheduledObserver : IObserver, IDisposable /// The element type of the sequence. internal sealed class ObserveOnObserverNew : IObserver, IDisposable { - readonly IObserver downstream; - - readonly IScheduler scheduler; + private readonly IObserver downstream; + private readonly IScheduler scheduler; /// /// If not null, the supports /// long running tasks. /// - readonly ISchedulerLongRunning longRunning; - - readonly ConcurrentQueue queue; - + private readonly ISchedulerLongRunning longRunning; + private readonly ConcurrentQueue queue; private IDisposable _run; /// /// The current task representing a running drain operation. /// - IDisposable task; + private IDisposable task; /// /// Indicates the work-in-progress state of this operator, /// zero means no work is currently being done. /// - int wip; + private int wip; /// /// If true, the upstream has issued OnCompleted. /// - bool done; + private bool done; + /// /// If is true and this is non-null, the upstream /// failed with an OnError. /// - Exception error; + private Exception error; /// /// Indicates a dispose has been requested. /// - bool disposed; + private bool disposed; public ObserveOnObserverNew(IScheduler scheduler, IObserver downstream) { @@ -431,10 +446,13 @@ public void Dispose() /// Remove remaining elements from the queue upon /// cancellation or failure. /// - void Clear() + private void Clear() { var q = queue; - while (q.TryDequeue(out var _)) ; + while (q.TryDequeue(out var _)) + { + ; + } } public void OnCompleted() @@ -460,7 +478,7 @@ public void OnNext(T value) /// Submit the drain task via the appropriate scheduler if /// there is no drain currently running (wip > 0). /// - void Schedule() + private void Schedule() { if (Interlocked.Increment(ref wip) == 1) { @@ -495,7 +513,7 @@ void Schedule() /// Avoids creating a delegate that captures this /// whenever the signals have to be drained. /// - static readonly Action, ICancelable> DRAIN_LONG_RUNNING = + private static readonly Action, ICancelable> DRAIN_LONG_RUNNING = (self, cancel) => self.DrainLongRunning(); /// @@ -503,7 +521,7 @@ void Schedule() /// Avoids creating a delegate that captures this /// whenever the signals have to be drained. /// - static readonly Func, IDisposable> DRAIN_SHORT_RUNNING = + private static readonly Func, IDisposable> DRAIN_SHORT_RUNNING = (scheduler, self) => self.DrainShortRunning(scheduler); /// @@ -512,7 +530,7 @@ void Schedule() /// /// The scheduler to use for scheduling the next signal emission if necessary. /// The IDisposable of the recursively scheduled task or an empty disposable. - IDisposable DrainShortRunning(IScheduler recursiveScheduler) + private IDisposable DrainShortRunning(IScheduler recursiveScheduler) { DrainStep(queue, downstream, false); @@ -534,7 +552,7 @@ IDisposable DrainShortRunning(IScheduler recursiveScheduler) /// Should the errors be delayed until all /// queued items have been emitted to the downstream? /// True if the drain loop should stop. - bool DrainStep(ConcurrentQueue q, IObserver downstream, bool delayError) + private bool DrainStep(ConcurrentQueue q, IObserver downstream, bool delayError) { // Check if the operator has been disposed if (Volatile.Read(ref disposed)) @@ -602,7 +620,7 @@ bool DrainStep(ConcurrentQueue q, IObserver downstream, bool delayError) /// as this is executing a long-running scheduler so /// it can occupy that thread as long as it needs to. /// - void DrainLongRunning() + private void DrainLongRunning() { var missed = 1; diff --git a/Rx.NET/Source/src/System.Reactive/Internal/Sink.cs b/Rx.NET/Source/src/System.Reactive/Internal/Sink.cs index 95890b9264..3ddfba9251 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/Sink.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/Sink.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System.Reactive.Disposables; -using System.Threading; namespace System.Reactive { diff --git a/Rx.NET/Source/src/System.Reactive/Internal/Stubs.cs b/Rx.NET/Source/src/System.Reactive/Internal/Stubs.cs index dc47faa811..26cdd64465 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/Stubs.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/Stubs.cs @@ -26,5 +26,5 @@ internal static class TimerStubs #endif } #endif - } +} diff --git a/Rx.NET/Source/src/System.Reactive/Internal/TailRecursiveSink.cs b/Rx.NET/Source/src/System.Reactive/Internal/TailRecursiveSink.cs index 910f203a90..30603cf22a 100644 --- a/Rx.NET/Source/src/System.Reactive/Internal/TailRecursiveSink.cs +++ b/Rx.NET/Source/src/System.Reactive/Internal/TailRecursiveSink.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System.Collections.Generic; -using System.Reactive.Concurrency; using System.Reactive.Disposables; using System.Threading; @@ -16,18 +15,17 @@ public TailRecursiveSink(IObserver observer) { } - bool _isDisposed; - - int _trampoline; - - IDisposable _currentSubscription; - - Stack>> _stack = new Stack>>(); + private bool _isDisposed; + private int _trampoline; + private IDisposable _currentSubscription; + private Stack>> _stack = new Stack>>(); public void Run(IEnumerable> sources) { if (!TryGetEnumerator(sources, out var current)) + { return; + } _stack.Push(current); @@ -43,7 +41,7 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); } - void Drain() + private void Drain() { if (Interlocked.Increment(ref _trampoline) != 1) { @@ -134,7 +132,7 @@ void Drain() // Since this drain loop is the only one to use Ready, this should // be unambiguous var u = Interlocked.CompareExchange(ref _currentSubscription, d, sad); - + // sequence disposed or completed synchronously if (u != sad) { @@ -144,7 +142,7 @@ void Drain() continue; } } - } + } else { continue; @@ -172,7 +170,7 @@ void Drain() } } - void DisposeAll() + private void DisposeAll() { Volatile.Write(ref _isDisposed, true); // the disposing of currentSubscription is deferred to drain due to some ObservableExTest.Iterate_Complete() @@ -183,7 +181,9 @@ void DisposeAll() protected void Recurse() { if (Disposable.TrySetSerial(ref _currentSubscription, null)) + { Drain(); + } } protected abstract IEnumerable> Extract(IObservable source); @@ -220,7 +220,7 @@ protected virtual bool Fail(Exception error) /// /// Holds onto a singleton IDisposable indicating a ready state. /// - static class ReadyToken + internal static class ReadyToken { /// /// This indicates the operation has been prepared and ready for @@ -228,7 +228,7 @@ static class ReadyToken /// internal static readonly IDisposable Ready = new ReadyDisposable(); - sealed class ReadyDisposable : IDisposable + private sealed class ReadyDisposable : IDisposable { public void Dispose() { diff --git a/Rx.NET/Source/src/System.Reactive/Joins/ActivePlan.cs b/Rx.NET/Source/src/System.Reactive/Joins/ActivePlan.cs index 4327e47434..2f3fd9bf5a 100644 --- a/Rx.NET/Source/src/System.Reactive/Joins/ActivePlan.cs +++ b/Rx.NET/Source/src/System.Reactive/Joins/ActivePlan.cs @@ -8,7 +8,7 @@ namespace System.Reactive.Joins { internal abstract class ActivePlan { - Dictionary joinObservers = new Dictionary(); + private Dictionary joinObservers = new Dictionary(); internal abstract void Match(); @@ -23,7 +23,9 @@ protected void AddJoinObserver(IJoinObserver joinObserver) protected void Dequeue() { foreach (var joinObserver in joinObservers.Values) + { joinObserver.Dequeue(); + } } } @@ -48,7 +50,9 @@ internal override void Match() var n1 = first.Queue.Peek(); if (n1.Kind == NotificationKind.OnCompleted) + { onCompleted(); + } else { Dequeue(); @@ -84,9 +88,11 @@ internal override void Match() var n1 = first.Queue.Peek(); var n2 = second.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted) + { onCompleted(); + } else { Dequeue(); @@ -128,10 +134,12 @@ internal override void Match() var n2 = second.Queue.Peek(); var n3 = third.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted) + { onCompleted(); + } else { Dequeue(); @@ -179,11 +187,13 @@ internal override void Match() var n3 = third.Queue.Peek(); var n4 = fourth.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted) + { onCompleted(); + } else { Dequeue(); @@ -238,12 +248,14 @@ internal override void Match() var n4 = fourth.Queue.Peek(); var n5 = fifth.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted || n5.Kind == NotificationKind.OnCompleted) + { onCompleted(); + } else { Dequeue(); @@ -270,7 +282,7 @@ internal class ActivePlan : ActivePlan private readonly JoinObserver sixth; internal ActivePlan(JoinObserver first, JoinObserver second, JoinObserver third, - JoinObserver fourth, JoinObserver fifth, JoinObserver sixth, + JoinObserver fourth, JoinObserver fifth, JoinObserver sixth, Action onNext, Action onCompleted) { this.onNext = onNext; @@ -305,13 +317,15 @@ internal override void Match() var n5 = fifth.Queue.Peek(); var n6 = sixth.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted || n5.Kind == NotificationKind.OnCompleted || n6.Kind == NotificationKind.OnCompleted) + { onCompleted(); + } else { Dequeue(); @@ -379,14 +393,16 @@ internal override void Match() var n6 = sixth.Queue.Peek(); var n7 = seventh.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted || n5.Kind == NotificationKind.OnCompleted || n6.Kind == NotificationKind.OnCompleted || n7.Kind == NotificationKind.OnCompleted) + { onCompleted(); + } else { Dequeue(); @@ -461,7 +477,7 @@ internal override void Match() var n7 = seventh.Queue.Peek(); var n8 = eighth.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted @@ -470,7 +486,9 @@ internal override void Match() || n7.Kind == NotificationKind.OnCompleted || n8.Kind == NotificationKind.OnCompleted ) + { onCompleted(); + } else { Dequeue(); @@ -552,7 +570,7 @@ internal override void Match() var n8 = eighth.Queue.Peek(); var n9 = ninth.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted @@ -562,7 +580,9 @@ internal override void Match() || n8.Kind == NotificationKind.OnCompleted || n9.Kind == NotificationKind.OnCompleted ) + { onCompleted(); + } else { Dequeue(); @@ -650,7 +670,7 @@ internal override void Match() var n9 = ninth.Queue.Peek(); var n10 = tenth.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted @@ -661,7 +681,9 @@ internal override void Match() || n9.Kind == NotificationKind.OnCompleted || n10.Kind == NotificationKind.OnCompleted ) + { onCompleted(); + } else { Dequeue(); @@ -755,7 +777,7 @@ internal override void Match() var n10 = tenth.Queue.Peek(); var n11 = eleventh.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted @@ -767,7 +789,9 @@ internal override void Match() || n10.Kind == NotificationKind.OnCompleted || n11.Kind == NotificationKind.OnCompleted ) + { onCompleted(); + } else { Dequeue(); @@ -868,7 +892,7 @@ internal override void Match() var n11 = eleventh.Queue.Peek(); var n12 = twelfth.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted @@ -881,7 +905,9 @@ internal override void Match() || n11.Kind == NotificationKind.OnCompleted || n12.Kind == NotificationKind.OnCompleted ) + { onCompleted(); + } else { Dequeue(); @@ -988,7 +1014,7 @@ internal override void Match() var n12 = twelfth.Queue.Peek(); var n13 = thirteenth.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted @@ -1002,7 +1028,9 @@ internal override void Match() || n12.Kind == NotificationKind.OnCompleted || n13.Kind == NotificationKind.OnCompleted ) + { onCompleted(); + } else { Dequeue(); @@ -1115,7 +1143,7 @@ internal override void Match() var n13 = thirteenth.Queue.Peek(); var n14 = fourteenth.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted @@ -1130,7 +1158,9 @@ internal override void Match() || n13.Kind == NotificationKind.OnCompleted || n14.Kind == NotificationKind.OnCompleted ) + { onCompleted(); + } else { Dequeue(); @@ -1250,7 +1280,7 @@ internal override void Match() var n14 = fourteenth.Queue.Peek(); var n15 = fifteenth.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted @@ -1266,7 +1296,9 @@ internal override void Match() || n14.Kind == NotificationKind.OnCompleted || n15.Kind == NotificationKind.OnCompleted ) + { onCompleted(); + } else { Dequeue(); @@ -1291,7 +1323,6 @@ internal override void Match() } } - internal class ActivePlan : ActivePlan { private readonly Action onNext; @@ -1393,7 +1424,7 @@ internal override void Match() var n15 = fifteenth.Queue.Peek(); var n16 = sixteenth.Queue.Peek(); - if ( n1.Kind == NotificationKind.OnCompleted + if (n1.Kind == NotificationKind.OnCompleted || n2.Kind == NotificationKind.OnCompleted || n3.Kind == NotificationKind.OnCompleted || n4.Kind == NotificationKind.OnCompleted @@ -1410,7 +1441,9 @@ internal override void Match() || n15.Kind == NotificationKind.OnCompleted || n16.Kind == NotificationKind.OnCompleted ) + { onCompleted(); + } else { Dequeue(); diff --git a/Rx.NET/Source/src/System.Reactive/Joins/JoinObserver.cs b/Rx.NET/Source/src/System.Reactive/Joins/JoinObserver.cs index 57ff6ddcf5..aca5aaf18a 100644 --- a/Rx.NET/Source/src/System.Reactive/Joins/JoinObserver.cs +++ b/Rx.NET/Source/src/System.Reactive/Joins/JoinObserver.cs @@ -62,7 +62,9 @@ protected override void OnNextCore(Notification notification) Queue.Enqueue(notification); foreach (var activePlan in _activePlans.ToArray()) // Working on a copy since _activePlans might change while iterating. + { activePlan.Match(); + } } } } @@ -79,7 +81,9 @@ internal void RemoveActivePlan(ActivePlan activePlan) { _activePlans.Remove(activePlan); if (_activePlans.Count == 0) + { Dispose(); + } } protected override void Dispose(bool disposing) @@ -89,7 +93,9 @@ protected override void Dispose(bool disposing) if (!_isDisposed) { if (disposing) + { Disposable.TryDispose(ref _subscription); + } _isDisposed = true; } diff --git a/Rx.NET/Source/src/System.Reactive/Joins/Pattern.cs b/Rx.NET/Source/src/System.Reactive/Joins/Pattern.cs index dc397e997b..4b42796371 100644 --- a/Rx.NET/Source/src/System.Reactive/Joins/Pattern.cs +++ b/Rx.NET/Source/src/System.Reactive/Joins/Pattern.cs @@ -41,7 +41,9 @@ internal Pattern(IObservable first) public Plan Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -74,7 +76,9 @@ internal Pattern(IObservable first, IObservable second) public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, other); } @@ -89,7 +93,9 @@ public Pattern And(IObservable public Plan Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -125,7 +131,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, other); } @@ -140,7 +148,9 @@ public Pattern And(IObservable public Plan Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -179,7 +189,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, other); } @@ -194,7 +206,9 @@ public Pattern And(I public Plan Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -236,7 +250,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, Fifth, other); } @@ -251,7 +267,9 @@ public Pattern And Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -296,7 +314,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, Fifth, Sixth, other); } @@ -311,7 +331,9 @@ public Pattern Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -359,7 +381,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, Fifth, Sixth, Seventh, other); } @@ -374,7 +398,9 @@ public Pattern Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -425,7 +451,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, other); } @@ -440,7 +468,9 @@ public Pattern Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -494,7 +524,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, other); } @@ -509,7 +541,9 @@ public Pattern Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -566,7 +600,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, other); } @@ -581,7 +617,9 @@ public Pattern Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -641,7 +679,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, Eleventh, other); } @@ -656,7 +696,9 @@ public Pattern Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -719,7 +761,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, Eleventh, Twelfth, other); } @@ -734,7 +778,9 @@ public Pattern Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -800,7 +846,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, Eleventh, Twelfth, Thirteenth, other); } @@ -815,7 +863,9 @@ public Pattern Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -884,7 +934,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, Eleventh, Twelfth, Thirteenth, Fourteenth, other); } @@ -899,7 +951,9 @@ public Pattern Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -971,7 +1025,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Pattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return new Pattern(First, Second, Third, Fourth, Fifth, Sixth, Seventh, Eighth, Ninth, Tenth, Eleventh, Twelfth, Thirteenth, Fourteenth, Fifteenth, other); } @@ -986,7 +1042,9 @@ public Pattern Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } @@ -1061,7 +1119,9 @@ internal Pattern(IObservable first, IObservable second, IObs public Plan Then(Func selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new Plan(this, selector); } diff --git a/Rx.NET/Source/src/System.Reactive/Joins/Plan.cs b/Rx.NET/Source/src/System.Reactive/Joins/Plan.cs index 0a8ce6e7ea..824c6ecaf4 100644 --- a/Rx.NET/Source/src/System.Reactive/Joins/Plan.cs +++ b/Rx.NET/Source/src/System.Reactive/Joins/Plan.cs @@ -294,875 +294,875 @@ internal override ActivePlan Activate(Dictionary external } } - internal class Plan : Plan - { - internal Pattern Expression { get; private set; } - - internal Func Selector { get; private set; } - - internal Plan(Pattern expression, - Func selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary externalSubscriptions, - IObserver observer, Action deactivate) - { - var onError = new Action(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var activePlan = default(ActivePlan); - - activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, - (first, second, third, fourth, fifth, sixth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan : Plan - { - internal Pattern Expression { get; private set; } - - internal Func Selector { get; private set; } - - internal Plan(Pattern expression, - Func selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary externalSubscriptions, - IObserver observer, Action deactivate) - { - var onError = new Action(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var activePlan = default(ActivePlan); - - activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - seventhJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan : Plan - { - internal Pattern Expression { get; private set; } - - internal Func Selector { get; private set; } - - internal Plan(Pattern expression, - Func selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary externalSubscriptions, - IObserver observer, Action deactivate) - { - var onError = new Action(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var activePlan = default(ActivePlan); - - activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - seventhJoinObserver.AddActivePlan(activePlan); - eighthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan : Plan - { - internal Pattern Expression { get; private set; } - - internal Func Selector { get; private set; } - - internal Plan(Pattern expression, - Func selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary externalSubscriptions, - IObserver observer, Action deactivate) - { - var onError = new Action(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var activePlan = default(ActivePlan); - - activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - seventhJoinObserver.AddActivePlan(activePlan); - eighthJoinObserver.AddActivePlan(activePlan); - ninthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan : Plan - { - internal Pattern Expression { get; private set; } - - internal Func Selector { get; private set; } - - internal Plan(Pattern expression, - Func selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary externalSubscriptions, - IObserver observer, Action deactivate) - { - var onError = new Action(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var activePlan = default(ActivePlan); - - activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - seventhJoinObserver.AddActivePlan(activePlan); - eighthJoinObserver.AddActivePlan(activePlan); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan : Plan - { - internal Pattern Expression { get; private set; } - - internal Func Selector { get; private set; } - - internal Plan(Pattern expression, - Func selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary externalSubscriptions, - IObserver observer, Action deactivate) - { - var onError = new Action(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - - var activePlan = default(ActivePlan); - - activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver,eleventhJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - seventhJoinObserver.AddActivePlan(activePlan); - eighthJoinObserver.AddActivePlan(activePlan); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan : Plan - { - internal Pattern Expression { get; private set; } - - internal Func Selector { get; private set; } - - internal Plan(Pattern expression, - Func selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary externalSubscriptions, - IObserver observer, Action deactivate) - { - var onError = new Action(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); - - var activePlan = default(ActivePlan); - - activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver, - twelfthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.RemoveActivePlan(activePlan); - twelfthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - seventhJoinObserver.AddActivePlan(activePlan); - eighthJoinObserver.AddActivePlan(activePlan); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - twelfthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - - internal class Plan : Plan - { - internal Pattern Expression { get; private set; } - - internal Func Selector { get; private set; } - - internal Plan(Pattern expression, - Func selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary externalSubscriptions, - IObserver observer, Action deactivate) - { - var onError = new Action(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); - var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); - - var activePlan = default(ActivePlan); - - activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver, - twelfthJoinObserver, thirteenthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.RemoveActivePlan(activePlan); - twelfthJoinObserver.RemoveActivePlan(activePlan); - thirteenthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - seventhJoinObserver.AddActivePlan(activePlan); - eighthJoinObserver.AddActivePlan(activePlan); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - twelfthJoinObserver.AddActivePlan(activePlan); - thirteenthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - - internal class Plan : Plan - { - internal Pattern Expression { get; private set; } - - internal Func Selector { get; private set; } - - internal Plan(Pattern expression, - Func selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary externalSubscriptions, - IObserver observer, Action deactivate) - { - var onError = new Action(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); - var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); - var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError); - - var activePlan = default(ActivePlan); - - activePlan = new ActivePlan( - firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, - seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, - tenthJoinObserver, eleventhJoinObserver, - twelfthJoinObserver, thirteenthJoinObserver, - fourteenthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.RemoveActivePlan(activePlan); - twelfthJoinObserver.RemoveActivePlan(activePlan); - thirteenthJoinObserver.RemoveActivePlan(activePlan); - fourteenthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - seventhJoinObserver.AddActivePlan(activePlan); - eighthJoinObserver.AddActivePlan(activePlan); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - twelfthJoinObserver.AddActivePlan(activePlan); - thirteenthJoinObserver.AddActivePlan(activePlan); - fourteenthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - - internal class Plan : Plan - { - internal Pattern Expression { get; private set; } - - internal Func Selector { get; private set; } - - internal Plan(Pattern expression, - Func selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary externalSubscriptions, - IObserver observer, Action deactivate) - { - var onError = new Action(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); - var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); - var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError); - var fifteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifteenth, onError); - - var activePlan = default(ActivePlan); - - activePlan = new ActivePlan( - firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, - seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, - tenthJoinObserver, eleventhJoinObserver, - twelfthJoinObserver, thirteenthJoinObserver, - fourteenthJoinObserver, fifteenthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.RemoveActivePlan(activePlan); - twelfthJoinObserver.RemoveActivePlan(activePlan); - thirteenthJoinObserver.RemoveActivePlan(activePlan); - fourteenthJoinObserver.RemoveActivePlan(activePlan); - fifteenthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - seventhJoinObserver.AddActivePlan(activePlan); - eighthJoinObserver.AddActivePlan(activePlan); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - twelfthJoinObserver.AddActivePlan(activePlan); - thirteenthJoinObserver.AddActivePlan(activePlan); - fourteenthJoinObserver.AddActivePlan(activePlan); - fifteenthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } - internal class Plan : Plan - { - internal Pattern Expression { get; private set; } - - internal Func Selector { get; private set; } - - internal Plan(Pattern expression, - Func selector) - { - Expression = expression; - Selector = selector; - } - - internal override ActivePlan Activate(Dictionary externalSubscriptions, - IObserver observer, Action deactivate) - { - var onError = new Action(observer.OnError); - var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); - var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); - var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); - var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); - var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); - var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); - var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); - var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); - var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); - var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); - var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); - var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); - var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); - var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError); - var fifteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifteenth, onError); - var sixteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixteenth, onError); - - var activePlan = default(ActivePlan); - - activePlan = new ActivePlan( - firstJoinObserver, secondJoinObserver, thirdJoinObserver, - fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, - seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, - tenthJoinObserver, eleventhJoinObserver, - twelfthJoinObserver, thirteenthJoinObserver, - fourteenthJoinObserver, fifteenthJoinObserver, - sixteenthJoinObserver, - (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth, sixteenth) => - { - var result = default(TResult); - try - { - result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth, sixteenth); - } - catch (Exception exception) - { - observer.OnError(exception); - return; - } - observer.OnNext(result); - }, - () => - { - firstJoinObserver.RemoveActivePlan(activePlan); - secondJoinObserver.RemoveActivePlan(activePlan); - thirdJoinObserver.RemoveActivePlan(activePlan); - fourthJoinObserver.RemoveActivePlan(activePlan); - fifthJoinObserver.RemoveActivePlan(activePlan); - sixthJoinObserver.RemoveActivePlan(activePlan); - seventhJoinObserver.RemoveActivePlan(activePlan); - eighthJoinObserver.RemoveActivePlan(activePlan); - ninthJoinObserver.RemoveActivePlan(activePlan); - tenthJoinObserver.RemoveActivePlan(activePlan); - eleventhJoinObserver.RemoveActivePlan(activePlan); - twelfthJoinObserver.RemoveActivePlan(activePlan); - thirteenthJoinObserver.RemoveActivePlan(activePlan); - fourteenthJoinObserver.RemoveActivePlan(activePlan); - fifteenthJoinObserver.RemoveActivePlan(activePlan); - sixteenthJoinObserver.RemoveActivePlan(activePlan); - deactivate(activePlan); - }); - - firstJoinObserver.AddActivePlan(activePlan); - secondJoinObserver.AddActivePlan(activePlan); - thirdJoinObserver.AddActivePlan(activePlan); - fourthJoinObserver.AddActivePlan(activePlan); - fifthJoinObserver.AddActivePlan(activePlan); - sixthJoinObserver.AddActivePlan(activePlan); - seventhJoinObserver.AddActivePlan(activePlan); - eighthJoinObserver.AddActivePlan(activePlan); - ninthJoinObserver.AddActivePlan(activePlan); - tenthJoinObserver.AddActivePlan(activePlan); - eleventhJoinObserver.AddActivePlan(activePlan); - twelfthJoinObserver.AddActivePlan(activePlan); - thirteenthJoinObserver.AddActivePlan(activePlan); - fourteenthJoinObserver.AddActivePlan(activePlan); - fifteenthJoinObserver.AddActivePlan(activePlan); - sixteenthJoinObserver.AddActivePlan(activePlan); - return activePlan; - } - } + internal class Plan : Plan + { + internal Pattern Expression { get; private set; } + + internal Func Selector { get; private set; } + + internal Plan(Pattern expression, + Func selector) + { + Expression = expression; + Selector = selector; + } + + internal override ActivePlan Activate(Dictionary externalSubscriptions, + IObserver observer, Action deactivate) + { + var onError = new Action(observer.OnError); + var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); + var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); + var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); + var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); + var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); + var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); + var activePlan = default(ActivePlan); + + activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, + fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, + (first, second, third, fourth, fifth, sixth) => + { + var result = default(TResult); + try + { + result = Selector(first, second, third, fourth, fifth, sixth); + } + catch (Exception exception) + { + observer.OnError(exception); + return; + } + observer.OnNext(result); + }, + () => + { + firstJoinObserver.RemoveActivePlan(activePlan); + secondJoinObserver.RemoveActivePlan(activePlan); + thirdJoinObserver.RemoveActivePlan(activePlan); + fourthJoinObserver.RemoveActivePlan(activePlan); + fifthJoinObserver.RemoveActivePlan(activePlan); + sixthJoinObserver.RemoveActivePlan(activePlan); + deactivate(activePlan); + }); + + firstJoinObserver.AddActivePlan(activePlan); + secondJoinObserver.AddActivePlan(activePlan); + thirdJoinObserver.AddActivePlan(activePlan); + fourthJoinObserver.AddActivePlan(activePlan); + fifthJoinObserver.AddActivePlan(activePlan); + sixthJoinObserver.AddActivePlan(activePlan); + return activePlan; + } + } + + internal class Plan : Plan + { + internal Pattern Expression { get; private set; } + + internal Func Selector { get; private set; } + + internal Plan(Pattern expression, + Func selector) + { + Expression = expression; + Selector = selector; + } + + internal override ActivePlan Activate(Dictionary externalSubscriptions, + IObserver observer, Action deactivate) + { + var onError = new Action(observer.OnError); + var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); + var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); + var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); + var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); + var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); + var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); + var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); + var activePlan = default(ActivePlan); + + activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, + fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, + (first, second, third, fourth, fifth, sixth, seventh) => + { + var result = default(TResult); + try + { + result = Selector(first, second, third, fourth, fifth, sixth, seventh); + } + catch (Exception exception) + { + observer.OnError(exception); + return; + } + observer.OnNext(result); + }, + () => + { + firstJoinObserver.RemoveActivePlan(activePlan); + secondJoinObserver.RemoveActivePlan(activePlan); + thirdJoinObserver.RemoveActivePlan(activePlan); + fourthJoinObserver.RemoveActivePlan(activePlan); + fifthJoinObserver.RemoveActivePlan(activePlan); + sixthJoinObserver.RemoveActivePlan(activePlan); + seventhJoinObserver.RemoveActivePlan(activePlan); + deactivate(activePlan); + }); + + firstJoinObserver.AddActivePlan(activePlan); + secondJoinObserver.AddActivePlan(activePlan); + thirdJoinObserver.AddActivePlan(activePlan); + fourthJoinObserver.AddActivePlan(activePlan); + fifthJoinObserver.AddActivePlan(activePlan); + sixthJoinObserver.AddActivePlan(activePlan); + seventhJoinObserver.AddActivePlan(activePlan); + return activePlan; + } + } + + internal class Plan : Plan + { + internal Pattern Expression { get; private set; } + + internal Func Selector { get; private set; } + + internal Plan(Pattern expression, + Func selector) + { + Expression = expression; + Selector = selector; + } + + internal override ActivePlan Activate(Dictionary externalSubscriptions, + IObserver observer, Action deactivate) + { + var onError = new Action(observer.OnError); + var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); + var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); + var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); + var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); + var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); + var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); + var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); + var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); + var activePlan = default(ActivePlan); + + activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, + fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, + (first, second, third, fourth, fifth, sixth, seventh, eighth) => + { + var result = default(TResult); + try + { + result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth); + } + catch (Exception exception) + { + observer.OnError(exception); + return; + } + observer.OnNext(result); + }, + () => + { + firstJoinObserver.RemoveActivePlan(activePlan); + secondJoinObserver.RemoveActivePlan(activePlan); + thirdJoinObserver.RemoveActivePlan(activePlan); + fourthJoinObserver.RemoveActivePlan(activePlan); + fifthJoinObserver.RemoveActivePlan(activePlan); + sixthJoinObserver.RemoveActivePlan(activePlan); + seventhJoinObserver.RemoveActivePlan(activePlan); + eighthJoinObserver.RemoveActivePlan(activePlan); + deactivate(activePlan); + }); + + firstJoinObserver.AddActivePlan(activePlan); + secondJoinObserver.AddActivePlan(activePlan); + thirdJoinObserver.AddActivePlan(activePlan); + fourthJoinObserver.AddActivePlan(activePlan); + fifthJoinObserver.AddActivePlan(activePlan); + sixthJoinObserver.AddActivePlan(activePlan); + seventhJoinObserver.AddActivePlan(activePlan); + eighthJoinObserver.AddActivePlan(activePlan); + return activePlan; + } + } + + internal class Plan : Plan + { + internal Pattern Expression { get; private set; } + + internal Func Selector { get; private set; } + + internal Plan(Pattern expression, + Func selector) + { + Expression = expression; + Selector = selector; + } + + internal override ActivePlan Activate(Dictionary externalSubscriptions, + IObserver observer, Action deactivate) + { + var onError = new Action(observer.OnError); + var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); + var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); + var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); + var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); + var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); + var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); + var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); + var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); + var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); + var activePlan = default(ActivePlan); + + activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, + fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, + (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth) => + { + var result = default(TResult); + try + { + result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth); + } + catch (Exception exception) + { + observer.OnError(exception); + return; + } + observer.OnNext(result); + }, + () => + { + firstJoinObserver.RemoveActivePlan(activePlan); + secondJoinObserver.RemoveActivePlan(activePlan); + thirdJoinObserver.RemoveActivePlan(activePlan); + fourthJoinObserver.RemoveActivePlan(activePlan); + fifthJoinObserver.RemoveActivePlan(activePlan); + sixthJoinObserver.RemoveActivePlan(activePlan); + seventhJoinObserver.RemoveActivePlan(activePlan); + eighthJoinObserver.RemoveActivePlan(activePlan); + ninthJoinObserver.RemoveActivePlan(activePlan); + deactivate(activePlan); + }); + + firstJoinObserver.AddActivePlan(activePlan); + secondJoinObserver.AddActivePlan(activePlan); + thirdJoinObserver.AddActivePlan(activePlan); + fourthJoinObserver.AddActivePlan(activePlan); + fifthJoinObserver.AddActivePlan(activePlan); + sixthJoinObserver.AddActivePlan(activePlan); + seventhJoinObserver.AddActivePlan(activePlan); + eighthJoinObserver.AddActivePlan(activePlan); + ninthJoinObserver.AddActivePlan(activePlan); + return activePlan; + } + } + + internal class Plan : Plan + { + internal Pattern Expression { get; private set; } + + internal Func Selector { get; private set; } + + internal Plan(Pattern expression, + Func selector) + { + Expression = expression; + Selector = selector; + } + + internal override ActivePlan Activate(Dictionary externalSubscriptions, + IObserver observer, Action deactivate) + { + var onError = new Action(observer.OnError); + var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); + var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); + var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); + var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); + var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); + var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); + var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); + var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); + var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); + var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); + var activePlan = default(ActivePlan); + + activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, + fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, + (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth) => + { + var result = default(TResult); + try + { + result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth); + } + catch (Exception exception) + { + observer.OnError(exception); + return; + } + observer.OnNext(result); + }, + () => + { + firstJoinObserver.RemoveActivePlan(activePlan); + secondJoinObserver.RemoveActivePlan(activePlan); + thirdJoinObserver.RemoveActivePlan(activePlan); + fourthJoinObserver.RemoveActivePlan(activePlan); + fifthJoinObserver.RemoveActivePlan(activePlan); + sixthJoinObserver.RemoveActivePlan(activePlan); + seventhJoinObserver.RemoveActivePlan(activePlan); + eighthJoinObserver.RemoveActivePlan(activePlan); + ninthJoinObserver.RemoveActivePlan(activePlan); + tenthJoinObserver.RemoveActivePlan(activePlan); + deactivate(activePlan); + }); + + firstJoinObserver.AddActivePlan(activePlan); + secondJoinObserver.AddActivePlan(activePlan); + thirdJoinObserver.AddActivePlan(activePlan); + fourthJoinObserver.AddActivePlan(activePlan); + fifthJoinObserver.AddActivePlan(activePlan); + sixthJoinObserver.AddActivePlan(activePlan); + seventhJoinObserver.AddActivePlan(activePlan); + eighthJoinObserver.AddActivePlan(activePlan); + ninthJoinObserver.AddActivePlan(activePlan); + tenthJoinObserver.AddActivePlan(activePlan); + return activePlan; + } + } + + internal class Plan : Plan + { + internal Pattern Expression { get; private set; } + + internal Func Selector { get; private set; } + + internal Plan(Pattern expression, + Func selector) + { + Expression = expression; + Selector = selector; + } + + internal override ActivePlan Activate(Dictionary externalSubscriptions, + IObserver observer, Action deactivate) + { + var onError = new Action(observer.OnError); + var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); + var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); + var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); + var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); + var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); + var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); + var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); + var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); + var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); + var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); + var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); + + var activePlan = default(ActivePlan); + + activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, + fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver, + (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh) => + { + var result = default(TResult); + try + { + result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh); + } + catch (Exception exception) + { + observer.OnError(exception); + return; + } + observer.OnNext(result); + }, + () => + { + firstJoinObserver.RemoveActivePlan(activePlan); + secondJoinObserver.RemoveActivePlan(activePlan); + thirdJoinObserver.RemoveActivePlan(activePlan); + fourthJoinObserver.RemoveActivePlan(activePlan); + fifthJoinObserver.RemoveActivePlan(activePlan); + sixthJoinObserver.RemoveActivePlan(activePlan); + seventhJoinObserver.RemoveActivePlan(activePlan); + eighthJoinObserver.RemoveActivePlan(activePlan); + ninthJoinObserver.RemoveActivePlan(activePlan); + tenthJoinObserver.RemoveActivePlan(activePlan); + eleventhJoinObserver.RemoveActivePlan(activePlan); + deactivate(activePlan); + }); + + firstJoinObserver.AddActivePlan(activePlan); + secondJoinObserver.AddActivePlan(activePlan); + thirdJoinObserver.AddActivePlan(activePlan); + fourthJoinObserver.AddActivePlan(activePlan); + fifthJoinObserver.AddActivePlan(activePlan); + sixthJoinObserver.AddActivePlan(activePlan); + seventhJoinObserver.AddActivePlan(activePlan); + eighthJoinObserver.AddActivePlan(activePlan); + ninthJoinObserver.AddActivePlan(activePlan); + tenthJoinObserver.AddActivePlan(activePlan); + eleventhJoinObserver.AddActivePlan(activePlan); + return activePlan; + } + } + + internal class Plan : Plan + { + internal Pattern Expression { get; private set; } + + internal Func Selector { get; private set; } + + internal Plan(Pattern expression, + Func selector) + { + Expression = expression; + Selector = selector; + } + + internal override ActivePlan Activate(Dictionary externalSubscriptions, + IObserver observer, Action deactivate) + { + var onError = new Action(observer.OnError); + var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); + var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); + var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); + var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); + var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); + var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); + var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); + var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); + var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); + var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); + var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); + var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); + + var activePlan = default(ActivePlan); + + activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, + fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver, + twelfthJoinObserver, + (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth) => + { + var result = default(TResult); + try + { + result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth); + } + catch (Exception exception) + { + observer.OnError(exception); + return; + } + observer.OnNext(result); + }, + () => + { + firstJoinObserver.RemoveActivePlan(activePlan); + secondJoinObserver.RemoveActivePlan(activePlan); + thirdJoinObserver.RemoveActivePlan(activePlan); + fourthJoinObserver.RemoveActivePlan(activePlan); + fifthJoinObserver.RemoveActivePlan(activePlan); + sixthJoinObserver.RemoveActivePlan(activePlan); + seventhJoinObserver.RemoveActivePlan(activePlan); + eighthJoinObserver.RemoveActivePlan(activePlan); + ninthJoinObserver.RemoveActivePlan(activePlan); + tenthJoinObserver.RemoveActivePlan(activePlan); + eleventhJoinObserver.RemoveActivePlan(activePlan); + twelfthJoinObserver.RemoveActivePlan(activePlan); + deactivate(activePlan); + }); + + firstJoinObserver.AddActivePlan(activePlan); + secondJoinObserver.AddActivePlan(activePlan); + thirdJoinObserver.AddActivePlan(activePlan); + fourthJoinObserver.AddActivePlan(activePlan); + fifthJoinObserver.AddActivePlan(activePlan); + sixthJoinObserver.AddActivePlan(activePlan); + seventhJoinObserver.AddActivePlan(activePlan); + eighthJoinObserver.AddActivePlan(activePlan); + ninthJoinObserver.AddActivePlan(activePlan); + tenthJoinObserver.AddActivePlan(activePlan); + eleventhJoinObserver.AddActivePlan(activePlan); + twelfthJoinObserver.AddActivePlan(activePlan); + return activePlan; + } + } + + + internal class Plan : Plan + { + internal Pattern Expression { get; private set; } + + internal Func Selector { get; private set; } + + internal Plan(Pattern expression, + Func selector) + { + Expression = expression; + Selector = selector; + } + + internal override ActivePlan Activate(Dictionary externalSubscriptions, + IObserver observer, Action deactivate) + { + var onError = new Action(observer.OnError); + var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); + var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); + var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); + var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); + var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); + var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); + var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); + var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); + var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); + var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); + var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); + var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); + var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); + + var activePlan = default(ActivePlan); + + activePlan = new ActivePlan(firstJoinObserver, secondJoinObserver, thirdJoinObserver, + fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver, + twelfthJoinObserver, thirteenthJoinObserver, + (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth) => + { + var result = default(TResult); + try + { + result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth); + } + catch (Exception exception) + { + observer.OnError(exception); + return; + } + observer.OnNext(result); + }, + () => + { + firstJoinObserver.RemoveActivePlan(activePlan); + secondJoinObserver.RemoveActivePlan(activePlan); + thirdJoinObserver.RemoveActivePlan(activePlan); + fourthJoinObserver.RemoveActivePlan(activePlan); + fifthJoinObserver.RemoveActivePlan(activePlan); + sixthJoinObserver.RemoveActivePlan(activePlan); + seventhJoinObserver.RemoveActivePlan(activePlan); + eighthJoinObserver.RemoveActivePlan(activePlan); + ninthJoinObserver.RemoveActivePlan(activePlan); + tenthJoinObserver.RemoveActivePlan(activePlan); + eleventhJoinObserver.RemoveActivePlan(activePlan); + twelfthJoinObserver.RemoveActivePlan(activePlan); + thirteenthJoinObserver.RemoveActivePlan(activePlan); + deactivate(activePlan); + }); + + firstJoinObserver.AddActivePlan(activePlan); + secondJoinObserver.AddActivePlan(activePlan); + thirdJoinObserver.AddActivePlan(activePlan); + fourthJoinObserver.AddActivePlan(activePlan); + fifthJoinObserver.AddActivePlan(activePlan); + sixthJoinObserver.AddActivePlan(activePlan); + seventhJoinObserver.AddActivePlan(activePlan); + eighthJoinObserver.AddActivePlan(activePlan); + ninthJoinObserver.AddActivePlan(activePlan); + tenthJoinObserver.AddActivePlan(activePlan); + eleventhJoinObserver.AddActivePlan(activePlan); + twelfthJoinObserver.AddActivePlan(activePlan); + thirteenthJoinObserver.AddActivePlan(activePlan); + return activePlan; + } + } + + + internal class Plan : Plan + { + internal Pattern Expression { get; private set; } + + internal Func Selector { get; private set; } + + internal Plan(Pattern expression, + Func selector) + { + Expression = expression; + Selector = selector; + } + + internal override ActivePlan Activate(Dictionary externalSubscriptions, + IObserver observer, Action deactivate) + { + var onError = new Action(observer.OnError); + var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); + var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); + var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); + var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); + var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); + var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); + var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); + var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); + var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); + var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); + var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); + var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); + var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); + var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError); + + var activePlan = default(ActivePlan); + + activePlan = new ActivePlan( + firstJoinObserver, secondJoinObserver, thirdJoinObserver, + fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, + seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, + tenthJoinObserver, eleventhJoinObserver, + twelfthJoinObserver, thirteenthJoinObserver, + fourteenthJoinObserver, + (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth) => + { + var result = default(TResult); + try + { + result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth); + } + catch (Exception exception) + { + observer.OnError(exception); + return; + } + observer.OnNext(result); + }, + () => + { + firstJoinObserver.RemoveActivePlan(activePlan); + secondJoinObserver.RemoveActivePlan(activePlan); + thirdJoinObserver.RemoveActivePlan(activePlan); + fourthJoinObserver.RemoveActivePlan(activePlan); + fifthJoinObserver.RemoveActivePlan(activePlan); + sixthJoinObserver.RemoveActivePlan(activePlan); + seventhJoinObserver.RemoveActivePlan(activePlan); + eighthJoinObserver.RemoveActivePlan(activePlan); + ninthJoinObserver.RemoveActivePlan(activePlan); + tenthJoinObserver.RemoveActivePlan(activePlan); + eleventhJoinObserver.RemoveActivePlan(activePlan); + twelfthJoinObserver.RemoveActivePlan(activePlan); + thirteenthJoinObserver.RemoveActivePlan(activePlan); + fourteenthJoinObserver.RemoveActivePlan(activePlan); + deactivate(activePlan); + }); + + firstJoinObserver.AddActivePlan(activePlan); + secondJoinObserver.AddActivePlan(activePlan); + thirdJoinObserver.AddActivePlan(activePlan); + fourthJoinObserver.AddActivePlan(activePlan); + fifthJoinObserver.AddActivePlan(activePlan); + sixthJoinObserver.AddActivePlan(activePlan); + seventhJoinObserver.AddActivePlan(activePlan); + eighthJoinObserver.AddActivePlan(activePlan); + ninthJoinObserver.AddActivePlan(activePlan); + tenthJoinObserver.AddActivePlan(activePlan); + eleventhJoinObserver.AddActivePlan(activePlan); + twelfthJoinObserver.AddActivePlan(activePlan); + thirteenthJoinObserver.AddActivePlan(activePlan); + fourteenthJoinObserver.AddActivePlan(activePlan); + return activePlan; + } + } + + internal class Plan : Plan + { + internal Pattern Expression { get; private set; } + + internal Func Selector { get; private set; } + + internal Plan(Pattern expression, + Func selector) + { + Expression = expression; + Selector = selector; + } + + internal override ActivePlan Activate(Dictionary externalSubscriptions, + IObserver observer, Action deactivate) + { + var onError = new Action(observer.OnError); + var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); + var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); + var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); + var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); + var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); + var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); + var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); + var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); + var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); + var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); + var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); + var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); + var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); + var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError); + var fifteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifteenth, onError); + + var activePlan = default(ActivePlan); + + activePlan = new ActivePlan( + firstJoinObserver, secondJoinObserver, thirdJoinObserver, + fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, + seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, + tenthJoinObserver, eleventhJoinObserver, + twelfthJoinObserver, thirteenthJoinObserver, + fourteenthJoinObserver, fifteenthJoinObserver, + (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth) => + { + var result = default(TResult); + try + { + result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth); + } + catch (Exception exception) + { + observer.OnError(exception); + return; + } + observer.OnNext(result); + }, + () => + { + firstJoinObserver.RemoveActivePlan(activePlan); + secondJoinObserver.RemoveActivePlan(activePlan); + thirdJoinObserver.RemoveActivePlan(activePlan); + fourthJoinObserver.RemoveActivePlan(activePlan); + fifthJoinObserver.RemoveActivePlan(activePlan); + sixthJoinObserver.RemoveActivePlan(activePlan); + seventhJoinObserver.RemoveActivePlan(activePlan); + eighthJoinObserver.RemoveActivePlan(activePlan); + ninthJoinObserver.RemoveActivePlan(activePlan); + tenthJoinObserver.RemoveActivePlan(activePlan); + eleventhJoinObserver.RemoveActivePlan(activePlan); + twelfthJoinObserver.RemoveActivePlan(activePlan); + thirteenthJoinObserver.RemoveActivePlan(activePlan); + fourteenthJoinObserver.RemoveActivePlan(activePlan); + fifteenthJoinObserver.RemoveActivePlan(activePlan); + deactivate(activePlan); + }); + + firstJoinObserver.AddActivePlan(activePlan); + secondJoinObserver.AddActivePlan(activePlan); + thirdJoinObserver.AddActivePlan(activePlan); + fourthJoinObserver.AddActivePlan(activePlan); + fifthJoinObserver.AddActivePlan(activePlan); + sixthJoinObserver.AddActivePlan(activePlan); + seventhJoinObserver.AddActivePlan(activePlan); + eighthJoinObserver.AddActivePlan(activePlan); + ninthJoinObserver.AddActivePlan(activePlan); + tenthJoinObserver.AddActivePlan(activePlan); + eleventhJoinObserver.AddActivePlan(activePlan); + twelfthJoinObserver.AddActivePlan(activePlan); + thirteenthJoinObserver.AddActivePlan(activePlan); + fourteenthJoinObserver.AddActivePlan(activePlan); + fifteenthJoinObserver.AddActivePlan(activePlan); + return activePlan; + } + } + internal class Plan : Plan + { + internal Pattern Expression { get; private set; } + + internal Func Selector { get; private set; } + + internal Plan(Pattern expression, + Func selector) + { + Expression = expression; + Selector = selector; + } + + internal override ActivePlan Activate(Dictionary externalSubscriptions, + IObserver observer, Action deactivate) + { + var onError = new Action(observer.OnError); + var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError); + var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError); + var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError); + var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError); + var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError); + var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError); + var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError); + var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError); + var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError); + var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError); + var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError); + var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError); + var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError); + var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError); + var fifteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifteenth, onError); + var sixteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixteenth, onError); + + var activePlan = default(ActivePlan); + + activePlan = new ActivePlan( + firstJoinObserver, secondJoinObserver, thirdJoinObserver, + fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, + seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, + tenthJoinObserver, eleventhJoinObserver, + twelfthJoinObserver, thirteenthJoinObserver, + fourteenthJoinObserver, fifteenthJoinObserver, + sixteenthJoinObserver, + (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth, sixteenth) => + { + var result = default(TResult); + try + { + result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth, sixteenth); + } + catch (Exception exception) + { + observer.OnError(exception); + return; + } + observer.OnNext(result); + }, + () => + { + firstJoinObserver.RemoveActivePlan(activePlan); + secondJoinObserver.RemoveActivePlan(activePlan); + thirdJoinObserver.RemoveActivePlan(activePlan); + fourthJoinObserver.RemoveActivePlan(activePlan); + fifthJoinObserver.RemoveActivePlan(activePlan); + sixthJoinObserver.RemoveActivePlan(activePlan); + seventhJoinObserver.RemoveActivePlan(activePlan); + eighthJoinObserver.RemoveActivePlan(activePlan); + ninthJoinObserver.RemoveActivePlan(activePlan); + tenthJoinObserver.RemoveActivePlan(activePlan); + eleventhJoinObserver.RemoveActivePlan(activePlan); + twelfthJoinObserver.RemoveActivePlan(activePlan); + thirteenthJoinObserver.RemoveActivePlan(activePlan); + fourteenthJoinObserver.RemoveActivePlan(activePlan); + fifteenthJoinObserver.RemoveActivePlan(activePlan); + sixteenthJoinObserver.RemoveActivePlan(activePlan); + deactivate(activePlan); + }); + + firstJoinObserver.AddActivePlan(activePlan); + secondJoinObserver.AddActivePlan(activePlan); + thirdJoinObserver.AddActivePlan(activePlan); + fourthJoinObserver.AddActivePlan(activePlan); + fifthJoinObserver.AddActivePlan(activePlan); + sixthJoinObserver.AddActivePlan(activePlan); + seventhJoinObserver.AddActivePlan(activePlan); + eighthJoinObserver.AddActivePlan(activePlan); + ninthJoinObserver.AddActivePlan(activePlan); + tenthJoinObserver.AddActivePlan(activePlan); + eleventhJoinObserver.AddActivePlan(activePlan); + twelfthJoinObserver.AddActivePlan(activePlan); + thirteenthJoinObserver.AddActivePlan(activePlan); + fourteenthJoinObserver.AddActivePlan(activePlan); + fifteenthJoinObserver.AddActivePlan(activePlan); + sixteenthJoinObserver.AddActivePlan(activePlan); + return activePlan; + } + } } \ No newline at end of file diff --git a/Rx.NET/Source/src/System.Reactive/Joins/QueryablePattern.cs b/Rx.NET/Source/src/System.Reactive/Joins/QueryablePattern.cs index e2be3ded33..261bf080e6 100644 --- a/Rx.NET/Source/src/System.Reactive/Joins/QueryablePattern.cs +++ b/Rx.NET/Source/src/System.Reactive/Joins/QueryablePattern.cs @@ -55,7 +55,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource3)); @@ -79,7 +81,9 @@ public QueryablePattern And(IObservable< public QueryablePlan Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -118,7 +122,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource4)); @@ -142,7 +148,9 @@ public QueryablePattern And(IO public QueryablePlan Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -182,7 +190,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource5)); @@ -206,7 +216,9 @@ public QueryablePattern And Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -247,7 +259,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource6)); @@ -271,7 +285,9 @@ public QueryablePattern Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -313,7 +329,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource7)); @@ -337,7 +355,9 @@ public QueryablePattern Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -380,7 +400,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource8)); @@ -404,7 +426,9 @@ public QueryablePattern Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -448,7 +472,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource9)); @@ -472,7 +498,9 @@ public QueryablePattern Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -517,7 +545,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource10)); @@ -541,7 +571,9 @@ public QueryablePattern Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -587,7 +619,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource11)); @@ -611,7 +645,9 @@ public QueryablePattern Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -658,7 +694,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource12)); @@ -682,7 +720,9 @@ public QueryablePattern Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -730,7 +770,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource13)); @@ -754,7 +796,9 @@ public QueryablePattern Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -803,7 +847,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource14)); @@ -827,7 +873,9 @@ public QueryablePattern Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -877,7 +925,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource15)); @@ -901,7 +951,9 @@ public QueryablePattern Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -952,7 +1004,9 @@ internal QueryablePattern(Expression expression) public QueryablePattern And(IObservable other) { if (other == null) + { throw new ArgumentNullException(nameof(other)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(And)).MakeGenericMethod(typeof(TSource16)); @@ -976,7 +1030,9 @@ public QueryablePattern Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); @@ -1028,7 +1084,9 @@ internal QueryablePattern(Expression expression) public QueryablePlan Then(Expression> selector) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } var t = typeof(QueryablePattern); var m = t.GetMethod(nameof(Then)).MakeGenericMethod(typeof(TResult)); diff --git a/Rx.NET/Source/src/System.Reactive/Linq/LocalQueryMethodImplementationTypeAttribute.cs b/Rx.NET/Source/src/System.Reactive/Linq/LocalQueryMethodImplementationTypeAttribute.cs index 0df9ae44e4..f4aa56862f 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/LocalQueryMethodImplementationTypeAttribute.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/LocalQueryMethodImplementationTypeAttribute.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; using System.ComponentModel; namespace System.Reactive.Linq diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Aggregates.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Aggregates.cs index 2fed56ec79..71e735cda4 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Aggregates.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Aggregates.cs @@ -26,9 +26,14 @@ public static partial class Observable public static IObservable Aggregate(this IObservable source, TAccumulate seed, Func accumulator) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (accumulator == null) + { throw new ArgumentNullException(nameof(accumulator)); + } return s_impl.Aggregate(source, seed, accumulator); } @@ -50,11 +55,19 @@ public static IObservable Aggregate(this IObs public static IObservable Aggregate(this IObservable source, TAccumulate seed, Func accumulator, Func resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (accumulator == null) + { throw new ArgumentNullException(nameof(accumulator)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Aggregate(source, seed, accumulator, resultSelector); } @@ -73,9 +86,14 @@ public static IObservable Aggregate(this public static IObservable Aggregate(this IObservable source, Func accumulator) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (accumulator == null) + { throw new ArgumentNullException(nameof(accumulator)); + } return s_impl.Aggregate(source, accumulator); } @@ -96,9 +114,14 @@ public static IObservable Aggregate(this IObservable public static IObservable All(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.All(source, predicate); } @@ -118,7 +141,9 @@ public static IObservable All(this IObservable source, F public static IObservable Any(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Any(source); } @@ -135,9 +160,14 @@ public static IObservable Any(this IObservable source) public static IObservable Any(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.Any(source, predicate); } @@ -157,7 +187,9 @@ public static IObservable Any(this IObservable source, F public static IObservable Average(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Average(source); } @@ -173,7 +205,9 @@ public static IObservable Average(this IObservable source) public static IObservable Average(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Average(source); } @@ -190,7 +224,9 @@ public static IObservable Average(this IObservable source) public static IObservable Average(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Average(source); } @@ -207,7 +243,9 @@ public static IObservable Average(this IObservable source) public static IObservable Average(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Average(source); } @@ -224,7 +262,9 @@ public static IObservable Average(this IObservable source) public static IObservable Average(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Average(source); } @@ -240,7 +280,9 @@ public static IObservable Average(this IObservable source) public static IObservable Average(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Average(source); } @@ -256,7 +298,9 @@ public static IObservable Average(this IObservable source) public static IObservable Average(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Average(source); } @@ -273,7 +317,9 @@ public static IObservable Average(this IObservable source) public static IObservable Average(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Average(source); } @@ -290,7 +336,9 @@ public static IObservable Average(this IObservable source) public static IObservable Average(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Average(source); } @@ -307,7 +355,9 @@ public static IObservable Average(this IObservable source) public static IObservable Average(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Average(source); } @@ -326,9 +376,14 @@ public static IObservable Average(this IObservable source) public static IObservable Average(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Average(source, selector); } @@ -346,9 +401,14 @@ public static IObservable Average(this IObservable so public static IObservable Average(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Average(source, selector); } @@ -366,9 +426,14 @@ public static IObservable Average(this IObservable sou public static IObservable Average(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Average(source, selector); } @@ -387,9 +452,14 @@ public static IObservable Average(this IObservable sour public static IObservable Average(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Average(source, selector); } @@ -408,9 +478,14 @@ public static IObservable Average(this IObservable sou public static IObservable Average(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Average(source, selector); } @@ -429,9 +504,14 @@ public static IObservable Average(this IObservable sou public static IObservable Average(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Average(source, selector); } @@ -449,9 +529,14 @@ public static IObservable Average(this IObservable sou public static IObservable Average(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Average(source, selector); } @@ -469,9 +554,14 @@ public static IObservable Average(this IObservable sou public static IObservable Average(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Average(source, selector); } @@ -490,9 +580,14 @@ public static IObservable Average(this IObservable sou public static IObservable Average(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Average(source, selector); } @@ -511,9 +606,14 @@ public static IObservable Average(this IObservable sou public static IObservable Average(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Average(source, selector); } @@ -534,7 +634,9 @@ public static IObservable Average(this IObservable sou public static IObservable Contains(this IObservable source, TSource value) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Contains(source, value); } @@ -552,9 +654,14 @@ public static IObservable Contains(this IObservable sour public static IObservable Contains(this IObservable source, TSource value, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.Contains(source, value, comparer); } @@ -575,7 +682,9 @@ public static IObservable Contains(this IObservable sour public static IObservable Count(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Count(source); } @@ -592,9 +701,14 @@ public static IObservable Count(this IObservable source) public static IObservable Count(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.Count(source, predicate); } @@ -616,9 +730,14 @@ public static IObservable Count(this IObservable source, public static IObservable ElementAt(this IObservable source, int index) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (index < 0) + { throw new ArgumentOutOfRangeException(nameof(index)); + } return s_impl.ElementAt(source, index); } @@ -639,9 +758,14 @@ public static IObservable ElementAt(this IObservable public static IObservable ElementAtOrDefault(this IObservable source, int index) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (index < 0) + { throw new ArgumentOutOfRangeException(nameof(index)); + } return s_impl.ElementAtOrDefault(source, index); } @@ -661,7 +785,9 @@ public static IObservable ElementAtOrDefault(this IObservable< public static IObservable FirstAsync(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.FirstAsync(source); } @@ -678,9 +804,14 @@ public static IObservable FirstAsync(this IObservable public static IObservable FirstAsync(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.FirstAsync(source, predicate); } @@ -699,7 +830,9 @@ public static IObservable FirstAsync(this IObservable public static IObservable FirstOrDefaultAsync(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.FirstOrDefaultAsync(source); } @@ -715,9 +848,14 @@ public static IObservable FirstOrDefaultAsync(this IObservable public static IObservable FirstOrDefaultAsync(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.FirstOrDefaultAsync(source, predicate); } @@ -736,7 +874,9 @@ public static IObservable FirstOrDefaultAsync(this IObservable public static IObservable IsEmpty(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.IsEmpty(source); } @@ -756,7 +896,9 @@ public static IObservable IsEmpty(this IObservable sourc public static IObservable LastAsync(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.LastAsync(source); } @@ -773,9 +915,14 @@ public static IObservable LastAsync(this IObservable public static IObservable LastAsync(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.LastAsync(source, predicate); } @@ -794,7 +941,9 @@ public static IObservable LastAsync(this IObservable public static IObservable LastOrDefaultAsync(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.LastOrDefaultAsync(source); } @@ -810,9 +959,14 @@ public static IObservable LastOrDefaultAsync(this IObservable< public static IObservable LastOrDefaultAsync(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.LastOrDefaultAsync(source, predicate); } @@ -833,7 +987,9 @@ public static IObservable LastOrDefaultAsync(this IObservable< public static IObservable LongCount(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.LongCount(source); } @@ -850,9 +1006,14 @@ public static IObservable LongCount(this IObservable sou public static IObservable LongCount(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.LongCount(source, predicate); } @@ -872,7 +1033,9 @@ public static IObservable LongCount(this IObservable sou public static IObservable Max(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Max(source); } @@ -889,9 +1052,14 @@ public static IObservable Max(this IObservable source public static IObservable Max(this IObservable source, IComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.Max(source, comparer); } @@ -906,7 +1074,9 @@ public static IObservable Max(this IObservable source public static IObservable Max(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Max(source); } @@ -921,7 +1091,9 @@ public static IObservable Max(this IObservable source) public static IObservable Max(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Max(source); } @@ -936,7 +1108,9 @@ public static IObservable Max(this IObservable source) public static IObservable Max(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Max(source); } @@ -951,7 +1125,9 @@ public static IObservable Max(this IObservable source) public static IObservable Max(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Max(source); } @@ -966,7 +1142,9 @@ public static IObservable Max(this IObservable source) public static IObservable Max(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Max(source); } @@ -981,7 +1159,9 @@ public static IObservable Max(this IObservable source) public static IObservable Max(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Max(source); } @@ -996,7 +1176,9 @@ public static IObservable Max(this IObservable source) public static IObservable Max(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Max(source); } @@ -1011,7 +1193,9 @@ public static IObservable Max(this IObservable source) public static IObservable Max(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Max(source); } @@ -1026,7 +1210,9 @@ public static IObservable Max(this IObservable source) public static IObservable Max(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Max(source); } @@ -1041,7 +1227,9 @@ public static IObservable Max(this IObservable source) public static IObservable Max(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Max(source); } @@ -1059,9 +1247,14 @@ public static IObservable Max(this IObservable source) public static IObservable Max(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Max(source, selector); } @@ -1080,11 +1273,19 @@ public static IObservable Max(this IObservable Max(this IObservable source, Func selector, IComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.Max(source, selector, comparer); } @@ -1101,9 +1302,14 @@ public static IObservable Max(this IObservable Max(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Max(source, selector); } @@ -1120,9 +1326,14 @@ public static IObservable Max(this IObservable source, public static IObservable Max(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Max(source, selector); } @@ -1139,9 +1350,14 @@ public static IObservable Max(this IObservable source, public static IObservable Max(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Max(source, selector); } @@ -1158,9 +1374,14 @@ public static IObservable Max(this IObservable source public static IObservable Max(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Max(source, selector); } @@ -1177,9 +1398,14 @@ public static IObservable Max(this IObservable source, Fu public static IObservable Max(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Max(source, selector); } @@ -1196,9 +1422,14 @@ public static IObservable Max(this IObservable source, F public static IObservable Max(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Max(source, selector); } @@ -1215,9 +1446,14 @@ public static IObservable Max(this IObservable source, F public static IObservable Max(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Max(source, selector); } @@ -1234,9 +1470,14 @@ public static IObservable Max(this IObservable source, F public static IObservable Max(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Max(source, selector); } @@ -1253,9 +1494,14 @@ public static IObservable Max(this IObservable source, F public static IObservable Max(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Max(source, selector); } @@ -1272,9 +1518,14 @@ public static IObservable Max(this IObservable source, F public static IObservable Max(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Max(source, selector); } @@ -1296,9 +1547,14 @@ public static IObservable Max(this IObservable source, F public static IObservable> MaxBy(this IObservable source, Func keySelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } return s_impl.MaxBy(source, keySelector); } @@ -1317,11 +1573,19 @@ public static IObservable> MaxBy(this IObservable< public static IObservable> MaxBy(this IObservable source, Func keySelector, IComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.MaxBy(source, keySelector, comparer); } @@ -1341,7 +1605,9 @@ public static IObservable> MaxBy(this IObservable< public static IObservable Min(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Min(source); } @@ -1358,9 +1624,14 @@ public static IObservable Min(this IObservable source public static IObservable Min(this IObservable source, IComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.Min(source, comparer); } @@ -1375,7 +1646,9 @@ public static IObservable Min(this IObservable source public static IObservable Min(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Min(source); } @@ -1390,7 +1663,9 @@ public static IObservable Min(this IObservable source) public static IObservable Min(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Min(source); } @@ -1405,7 +1680,9 @@ public static IObservable Min(this IObservable source) public static IObservable Min(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Min(source); } @@ -1420,7 +1697,9 @@ public static IObservable Min(this IObservable source) public static IObservable Min(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Min(source); } @@ -1435,7 +1714,9 @@ public static IObservable Min(this IObservable source) public static IObservable Min(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Min(source); } @@ -1450,7 +1731,9 @@ public static IObservable Min(this IObservable source) public static IObservable Min(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Min(source); } @@ -1465,7 +1748,9 @@ public static IObservable Min(this IObservable source) public static IObservable Min(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Min(source); } @@ -1480,7 +1765,9 @@ public static IObservable Min(this IObservable source) public static IObservable Min(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Min(source); } @@ -1495,7 +1782,9 @@ public static IObservable Min(this IObservable source) public static IObservable Min(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Min(source); } @@ -1510,7 +1799,9 @@ public static IObservable Min(this IObservable source) public static IObservable Min(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Min(source); } @@ -1528,9 +1819,14 @@ public static IObservable Min(this IObservable source) public static IObservable Min(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Min(source, selector); } @@ -1549,11 +1845,19 @@ public static IObservable Min(this IObservable Min(this IObservable source, Func selector, IComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.Min(source, selector, comparer); } @@ -1570,9 +1874,14 @@ public static IObservable Min(this IObservable Min(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Min(source, selector); } @@ -1589,9 +1898,14 @@ public static IObservable Min(this IObservable source, public static IObservable Min(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Min(source, selector); } @@ -1608,9 +1922,14 @@ public static IObservable Min(this IObservable source, public static IObservable Min(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Min(source, selector); } @@ -1627,9 +1946,14 @@ public static IObservable Min(this IObservable source public static IObservable Min(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Min(source, selector); } @@ -1646,9 +1970,14 @@ public static IObservable Min(this IObservable source, Fu public static IObservable Min(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Min(source, selector); } @@ -1665,9 +1994,14 @@ public static IObservable Min(this IObservable source, F public static IObservable Min(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Min(source, selector); } @@ -1684,9 +2018,14 @@ public static IObservable Min(this IObservable source, F public static IObservable Min(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Min(source, selector); } @@ -1703,9 +2042,14 @@ public static IObservable Min(this IObservable source, F public static IObservable Min(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Min(source, selector); } @@ -1722,9 +2066,14 @@ public static IObservable Min(this IObservable source, F public static IObservable Min(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Min(source, selector); } @@ -1741,9 +2090,14 @@ public static IObservable Min(this IObservable source, F public static IObservable Min(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Min(source, selector); } @@ -1765,9 +2119,14 @@ public static IObservable Min(this IObservable source, F public static IObservable> MinBy(this IObservable source, Func keySelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } return s_impl.MinBy(source, keySelector); } @@ -1786,11 +2145,19 @@ public static IObservable> MinBy(this IObservable< public static IObservable> MinBy(this IObservable source, Func keySelector, IComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.MinBy(source, keySelector, comparer); } @@ -1811,9 +2178,14 @@ public static IObservable> MinBy(this IObservable< public static IObservable SequenceEqual(this IObservable first, IObservable second) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } return s_impl.SequenceEqual(first, second); } @@ -1831,11 +2203,19 @@ public static IObservable SequenceEqual(this IObservable public static IObservable SequenceEqual(this IObservable first, IObservable second, IEqualityComparer comparer) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.SequenceEqual(first, second, comparer); } @@ -1852,9 +2232,14 @@ public static IObservable SequenceEqual(this IObservable public static IObservable SequenceEqual(this IObservable first, IEnumerable second) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } return s_impl.SequenceEqual(first, second); } @@ -1872,11 +2257,19 @@ public static IObservable SequenceEqual(this IObservable public static IObservable SequenceEqual(this IObservable first, IEnumerable second, IEqualityComparer comparer) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.SequenceEqual(first, second, comparer); } @@ -1896,7 +2289,9 @@ public static IObservable SequenceEqual(this IObservable public static IObservable SingleAsync(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.SingleAsync(source); } @@ -1913,9 +2308,14 @@ public static IObservable SingleAsync(this IObservable SingleAsync(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.SingleAsync(source, predicate); } @@ -1935,7 +2335,9 @@ public static IObservable SingleAsync(this IObservable SingleOrDefaultAsync(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.SingleOrDefaultAsync(source); } @@ -1952,9 +2354,14 @@ public static IObservable SingleOrDefaultAsync(this IObservabl public static IObservable SingleOrDefaultAsync(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.SingleOrDefaultAsync(source, predicate); } @@ -1973,7 +2380,9 @@ public static IObservable SingleOrDefaultAsync(this IObservabl public static IObservable Sum(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Sum(source); } @@ -1988,7 +2397,9 @@ public static IObservable Sum(this IObservable source) public static IObservable Sum(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Sum(source); } @@ -2004,7 +2415,9 @@ public static IObservable Sum(this IObservable source) public static IObservable Sum(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Sum(source); } @@ -2020,7 +2433,9 @@ public static IObservable Sum(this IObservable source) public static IObservable Sum(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Sum(source); } @@ -2036,7 +2451,9 @@ public static IObservable Sum(this IObservable source) public static IObservable Sum(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Sum(source); } @@ -2051,7 +2468,9 @@ public static IObservable Sum(this IObservable source) public static IObservable Sum(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Sum(source); } @@ -2066,7 +2485,9 @@ public static IObservable Sum(this IObservable source) public static IObservable Sum(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Sum(source); } @@ -2082,7 +2503,9 @@ public static IObservable Sum(this IObservable source) public static IObservable Sum(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Sum(source); } @@ -2098,7 +2521,9 @@ public static IObservable Sum(this IObservable source) public static IObservable Sum(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Sum(source); } @@ -2114,7 +2539,9 @@ public static IObservable Sum(this IObservable source) public static IObservable Sum(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Sum(source); } @@ -2131,9 +2558,14 @@ public static IObservable Sum(this IObservable source) public static IObservable Sum(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Sum(source, selector); } @@ -2150,9 +2582,14 @@ public static IObservable Sum(this IObservable source, public static IObservable Sum(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Sum(source, selector); } @@ -2170,9 +2607,14 @@ public static IObservable Sum(this IObservable source, public static IObservable Sum(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Sum(source, selector); } @@ -2190,9 +2632,14 @@ public static IObservable Sum(this IObservable source public static IObservable Sum(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Sum(source, selector); } @@ -2210,9 +2657,14 @@ public static IObservable Sum(this IObservable source, Fu public static IObservable Sum(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Sum(source, selector); } @@ -2229,9 +2681,14 @@ public static IObservable Sum(this IObservable source, F public static IObservable Sum(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Sum(source, selector); } @@ -2248,9 +2705,14 @@ public static IObservable Sum(this IObservable source, F public static IObservable Sum(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Sum(source, selector); } @@ -2268,9 +2730,14 @@ public static IObservable Sum(this IObservable source, F public static IObservable Sum(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Sum(source, selector); } @@ -2288,9 +2755,14 @@ public static IObservable Sum(this IObservable source, F public static IObservable Sum(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Sum(source, selector); } @@ -2308,9 +2780,14 @@ public static IObservable Sum(this IObservable source, F public static IObservable Sum(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Sum(source, selector); } @@ -2330,7 +2807,9 @@ public static IObservable Sum(this IObservable source, F public static IObservable ToArray(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.ToArray(source); } @@ -2352,9 +2831,14 @@ public static IObservable ToArray(this IObservable public static IObservable> ToDictionary(this IObservable source, Func keySelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } return s_impl.ToDictionary(source, keySelector); } @@ -2373,11 +2857,19 @@ public static IObservable> ToDictionary> ToDictionary(this IObservable source, Func keySelector, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.ToDictionary(source, keySelector, comparer); } @@ -2397,11 +2889,19 @@ public static IObservable> ToDictionary> ToDictionary(this IObservable source, Func keySelector, Func elementSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } return s_impl.ToDictionary(source, keySelector, elementSelector); } @@ -2422,13 +2922,24 @@ public static IObservable> ToDictionary> ToDictionary(this IObservable source, Func keySelector, Func elementSelector, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.ToDictionary(source, keySelector, elementSelector, comparer); } @@ -2448,7 +2959,9 @@ public static IObservable> ToDictionary> ToList(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.ToList(source); } @@ -2470,9 +2983,14 @@ public static IObservable> ToList(this IObservable> ToLookup(this IObservable source, Func keySelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } return s_impl.ToLookup(source, keySelector); } @@ -2491,11 +3009,19 @@ public static IObservable> ToLookup(this I public static IObservable> ToLookup(this IObservable source, Func keySelector, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.ToLookup(source, keySelector, comparer); } @@ -2515,11 +3041,19 @@ public static IObservable> ToLookup(this I public static IObservable> ToLookup(this IObservable source, Func keySelector, Func elementSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } return s_impl.ToLookup(source, keySelector, elementSelector); } @@ -2540,13 +3074,24 @@ public static IObservable> ToLookup> ToLookup(this IObservable source, Func keySelector, Func elementSelector, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.ToLookup(source, keySelector, elementSelector, comparer); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Async.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Async.cs index 2aea7d804e..fa791ee432 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Async.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Async.cs @@ -30,9 +30,14 @@ public static partial class Observable public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -53,9 +58,14 @@ public static Func> FromAsyncPattern(Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -77,9 +87,14 @@ public static Func> FromAsyncPattern public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -102,9 +117,14 @@ public static Func> FromAsyncPattern> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -128,9 +148,14 @@ public static Func> FromAsyncPattern> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -155,9 +180,14 @@ public static Func> FromAsyncPa public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -183,9 +213,14 @@ public static Func> From public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -212,9 +247,14 @@ public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -242,9 +282,14 @@ public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -273,9 +318,14 @@ public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -305,9 +355,14 @@ public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -338,9 +393,14 @@ public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -372,9 +432,14 @@ public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -407,9 +472,14 @@ public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -443,9 +513,14 @@ public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -468,9 +543,14 @@ public static Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -490,9 +570,14 @@ public static Func> FromAsyncPattern(Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -513,9 +598,14 @@ public static Func> FromAsyncPattern(Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -537,9 +627,14 @@ public static Func> FromAsyncPattern> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -562,9 +657,14 @@ public static Func> FromAsyncPattern> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -588,9 +688,14 @@ public static Func> FromAsyncPatte public static Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -615,9 +720,14 @@ public static Func> FromAsy public static Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -643,9 +753,14 @@ public static Func> public static Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -672,9 +787,14 @@ public static Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -702,9 +822,14 @@ public static Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -733,9 +858,14 @@ public static Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -765,9 +895,14 @@ public static Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -798,9 +933,14 @@ public static Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -832,9 +972,14 @@ public static Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -867,9 +1012,14 @@ public static Func> FromAsyncPattern(Func begin, Action end) { if (begin == null) + { throw new ArgumentNullException(nameof(begin)); + } + if (end == null) + { throw new ArgumentNullException(nameof(end)); + } return s_impl.FromAsyncPattern(begin, end); } @@ -898,7 +1048,9 @@ public static Func Start(Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.Start(function); } @@ -920,9 +1072,14 @@ public static IObservable Start(Func function) public static IObservable Start(Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Start(function, scheduler); } @@ -943,7 +1100,9 @@ public static IObservable Start(Func function, ISched public static IObservable StartAsync(Func> functionAsync) { if (functionAsync == null) + { throw new ArgumentNullException(nameof(functionAsync)); + } return s_impl.StartAsync(functionAsync); } @@ -965,9 +1124,14 @@ public static IObservable StartAsync(Func> funct public static IObservable StartAsync(Func> functionAsync, IScheduler scheduler) { if (functionAsync == null) + { throw new ArgumentNullException(nameof(functionAsync)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.StartAsync(functionAsync, scheduler); } @@ -996,7 +1160,9 @@ public static IObservable StartAsync(Func> funct public static IObservable StartAsync(Func> functionAsync) { if (functionAsync == null) + { throw new ArgumentNullException(nameof(functionAsync)); + } return s_impl.StartAsync(functionAsync); } @@ -1026,9 +1192,14 @@ public static IObservable StartAsync(Func StartAsync(Func> functionAsync, IScheduler scheduler) { if (functionAsync == null) + { throw new ArgumentNullException(nameof(functionAsync)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.StartAsync(functionAsync, scheduler); } @@ -1052,7 +1223,9 @@ public static IObservable StartAsync(Func Start(Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.Start(action); } @@ -1073,9 +1246,14 @@ public static IObservable Start(Action action) public static IObservable Start(Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Start(action, scheduler); } @@ -1095,7 +1273,9 @@ public static IObservable Start(Action action, IScheduler scheduler) public static IObservable StartAsync(Func actionAsync) { if (actionAsync == null) + { throw new ArgumentNullException(nameof(actionAsync)); + } return s_impl.StartAsync(actionAsync); } @@ -1116,9 +1296,14 @@ public static IObservable StartAsync(Func actionAsync) public static IObservable StartAsync(Func actionAsync, IScheduler scheduler) { if (actionAsync == null) + { throw new ArgumentNullException(nameof(actionAsync)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.StartAsync(actionAsync, scheduler); } @@ -1146,7 +1331,9 @@ public static IObservable StartAsync(Func actionAsync, IScheduler sc public static IObservable StartAsync(Func actionAsync) { if (actionAsync == null) + { throw new ArgumentNullException(nameof(actionAsync)); + } return s_impl.StartAsync(actionAsync); } @@ -1175,9 +1362,14 @@ public static IObservable StartAsync(Func actionA public static IObservable StartAsync(Func actionAsync, IScheduler scheduler) { if (actionAsync == null) + { throw new ArgumentNullException(nameof(actionAsync)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.StartAsync(actionAsync, scheduler); } @@ -1201,7 +1393,9 @@ public static IObservable StartAsync(Func actionA public static IObservable FromAsync(Func> functionAsync) { if (functionAsync == null) + { throw new ArgumentNullException(nameof(functionAsync)); + } return s_impl.FromAsync(functionAsync); } @@ -1217,9 +1411,14 @@ public static IObservable FromAsync(Func> functi public static IObservable FromAsync(Func> functionAsync, IScheduler scheduler) { if (functionAsync == null) + { throw new ArgumentNullException(nameof(functionAsync)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromAsync(functionAsync, scheduler); } @@ -1236,7 +1435,9 @@ public static IObservable FromAsync(Func> functi public static IObservable FromAsync(Func> functionAsync) { if (functionAsync == null) + { throw new ArgumentNullException(nameof(functionAsync)); + } return s_impl.FromAsync(functionAsync); } @@ -1254,9 +1455,14 @@ public static IObservable FromAsync(Func FromAsync(Func> functionAsync, IScheduler scheduler) { if (functionAsync == null) + { throw new ArgumentNullException(nameof(functionAsync)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromAsync(functionAsync, scheduler); } @@ -1274,7 +1480,9 @@ public static IObservable FromAsync(Func FromAsync(Func actionAsync) { if (actionAsync == null) + { throw new ArgumentNullException(nameof(actionAsync)); + } return s_impl.FromAsync(actionAsync); } @@ -1289,9 +1497,14 @@ public static IObservable FromAsync(Func actionAsync) public static IObservable FromAsync(Func actionAsync, IScheduler scheduler) { if (actionAsync == null) + { throw new ArgumentNullException(nameof(actionAsync)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromAsync(actionAsync, scheduler); } @@ -1307,7 +1520,9 @@ public static IObservable FromAsync(Func actionAsync, IScheduler sch public static IObservable FromAsync(Func actionAsync) { if (actionAsync == null) + { throw new ArgumentNullException(nameof(actionAsync)); + } return s_impl.FromAsync(actionAsync); } @@ -1324,9 +1539,14 @@ public static IObservable FromAsync(Func actionAs public static IObservable FromAsync(Func actionAsync, IScheduler scheduler) { if (actionAsync == null) + { throw new ArgumentNullException(nameof(actionAsync)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromAsync(actionAsync, scheduler); } @@ -1351,7 +1571,9 @@ public static IObservable FromAsync(Func actionAs public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1367,9 +1589,14 @@ public static Func> ToAsync(this Func fun public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1385,7 +1612,9 @@ public static Func> ToAsync(this Func fun public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1402,9 +1631,14 @@ public static Func> ToAsync(this Fun public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1421,7 +1655,9 @@ public static Func> ToAsync(this Fun public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1439,9 +1675,14 @@ public static Func> ToAsync> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1459,7 +1700,9 @@ public static Func> ToAsync> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1478,9 +1721,14 @@ public static Func> ToAsync> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1499,7 +1747,9 @@ public static Func> ToAsync> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1519,9 +1769,14 @@ public static Func> ToAsync> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1541,7 +1796,9 @@ public static Func> ToAsync> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1562,9 +1819,14 @@ public static Func> ToAs public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1585,7 +1847,9 @@ public static Func> ToAs public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1607,9 +1871,14 @@ public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1631,7 +1900,9 @@ public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1654,9 +1925,14 @@ public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1679,7 +1955,9 @@ public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1703,9 +1981,14 @@ public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1729,7 +2012,9 @@ public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1754,9 +2039,14 @@ public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1781,7 +2071,9 @@ public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1807,9 +2099,14 @@ public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1835,7 +2132,9 @@ public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1862,9 +2161,14 @@ public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1891,7 +2195,9 @@ public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1919,9 +2225,14 @@ public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -1949,7 +2260,9 @@ public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -1978,9 +2291,14 @@ public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -2009,7 +2327,9 @@ public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -2039,9 +2359,14 @@ public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -2071,7 +2396,9 @@ public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -2102,9 +2429,14 @@ public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -2135,7 +2467,9 @@ public static Func> ToAsync(this Func function) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } return s_impl.ToAsync(function); } @@ -2167,9 +2501,14 @@ public static Func> ToAsync(this Func function, IScheduler scheduler) { if (function == null) + { throw new ArgumentNullException(nameof(function)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(function, scheduler); } @@ -2187,7 +2526,9 @@ public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2202,9 +2543,14 @@ public static Func> ToAsync(this Action action) public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2219,7 +2565,9 @@ public static Func> ToAsync(this Action action, IScheduler sch public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2235,9 +2583,14 @@ public static Func> ToAsync(this Action a public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2253,7 +2606,9 @@ public static Func> ToAsync(this Action a public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2270,9 +2625,14 @@ public static Func> ToAsync(this A public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2289,7 +2649,9 @@ public static Func> ToAsync(this A public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2307,9 +2669,14 @@ public static Func> ToAsync> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2327,7 +2694,9 @@ public static Func> ToAsync> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2346,9 +2715,14 @@ public static Func> ToAsync> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2367,7 +2741,9 @@ public static Func> ToAsync> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2387,9 +2763,14 @@ public static Func> ToAsync public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2409,7 +2790,9 @@ public static Func> ToAsync public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2430,9 +2813,14 @@ public static Func> public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2453,7 +2841,9 @@ public static Func> public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2475,9 +2865,14 @@ public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2499,7 +2894,9 @@ public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2522,9 +2919,14 @@ public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2547,7 +2949,9 @@ public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2571,9 +2975,14 @@ public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2597,7 +3006,9 @@ public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2622,9 +3033,14 @@ public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2649,7 +3065,9 @@ public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2675,9 +3093,14 @@ public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2703,7 +3126,9 @@ public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2730,9 +3155,14 @@ public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2759,7 +3189,9 @@ public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2787,9 +3219,14 @@ public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2817,7 +3254,9 @@ public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2846,9 +3285,14 @@ public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2877,7 +3321,9 @@ public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2907,9 +3353,14 @@ public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } @@ -2939,7 +3390,9 @@ public static Func> ToAsync(this Action action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } return s_impl.ToAsync(action); } @@ -2970,9 +3423,14 @@ public static Func> ToAsync(this Action action, IScheduler scheduler) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToAsync(action, scheduler); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Awaiter.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Awaiter.cs index 8d86c92957..8e9aa21596 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Awaiter.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Awaiter.cs @@ -2,9 +2,8 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Threading; -using System.Reactive.Disposables; using System.Reactive.Subjects; +using System.Threading; namespace System.Reactive.Linq { @@ -21,7 +20,9 @@ public static partial class Observable public static AsyncSubject GetAwaiter(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.GetAwaiter(source); } @@ -37,7 +38,9 @@ public static AsyncSubject GetAwaiter(this IObservable GetAwaiter(this IConnectableObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.GetAwaiter(source); } @@ -54,7 +57,9 @@ public static AsyncSubject GetAwaiter(this IConnectableObserva public static AsyncSubject RunAsync(this IObservable source, CancellationToken cancellationToken) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.RunAsync(source, cancellationToken); } @@ -71,7 +76,9 @@ public static AsyncSubject RunAsync(this IObservable public static AsyncSubject RunAsync(this IConnectableObservable source, CancellationToken cancellationToken) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.RunAsync(source, cancellationToken); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Binding.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Binding.cs index a81fbb072f..a2eccc81b4 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Binding.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Binding.cs @@ -7,7 +7,7 @@ namespace System.Reactive.Linq { - public static partial class Observable + public static partial class Observable { #region + Multicast + @@ -25,9 +25,14 @@ public static partial class Observable public static IConnectableObservable Multicast(this IObservable source, ISubject subject) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (subject == null) + { throw new ArgumentNullException(nameof(subject)); + } return s_impl.Multicast(source, subject); } @@ -48,11 +53,19 @@ public static IConnectableObservable Multicast(this I public static IObservable Multicast(this IObservable source, Func> subjectSelector, Func, IObservable> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (subjectSelector == null) + { throw new ArgumentNullException(nameof(subjectSelector)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Multicast(source, subjectSelector, selector); } @@ -74,7 +87,9 @@ public static IObservable Multicast(th public static IConnectableObservable Publish(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Publish(source); } @@ -93,9 +108,14 @@ public static IConnectableObservable Publish(this IObservable< public static IObservable Publish(this IObservable source, Func, IObservable> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Publish(source, selector); } @@ -114,7 +134,9 @@ public static IObservable Publish(this IObservable Publish(this IObservable source, TSource initialValue) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Publish(source, initialValue); } @@ -134,9 +156,14 @@ public static IConnectableObservable Publish(this IObservable< public static IObservable Publish(this IObservable source, Func, IObservable> selector, TSource initialValue) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Publish(source, selector, initialValue); } @@ -158,7 +185,9 @@ public static IObservable Publish(this IObservable PublishLast(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.PublishLast(source); } @@ -177,9 +206,14 @@ public static IConnectableObservable PublishLast(this IObserva public static IObservable PublishLast(this IObservable source, Func, IObservable> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.PublishLast(source, selector); } @@ -198,7 +232,9 @@ public static IObservable PublishLast(this IObservabl public static IObservable RefCount(this IConnectableObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.RefCount(source); } @@ -214,10 +250,14 @@ public static IObservable RefCount(this IConnectableObservable public static IObservable RefCount(this IConnectableObservable source, TimeSpan disconnectDelay) { if (source == null) + { throw new ArgumentNullException("source"); + } if (disconnectDelay < TimeSpan.Zero) + { throw new ArgumentException("disconnectDelay"); + } return s_impl.RefCount(source, disconnectDelay); } @@ -234,13 +274,19 @@ public static IObservable RefCount(this IConnectableObservable public static IObservable RefCount(this IConnectableObservable source, TimeSpan disconnectDelay, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException("source"); + } if (scheduler == null) + { throw new ArgumentNullException("scheduler"); + } if (disconnectDelay < TimeSpan.Zero) + { throw new ArgumentException("disconnectDelay"); + } return s_impl.RefCount(source, disconnectDelay, scheduler); } @@ -262,7 +308,9 @@ public static IObservable RefCount(this IConnectableObservable public static IObservable AutoConnect(this IConnectableObservable source, int minObservers = 1, Action onConnect = null) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.AutoConnect(source, minObservers, onConnect); } @@ -284,7 +332,9 @@ public static IObservable AutoConnect(this IConnectableObserva public static IConnectableObservable Replay(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Replay(source); } @@ -303,9 +353,14 @@ public static IConnectableObservable Replay(this IObservable Replay(this IObservable source, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Replay(source, scheduler); } @@ -324,9 +379,14 @@ public static IConnectableObservable Replay(this IObservable Replay(this IObservable source, Func, IObservable> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Replay(source, selector); } @@ -346,11 +406,19 @@ public static IObservable Replay(this IObservable Replay(this IObservable source, Func, IObservable> selector, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Replay(source, selector, scheduler); } @@ -370,9 +438,14 @@ public static IObservable Replay(this IObservable Replay(this IObservable source, TimeSpan window) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (window < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(window)); + } return s_impl.Replay(source, window); } @@ -393,11 +466,19 @@ public static IConnectableObservable Replay(this IObservable Replay(this IObservable source, Func, IObservable> selector, TimeSpan window) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (window < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(window)); + } return s_impl.Replay(source, selector, window); } @@ -418,11 +499,19 @@ public static IObservable Replay(this IObservable Replay(this IObservable source, TimeSpan window, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (window < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(window)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Replay(source, window, scheduler); } @@ -444,13 +533,24 @@ public static IConnectableObservable Replay(this IObservable Replay(this IObservable source, Func, IObservable> selector, TimeSpan window, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (window < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(window)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Replay(source, selector, window, scheduler); } @@ -471,11 +571,19 @@ public static IObservable Replay(this IObservable Replay(this IObservable source, int bufferSize, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (bufferSize < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferSize)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Replay(source, bufferSize, scheduler); } @@ -497,13 +605,24 @@ public static IConnectableObservable Replay(this IObservable Replay(this IObservable source, Func, IObservable> selector, int bufferSize, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (bufferSize < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferSize)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Replay(source, selector, bufferSize, scheduler); } @@ -523,9 +642,14 @@ public static IObservable Replay(this IObservable Replay(this IObservable source, int bufferSize) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (bufferSize < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferSize)); + } return s_impl.Replay(source, bufferSize); } @@ -546,11 +670,19 @@ public static IConnectableObservable Replay(this IObservable Replay(this IObservable source, Func, IObservable> selector, int bufferSize) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (bufferSize < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferSize)); + } return s_impl.Replay(source, selector, bufferSize); } @@ -572,11 +704,19 @@ public static IObservable Replay(this IObservable Replay(this IObservable source, int bufferSize, TimeSpan window) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (bufferSize < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferSize)); + } + if (window < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(window)); + } return s_impl.Replay(source, bufferSize, window); } @@ -599,13 +739,24 @@ public static IConnectableObservable Replay(this IObservable Replay(this IObservable source, Func, IObservable> selector, int bufferSize, TimeSpan window) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (bufferSize < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferSize)); + } + if (window < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(window)); + } return s_impl.Replay(source, selector, bufferSize, window); } @@ -628,13 +779,24 @@ public static IObservable Replay(this IObservable Replay(this IObservable source, int bufferSize, TimeSpan window, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (bufferSize < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferSize)); + } + if (window < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(window)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Replay(source, bufferSize, window, scheduler); } @@ -658,15 +820,29 @@ public static IConnectableObservable Replay(this IObservable Replay(this IObservable source, Func, IObservable> selector, int bufferSize, TimeSpan window, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (bufferSize < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferSize)); + } + if (window < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(window)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Replay(source, selector, bufferSize, window, scheduler); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Blocking.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Blocking.cs index 6aaedc2826..2b6912228e 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Blocking.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Blocking.cs @@ -20,7 +20,9 @@ public static partial class Observable public static IEnumerable> Chunkify(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Chunkify(source); } @@ -42,11 +44,19 @@ public static IEnumerable> Chunkify(this IObservable Collect(this IObservable source, Func newCollector, Func merge) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (newCollector == null) + { throw new ArgumentNullException(nameof(newCollector)); + } + if (merge == null) + { throw new ArgumentNullException(nameof(merge)); + } return s_impl.Collect(source, newCollector, merge); } @@ -65,13 +75,24 @@ public static IEnumerable Collect(this IObservable Collect(this IObservable source, Func getInitialCollector, Func merge, Func getNewCollector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (getInitialCollector == null) + { throw new ArgumentNullException(nameof(getInitialCollector)); + } + if (merge == null) + { throw new ArgumentNullException(nameof(merge)); + } + if (getNewCollector == null) + { throw new ArgumentNullException(nameof(getNewCollector)); + } return s_impl.Collect(source, getInitialCollector, merge, getNewCollector); } @@ -95,7 +116,9 @@ public static IEnumerable Collect(this IObservable(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.First(source); } @@ -116,9 +139,14 @@ public static TSource First(this IObservable source) public static TSource First(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.First(source, predicate); } @@ -141,7 +169,9 @@ public static TSource First(this IObservable source, Func(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.FirstOrDefault(source); } @@ -161,9 +191,14 @@ public static TSource FirstOrDefault(this IObservable source) public static TSource FirstOrDefault(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.FirstOrDefault(source, predicate); } @@ -186,9 +221,14 @@ public static TSource FirstOrDefault(this IObservable source, public static void ForEach(this IObservable source, Action onNext) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } s_impl.ForEach(source, onNext); } @@ -207,9 +247,14 @@ public static void ForEach(this IObservable source, Action(this IObservable source, Action onNext) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } s_impl.ForEach(source, onNext); } @@ -228,7 +273,9 @@ public static void ForEach(this IObservable source, Action GetEnumerator(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.GetEnumerator(source); } @@ -252,7 +299,9 @@ public static IEnumerator GetEnumerator(this IObservable(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Last(source); } @@ -273,9 +322,14 @@ public static TSource Last(this IObservable source) public static TSource Last(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.Last(source, predicate); } @@ -298,7 +352,9 @@ public static TSource Last(this IObservable source, Func(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.LastOrDefault(source); } @@ -318,9 +374,14 @@ public static TSource LastOrDefault(this IObservable source) public static TSource LastOrDefault(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.LastOrDefault(source, predicate); } @@ -339,7 +400,9 @@ public static TSource LastOrDefault(this IObservable source, F public static IEnumerable Latest(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Latest(source); } @@ -360,7 +423,9 @@ public static IEnumerable Latest(this IObservable sou public static IEnumerable MostRecent(this IObservable source, TSource initialValue) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.MostRecent(source, initialValue); } @@ -380,7 +445,9 @@ public static IEnumerable MostRecent(this IObservable public static IEnumerable Next(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Next(source); } @@ -404,7 +471,9 @@ public static IEnumerable Next(this IObservable sourc public static TSource Single(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Single(source); } @@ -425,9 +494,14 @@ public static TSource Single(this IObservable source) public static TSource Single(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.Single(source, predicate); } @@ -451,7 +525,9 @@ public static TSource Single(this IObservable source, Func(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.SingleOrDefault(source); } @@ -472,9 +548,14 @@ public static TSource SingleOrDefault(this IObservable source) public static TSource SingleOrDefault(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.SingleOrDefault(source, predicate); } @@ -495,7 +576,9 @@ public static TSource SingleOrDefault(this IObservable source, public static TSource Wait(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Wait(source); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Concurrency.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Concurrency.cs index 55aaa5a4b8..e28166ecec 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Concurrency.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Concurrency.cs @@ -26,9 +26,14 @@ public static partial class Observable public static IObservable ObserveOn(this IObservable source, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ObserveOn(source, scheduler); } @@ -48,9 +53,14 @@ public static IObservable ObserveOn(this IObservable public static IObservable ObserveOn(this IObservable source, SynchronizationContext context) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (context == null) + { throw new ArgumentNullException(nameof(context)); + } return s_impl.ObserveOn(source, context); } @@ -75,9 +85,14 @@ public static IObservable ObserveOn(this IObservable public static IObservable SubscribeOn(this IObservable source, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.SubscribeOn(source, scheduler); } @@ -98,9 +113,14 @@ public static IObservable SubscribeOn(this IObservable SubscribeOn(this IObservable source, SynchronizationContext context) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (context == null) + { throw new ArgumentNullException(nameof(context)); + } return s_impl.SubscribeOn(source, context); } @@ -124,7 +144,9 @@ public static IObservable SubscribeOn(this IObservable Synchronize(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Synchronize(source); } @@ -141,9 +163,14 @@ public static IObservable Synchronize(this IObservable Synchronize(this IObservable source, object gate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (gate == null) + { throw new ArgumentNullException(nameof(gate)); + } return s_impl.Synchronize(source, gate); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Conversions.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Conversions.cs index c2257dedad..fd6edd32ba 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Conversions.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Conversions.cs @@ -22,9 +22,14 @@ public static partial class Observable public static IDisposable Subscribe(this IEnumerable source, IObserver observer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return s_impl.Subscribe(source, observer); } @@ -41,11 +46,19 @@ public static IDisposable Subscribe(this IEnumerable source, I public static IDisposable Subscribe(this IEnumerable source, IObserver observer, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Subscribe(source, observer, scheduler); } @@ -64,7 +77,9 @@ public static IDisposable Subscribe(this IEnumerable source, I public static IEnumerable ToEnumerable(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.ToEnumerable(source); } @@ -82,7 +97,9 @@ public static IEnumerable ToEnumerable(this IObservable ToEvent(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.ToEvent(source); } @@ -97,7 +114,9 @@ public static IEventSource ToEvent(this IObservable source) public static IEventSource ToEvent(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.ToEvent(source); } @@ -116,7 +135,9 @@ public static IEventSource ToEvent(this IObservable s public static IEventPatternSource ToEventPattern(this IObservable> source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.ToEventPattern(source); } @@ -135,7 +156,9 @@ public static IEventPatternSource ToEventPattern(this IO public static IObservable ToObservable(this IEnumerable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.ToObservable(source); } @@ -151,9 +174,14 @@ public static IObservable ToObservable(this IEnumerable ToObservable(this IEnumerable source, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ToObservable(source, scheduler); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Creation.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Creation.cs index 98edfed5e5..ed89103233 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Creation.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Creation.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Collections.Generic; using System.Reactive.Concurrency; using System.Threading; using System.Threading.Tasks; @@ -28,7 +27,9 @@ public static partial class Observable public static IObservable Create(Func, IDisposable> subscribe) { if (subscribe == null) + { throw new ArgumentNullException(nameof(subscribe)); + } return s_impl.Create(subscribe); } @@ -48,7 +49,9 @@ public static IObservable Create(Func, IDis public static IObservable Create(Func, Action> subscribe) { if (subscribe == null) + { throw new ArgumentNullException(nameof(subscribe)); + } return s_impl.Create(subscribe); } @@ -70,7 +73,9 @@ public static IObservable Create(Func, Acti public static IObservable Create(Func, CancellationToken, Task> subscribeAsync) { if (subscribeAsync == null) + { throw new ArgumentNullException(nameof(subscribeAsync)); + } return s_impl.Create(subscribeAsync); } @@ -86,7 +91,9 @@ public static IObservable Create(Func, Canc public static IObservable Create(Func, Task> subscribeAsync) { if (subscribeAsync == null) + { throw new ArgumentNullException(nameof(subscribeAsync)); + } return s_impl.Create(subscribeAsync); } @@ -104,7 +111,9 @@ public static IObservable Create(Func, Task public static IObservable Create(Func, CancellationToken, Task> subscribeAsync) { if (subscribeAsync == null) + { throw new ArgumentNullException(nameof(subscribeAsync)); + } return s_impl.Create(subscribeAsync); } @@ -120,7 +129,9 @@ public static IObservable Create(Func, Canc public static IObservable Create(Func, Task> subscribeAsync) { if (subscribeAsync == null) + { throw new ArgumentNullException(nameof(subscribeAsync)); + } return s_impl.Create(subscribeAsync); } @@ -138,7 +149,9 @@ public static IObservable Create(Func, Task public static IObservable Create(Func, CancellationToken, Task> subscribeAsync) { if (subscribeAsync == null) + { throw new ArgumentNullException(nameof(subscribeAsync)); + } return s_impl.Create(subscribeAsync); } @@ -154,7 +167,9 @@ public static IObservable Create(Func, Canc public static IObservable Create(Func, Task> subscribeAsync) { if (subscribeAsync == null) + { throw new ArgumentNullException(nameof(subscribeAsync)); + } return s_impl.Create(subscribeAsync); } @@ -173,7 +188,9 @@ public static IObservable Create(Func, Task public static IObservable Defer(Func> observableFactory) { if (observableFactory == null) + { throw new ArgumentNullException(nameof(observableFactory)); + } return s_impl.Defer(observableFactory); } @@ -193,7 +210,9 @@ public static IObservable Defer(Func> obs public static IObservable Defer(Func>> observableFactoryAsync) { if (observableFactoryAsync == null) + { throw new ArgumentNullException(nameof(observableFactoryAsync)); + } return s_impl.Defer(observableFactoryAsync); } @@ -211,7 +230,9 @@ public static IObservable Defer(Func public static IObservable DeferAsync(Func>> observableFactoryAsync) { if (observableFactoryAsync == null) + { throw new ArgumentNullException(nameof(observableFactoryAsync)); + } return s_impl.Defer(observableFactoryAsync); } @@ -251,7 +272,9 @@ public static IObservable Empty(TResult witness) public static IObservable Empty(IScheduler scheduler) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Empty(scheduler); } @@ -267,7 +290,9 @@ public static IObservable Empty(IScheduler scheduler) public static IObservable Empty(IScheduler scheduler, TResult witness) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Empty(scheduler); // Pure inference - no specialized target method. } @@ -290,11 +315,19 @@ public static IObservable Empty(IScheduler scheduler, TResult public static IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector) { if (condition == null) + { throw new ArgumentNullException(nameof(condition)); + } + if (iterate == null) + { throw new ArgumentNullException(nameof(iterate)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Generate(initialState, condition, iterate, resultSelector); } @@ -314,13 +347,24 @@ public static IObservable Generate(TState initialState public static IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector, IScheduler scheduler) { if (condition == null) + { throw new ArgumentNullException(nameof(condition)); + } + if (iterate == null) + { throw new ArgumentNullException(nameof(iterate)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Generate(initialState, condition, iterate, resultSelector, scheduler); } @@ -365,7 +409,9 @@ public static IObservable Range(int start, int count) { var max = ((long)start) + count - 1; if (count < 0 || max > int.MaxValue) + { throw new ArgumentOutOfRangeException(nameof(count)); + } return s_impl.Range(start, count); } @@ -383,10 +429,14 @@ public static IObservable Range(int start, int count, IScheduler scheduler) { var max = ((long)start) + count - 1; if (count < 0 || max > int.MaxValue) + { throw new ArgumentOutOfRangeException(nameof(count)); + } if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Range(start, count, scheduler); } @@ -417,7 +467,9 @@ public static IObservable Repeat(TResult value) public static IObservable Repeat(TResult value, IScheduler scheduler) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Repeat(value, scheduler); } @@ -433,7 +485,9 @@ public static IObservable Repeat(TResult value, IScheduler sch public static IObservable Repeat(TResult value, int repeatCount) { if (repeatCount < 0) + { throw new ArgumentOutOfRangeException(nameof(repeatCount)); + } return s_impl.Repeat(value, repeatCount); } @@ -451,9 +505,14 @@ public static IObservable Repeat(TResult value, int repeatCoun public static IObservable Repeat(TResult value, int repeatCount, IScheduler scheduler) { if (repeatCount < 0) + { throw new ArgumentOutOfRangeException(nameof(repeatCount)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Repeat(value, repeatCount, scheduler); } @@ -484,7 +543,9 @@ public static IObservable Return(TResult value) public static IObservable Return(TResult value, IScheduler scheduler) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Return(value, scheduler); } @@ -503,7 +564,9 @@ public static IObservable Return(TResult value, IScheduler sch public static IObservable Throw(Exception exception) { if (exception == null) + { throw new ArgumentNullException(nameof(exception)); + } return s_impl.Throw(exception); } @@ -519,7 +582,9 @@ public static IObservable Throw(Exception exception) public static IObservable Throw(Exception exception, TResult witness) { if (exception == null) + { throw new ArgumentNullException(nameof(exception)); + } return s_impl.Throw(exception); // Pure inference - no specialized target method. } @@ -535,9 +600,14 @@ public static IObservable Throw(Exception exception, TResult w public static IObservable Throw(Exception exception, IScheduler scheduler) { if (exception == null) + { throw new ArgumentNullException(nameof(exception)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Throw(exception, scheduler); } @@ -554,9 +624,14 @@ public static IObservable Throw(Exception exception, ISchedule public static IObservable Throw(Exception exception, IScheduler scheduler, TResult witness) { if (exception == null) + { throw new ArgumentNullException(nameof(exception)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Throw(exception, scheduler); // Pure inference - no specialized target method. } @@ -577,9 +652,14 @@ public static IObservable Throw(Exception exception, ISchedule public static IObservable Using(Func resourceFactory, Func> observableFactory) where TResource : IDisposable { if (resourceFactory == null) + { throw new ArgumentNullException(nameof(resourceFactory)); + } + if (observableFactory == null) + { throw new ArgumentNullException(nameof(observableFactory)); + } return s_impl.Using(resourceFactory, observableFactory); } @@ -603,9 +683,14 @@ public static IObservable Using(Func res public static IObservable Using(Func> resourceFactoryAsync, Func>> observableFactoryAsync) where TResource : IDisposable { if (resourceFactoryAsync == null) + { throw new ArgumentNullException(nameof(resourceFactoryAsync)); + } + if (observableFactoryAsync == null) + { throw new ArgumentNullException(nameof(observableFactoryAsync)); + } return s_impl.Using(resourceFactoryAsync, observableFactoryAsync); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Events.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Events.cs index f554ef135f..48aee866e2 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Events.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Events.cs @@ -47,9 +47,14 @@ public static partial class Observable public static IObservable> FromEventPattern(Action addHandler, Action removeHandler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } return s_impl.FromEventPattern(addHandler, removeHandler); } @@ -83,11 +88,19 @@ public static IObservable> FromEventPattern(Action> FromEventPattern(Action addHandler, Action removeHandler, IScheduler scheduler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEventPattern(addHandler, removeHandler, scheduler); } @@ -130,9 +143,14 @@ public static IObservable> FromEventPattern(Action> FromEventPattern(Action addHandler, Action removeHandler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } return s_impl.FromEventPattern(addHandler, removeHandler); } @@ -168,11 +186,19 @@ public static IObservable> FromEventPattern> FromEventPattern(Action addHandler, Action removeHandler, IScheduler scheduler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEventPattern(addHandler, removeHandler, scheduler); } @@ -212,11 +238,19 @@ public static IObservable> FromEventPattern> FromEventPattern(Func, TDelegate> conversion, Action addHandler, Action removeHandler) { if (conversion == null) + { throw new ArgumentNullException(nameof(conversion)); + } + if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } return s_impl.FromEventPattern(conversion, addHandler, removeHandler); } @@ -253,13 +287,24 @@ public static IObservable> FromEventPattern> FromEventPattern(Func, TDelegate> conversion, Action addHandler, Action removeHandler, IScheduler scheduler) { if (conversion == null) + { throw new ArgumentNullException(nameof(conversion)); + } + if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEventPattern(conversion, addHandler, removeHandler, scheduler); } @@ -299,9 +344,14 @@ public static IObservable> FromEventPattern> FromEventPattern(Action addHandler, Action removeHandler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } return s_impl.FromEventPattern(addHandler, removeHandler); } @@ -338,11 +388,19 @@ public static IObservable> FromEventPattern> FromEventPattern(Action addHandler, Action removeHandler, IScheduler scheduler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEventPattern(addHandler, removeHandler, scheduler); } @@ -383,9 +441,14 @@ public static IObservable> FromEventPattern> FromEventPattern(Action> addHandler, Action> removeHandler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } return s_impl.FromEventPattern(addHandler, removeHandler); } @@ -419,11 +482,19 @@ public static IObservable> FromEventPattern public static IObservable> FromEventPattern(Action> addHandler, Action> removeHandler, IScheduler scheduler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEventPattern(addHandler, removeHandler, scheduler); } @@ -470,9 +541,14 @@ public static IObservable> FromEventPattern public static IObservable> FromEventPattern(object target, string eventName) { if (target == null) + { throw new ArgumentNullException(nameof(target)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } return s_impl.FromEventPattern(target, eventName); } @@ -508,12 +584,20 @@ public static IObservable> FromEventPattern(object target, public static IObservable> FromEventPattern(object target, string eventName, IScheduler scheduler) { if (target == null) + { throw new ArgumentNullException(nameof(target)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); - + } + return s_impl.FromEventPattern(target, eventName, scheduler); } @@ -552,9 +636,14 @@ public static IObservable> FromEventPattern(object target, public static IObservable> FromEventPattern(object target, string eventName) { if (target == null) + { throw new ArgumentNullException(nameof(target)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } return s_impl.FromEventPattern(target, eventName); } @@ -591,11 +680,19 @@ public static IObservable> FromEventPattern public static IObservable> FromEventPattern(object target, string eventName, IScheduler scheduler) { if (target == null) + { throw new ArgumentNullException(nameof(target)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEventPattern(target, eventName, scheduler); } @@ -636,9 +733,14 @@ public static IObservable> FromEventPattern public static IObservable> FromEventPattern(object target, string eventName) { if (target == null) + { throw new ArgumentNullException(nameof(target)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } return s_impl.FromEventPattern(target, eventName); } @@ -676,11 +778,19 @@ public static IObservable> FromEventPattern> FromEventPattern(object target, string eventName, IScheduler scheduler) { if (target == null) + { throw new ArgumentNullException(nameof(target)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEventPattern(target, eventName, scheduler); } @@ -723,9 +833,14 @@ public static IObservable> FromEventPattern> FromEventPattern(Type type, string eventName) { if (type == null) + { throw new ArgumentNullException(nameof(type)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } return s_impl.FromEventPattern(type, eventName); } @@ -761,11 +876,19 @@ public static IObservable> FromEventPattern(Type type, stri public static IObservable> FromEventPattern(Type type, string eventName, IScheduler scheduler) { if (type == null) + { throw new ArgumentNullException(nameof(type)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEventPattern(type, eventName, scheduler); } @@ -805,9 +928,14 @@ public static IObservable> FromEventPattern(Type type, stri public static IObservable> FromEventPattern(Type type, string eventName) { if (type == null) + { throw new ArgumentNullException(nameof(type)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } return s_impl.FromEventPattern(type, eventName); } @@ -844,11 +972,19 @@ public static IObservable> FromEventPattern public static IObservable> FromEventPattern(Type type, string eventName, IScheduler scheduler) { if (type == null) + { throw new ArgumentNullException(nameof(type)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEventPattern(type, eventName, scheduler); } @@ -889,9 +1025,14 @@ public static IObservable> FromEventPattern public static IObservable> FromEventPattern(Type type, string eventName) { if (type == null) + { throw new ArgumentNullException(nameof(type)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } return s_impl.FromEventPattern(type, eventName); } @@ -929,11 +1070,19 @@ public static IObservable> FromEventPattern> FromEventPattern(Type type, string eventName, IScheduler scheduler) { if (type == null) + { throw new ArgumentNullException(nameof(type)); + } + if (eventName == null) + { throw new ArgumentNullException(nameof(eventName)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEventPattern(type, eventName, scheduler); } @@ -982,11 +1131,19 @@ public static IObservable> FromEventPattern FromEvent(Func, TDelegate> conversion, Action addHandler, Action removeHandler) { if (conversion == null) + { throw new ArgumentNullException(nameof(conversion)); + } + if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } return s_impl.FromEvent(conversion, addHandler, removeHandler); } @@ -1022,13 +1179,24 @@ public static IObservable FromEvent(Func FromEvent(Func, TDelegate> conversion, Action addHandler, Action removeHandler, IScheduler scheduler) { if (conversion == null) + { throw new ArgumentNullException(nameof(conversion)); + } + if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEvent(conversion, addHandler, removeHandler, scheduler); } @@ -1066,9 +1234,14 @@ public static IObservable FromEvent(Func FromEvent(Action addHandler, Action removeHandler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } return s_impl.FromEvent(addHandler, removeHandler); } @@ -1103,11 +1276,19 @@ public static IObservable FromEvent(Action FromEvent(Action addHandler, Action removeHandler, IScheduler scheduler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEvent(addHandler, removeHandler, scheduler); } @@ -1148,9 +1329,14 @@ public static IObservable FromEvent(Action FromEvent(Action> addHandler, Action> removeHandler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } return s_impl.FromEvent(addHandler, removeHandler); } @@ -1184,11 +1370,19 @@ public static IObservable FromEvent(Action FromEvent(Action> addHandler, Action> removeHandler, IScheduler scheduler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEvent(addHandler, removeHandler, scheduler); } @@ -1228,9 +1422,14 @@ public static IObservable FromEvent(Action FromEvent(Action addHandler, Action removeHandler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } return s_impl.FromEvent(addHandler, removeHandler); } @@ -1263,11 +1462,19 @@ public static IObservable FromEvent(Action addHandler, Action FromEvent(Action addHandler, Action removeHandler, IScheduler scheduler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.FromEvent(addHandler, removeHandler, scheduler); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Imperative.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Imperative.cs index 4675642c70..35a12a4f17 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Imperative.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Imperative.cs @@ -25,9 +25,14 @@ public static partial class Observable public static Task ForEachAsync(this IObservable source, Action onNext) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } return s_impl.ForEachAsync(source, onNext); } @@ -46,9 +51,14 @@ public static Task ForEachAsync(this IObservable source, Actio public static Task ForEachAsync(this IObservable source, Action onNext, CancellationToken cancellationToken) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } return s_impl.ForEachAsync(source, onNext, cancellationToken); } @@ -65,9 +75,14 @@ public static Task ForEachAsync(this IObservable source, Actio public static Task ForEachAsync(this IObservable source, Action onNext) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } return s_impl.ForEachAsync(source, onNext); } @@ -86,9 +101,14 @@ public static Task ForEachAsync(this IObservable source, Actio public static Task ForEachAsync(this IObservable source, Action onNext, CancellationToken cancellationToken) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } return s_impl.ForEachAsync(source, onNext, cancellationToken); } @@ -110,11 +130,19 @@ public static Task ForEachAsync(this IObservable source, Actio public static IObservable Case(Func selector, IDictionary> sources, IObservable defaultSource) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } + if (defaultSource == null) + { throw new ArgumentNullException(nameof(defaultSource)); + } return s_impl.Case(selector, sources, defaultSource); } @@ -132,11 +160,19 @@ public static IObservable Case(Func selector, public static IObservable Case(Func selector, IDictionary> sources, IScheduler scheduler) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Case(selector, sources, scheduler); } @@ -153,9 +189,14 @@ public static IObservable Case(Func selector, public static IObservable Case(Func selector, IDictionary> sources) { if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Case(selector, sources); } @@ -175,9 +216,14 @@ public static IObservable Case(Func selector, public static IObservable DoWhile(this IObservable source, Func condition) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (condition == null) + { throw new ArgumentNullException(nameof(condition)); + } return s_impl.DoWhile(source, condition); } @@ -198,9 +244,14 @@ public static IObservable DoWhile(this IObservable so public static IObservable For(IEnumerable source, Func> resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.For(source, resultSelector); } @@ -221,11 +272,19 @@ public static IObservable For(IEnumerable so public static IObservable If(Func condition, IObservable thenSource, IObservable elseSource) { if (condition == null) + { throw new ArgumentNullException(nameof(condition)); + } + if (thenSource == null) + { throw new ArgumentNullException(nameof(thenSource)); + } + if (elseSource == null) + { throw new ArgumentNullException(nameof(elseSource)); + } return s_impl.If(condition, thenSource, elseSource); } @@ -241,9 +300,14 @@ public static IObservable If(Func condition, IObservable public static IObservable If(Func condition, IObservable thenSource) { if (condition == null) + { throw new ArgumentNullException(nameof(condition)); + } + if (thenSource == null) + { throw new ArgumentNullException(nameof(thenSource)); + } return s_impl.If(condition, thenSource); } @@ -260,11 +324,19 @@ public static IObservable If(Func condition, IObservable public static IObservable If(Func condition, IObservable thenSource, IScheduler scheduler) { if (condition == null) + { throw new ArgumentNullException(nameof(condition)); + } + if (thenSource == null) + { throw new ArgumentNullException(nameof(thenSource)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.If(condition, thenSource, scheduler); } @@ -284,9 +356,14 @@ public static IObservable If(Func condition, IObservable public static IObservable While(Func condition, IObservable source) { if (condition == null) + { throw new ArgumentNullException(nameof(condition)); + } + if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.While(condition, source); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Joins.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Joins.cs index ee20115995..8481b5f9dd 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Joins.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Joins.cs @@ -3,12 +3,11 @@ // See the LICENSE file in the project root for more information. using System.Collections.Generic; -using System.Reactive.Disposables; using System.Reactive.Joins; namespace System.Reactive.Linq { - public static partial class Observable + public static partial class Observable { #region And @@ -24,9 +23,14 @@ public static partial class Observable public static Pattern And(this IObservable left, IObservable right) { if (left == null) + { throw new ArgumentNullException(nameof(left)); + } + if (right == null) + { throw new ArgumentNullException(nameof(right)); + } return s_impl.And(left, right); } @@ -47,9 +51,14 @@ public static Pattern And(this IObservable public static Plan Then(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Then(source, selector); } @@ -68,7 +77,9 @@ public static Plan Then(this IObservable sou public static IObservable When(params Plan[] plans) { if (plans == null) + { throw new ArgumentNullException(nameof(plans)); + } return s_impl.When(plans); } @@ -83,7 +94,9 @@ public static IObservable When(params Plan[] plans) public static IObservable When(this IEnumerable> plans) { if (plans == null) + { throw new ArgumentNullException(nameof(plans)); + } return s_impl.When(plans); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Multiple.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Multiple.cs index 2e0eaa0379..874bbbf400 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Multiple.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Multiple.cs @@ -25,9 +25,14 @@ public static partial class Observable public static IObservable Amb(this IObservable first, IObservable second) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } return s_impl.Amb(first, second); } @@ -43,7 +48,9 @@ public static IObservable Amb(this IObservable first, public static IObservable Amb(params IObservable[] sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Amb(sources); } @@ -59,7 +66,9 @@ public static IObservable Amb(params IObservable[] so public static IObservable Amb(this IEnumerable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Amb(sources); } @@ -80,9 +89,14 @@ public static IObservable Amb(this IEnumerable> Buffer(this IObservable source, Func> bufferClosingSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (bufferClosingSelector == null) + { throw new ArgumentNullException(nameof(bufferClosingSelector)); + } return s_impl.Buffer(source, bufferClosingSelector); } @@ -101,11 +115,19 @@ public static IObservable> Buffer(this I public static IObservable> Buffer(this IObservable source, IObservable bufferOpenings, Func> bufferClosingSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (bufferOpenings == null) + { throw new ArgumentNullException(nameof(bufferOpenings)); + } + if (bufferClosingSelector == null) + { throw new ArgumentNullException(nameof(bufferClosingSelector)); + } return s_impl.Buffer(source, bufferOpenings, bufferClosingSelector); } @@ -122,9 +144,14 @@ public static IObservable> Buffer> Buffer(this IObservable source, IObservable bufferBoundaries) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (bufferBoundaries == null) + { throw new ArgumentNullException(nameof(bufferBoundaries)); + } return s_impl.Buffer(source, bufferBoundaries); } @@ -145,9 +172,14 @@ public static IObservable> Buffer(this public static IObservable Catch(this IObservable source, Func> handler) where TException : Exception { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (handler == null) + { throw new ArgumentNullException(nameof(handler)); + } return s_impl.Catch(source, handler); } @@ -163,9 +195,14 @@ public static IObservable Catch(this IObservable Catch(this IObservable first, IObservable second) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } return s_impl.Catch(first, second); } @@ -180,7 +217,9 @@ public static IObservable Catch(this IObservable firs public static IObservable Catch(params IObservable[] sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Catch(sources); } @@ -195,7 +234,9 @@ public static IObservable Catch(params IObservable[] public static IObservable Catch(this IEnumerable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Catch(sources); } @@ -218,11 +259,19 @@ public static IObservable Catch(this IEnumerable CombineLatest(this IObservable first, IObservable second, Func resultSelector) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(first, second, resultSelector); } @@ -247,13 +296,24 @@ public static IObservable CombineLatest(th public static IObservable CombineLatest(this IObservable source1, IObservable source2, IObservable source3, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, resultSelector); } @@ -276,15 +336,29 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, resultSelector); } @@ -309,17 +383,34 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, resultSelector); } @@ -346,19 +437,39 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, source6, resultSelector); } @@ -387,21 +498,44 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, source6, source7, resultSelector); } @@ -432,23 +566,49 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, source6, source7, source8, resultSelector); } @@ -481,25 +641,54 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, source6, source7, source8, source9, resultSelector); } @@ -534,27 +723,59 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, resultSelector); } @@ -591,29 +812,64 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, resultSelector); } @@ -652,31 +908,69 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (source12 == null) + { throw new ArgumentNullException(nameof(source12)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, source12, resultSelector); } @@ -717,33 +1011,74 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (source12 == null) + { throw new ArgumentNullException(nameof(source12)); + } + if (source13 == null) + { throw new ArgumentNullException(nameof(source13)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, source12, source13, resultSelector); } @@ -786,35 +1121,79 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (source12 == null) + { throw new ArgumentNullException(nameof(source12)); + } + if (source13 == null) + { throw new ArgumentNullException(nameof(source13)); + } + if (source14 == null) + { throw new ArgumentNullException(nameof(source14)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, source12, source13, source14, resultSelector); } @@ -859,37 +1238,84 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (source12 == null) + { throw new ArgumentNullException(nameof(source12)); + } + if (source13 == null) + { throw new ArgumentNullException(nameof(source13)); + } + if (source14 == null) + { throw new ArgumentNullException(nameof(source14)); + } + if (source15 == null) + { throw new ArgumentNullException(nameof(source15)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, source12, source13, source14, source15, resultSelector); } @@ -936,39 +1362,89 @@ public static IObservable CombineLatest CombineLatest(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15, IObservable source16, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (source12 == null) + { throw new ArgumentNullException(nameof(source12)); + } + if (source13 == null) + { throw new ArgumentNullException(nameof(source13)); + } + if (source14 == null) + { throw new ArgumentNullException(nameof(source14)); + } + if (source15 == null) + { throw new ArgumentNullException(nameof(source15)); + } + if (source16 == null) + { throw new ArgumentNullException(nameof(source16)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, source12, source13, source14, source15, source16, resultSelector); } @@ -987,9 +1463,14 @@ public static IObservable CombineLatest CombineLatest(this IEnumerable> sources, Func, TResult> resultSelector) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.CombineLatest(sources, resultSelector); } @@ -1004,7 +1485,9 @@ public static IObservable CombineLatest(this IEnumera public static IObservable> CombineLatest(this IEnumerable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.CombineLatest(sources); } @@ -1019,7 +1502,9 @@ public static IObservable> CombineLatest(this IEnumerabl public static IObservable> CombineLatest(params IObservable[] sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.CombineLatest(sources); } @@ -1039,9 +1524,14 @@ public static IObservable> CombineLatest(params IObserva public static IObservable Concat(this IObservable first, IObservable second) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } return s_impl.Concat(first, second); } @@ -1056,7 +1546,9 @@ public static IObservable Concat(this IObservable fir public static IObservable Concat(params IObservable[] sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Concat(sources); } @@ -1071,7 +1563,9 @@ public static IObservable Concat(params IObservable[] public static IObservable Concat(this IEnumerable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Concat(sources); } @@ -1086,7 +1580,9 @@ public static IObservable Concat(this IEnumerable Concat(this IObservable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Concat(sources); } @@ -1102,7 +1598,9 @@ public static IObservable Concat(this IObservable Concat(this IObservable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Concat(sources); } @@ -1121,7 +1619,9 @@ public static IObservable Concat(this IObservable Merge(this IObservable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Merge(sources); } @@ -1137,7 +1637,9 @@ public static IObservable Merge(this IObservable Merge(this IObservable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Merge(sources); } @@ -1154,9 +1656,14 @@ public static IObservable Merge(this IObservable public static IObservable Merge(this IObservable> sources, int maxConcurrent) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } + if (maxConcurrent <= 0) + { throw new ArgumentOutOfRangeException(nameof(maxConcurrent)); + } return s_impl.Merge(sources, maxConcurrent); } @@ -1173,9 +1680,14 @@ public static IObservable Merge(this IObservable Merge(this IEnumerable> sources, int maxConcurrent) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } + if (maxConcurrent <= 0) + { throw new ArgumentOutOfRangeException(nameof(maxConcurrent)); + } return s_impl.Merge(sources, maxConcurrent); } @@ -1193,11 +1705,19 @@ public static IObservable Merge(this IEnumerable Merge(this IEnumerable> sources, int maxConcurrent, IScheduler scheduler) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } + if (maxConcurrent <= 0) + { throw new ArgumentOutOfRangeException(nameof(maxConcurrent)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Merge(sources, maxConcurrent, scheduler); } @@ -1213,9 +1733,14 @@ public static IObservable Merge(this IEnumerable Merge(this IObservable first, IObservable second) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } return s_impl.Merge(first, second); } @@ -1232,11 +1757,19 @@ public static IObservable Merge(this IObservable firs public static IObservable Merge(this IObservable first, IObservable second, IScheduler scheduler) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Merge(first, second, scheduler); } @@ -1251,7 +1784,9 @@ public static IObservable Merge(this IObservable firs public static IObservable Merge(params IObservable[] sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Merge(sources); } @@ -1267,9 +1802,14 @@ public static IObservable Merge(params IObservable[] public static IObservable Merge(IScheduler scheduler, params IObservable[] sources) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Merge(scheduler, sources); } @@ -1284,7 +1824,9 @@ public static IObservable Merge(IScheduler scheduler, params I public static IObservable Merge(this IEnumerable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Merge(sources); } @@ -1300,9 +1842,14 @@ public static IObservable Merge(this IEnumerable Merge(this IEnumerable> sources, IScheduler scheduler) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Merge(sources, scheduler); } @@ -1322,9 +1869,14 @@ public static IObservable Merge(this IEnumerable OnErrorResumeNext(this IObservable first, IObservable second) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } return s_impl.OnErrorResumeNext(first, second); } @@ -1339,7 +1891,9 @@ public static IObservable OnErrorResumeNext(this IObservable OnErrorResumeNext(params IObservable[] sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.OnErrorResumeNext(sources); } @@ -1354,7 +1908,9 @@ public static IObservable OnErrorResumeNext(params IObservable public static IObservable OnErrorResumeNext(this IEnumerable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.OnErrorResumeNext(sources); } @@ -1377,9 +1933,14 @@ public static IObservable OnErrorResumeNext(this IEnumerable SkipUntil(this IObservable source, IObservable other) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return s_impl.SkipUntil(source, other); } @@ -1401,7 +1962,9 @@ public static IObservable SkipUntil(this IObservable Switch(this IObservable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Switch(sources); } @@ -1419,7 +1982,9 @@ public static IObservable Switch(this IObservable Switch(this IObservable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Switch(sources); } @@ -1440,9 +2005,14 @@ public static IObservable Switch(this IObservable TakeUntil(this IObservable source, IObservable other) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return s_impl.TakeUntil(source, other); } @@ -1469,9 +2039,14 @@ public static IObservable TakeUntil(this IObservable TakeUntil(this IObservable source, Func stopPredicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (stopPredicate == null) + { throw new ArgumentNullException(nameof(stopPredicate)); + } return s_impl.TakeUntil(source, stopPredicate); } @@ -1492,9 +2067,14 @@ public static IObservable TakeUntil(this IObservable public static IObservable> Window(this IObservable source, Func> windowClosingSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (windowClosingSelector == null) + { throw new ArgumentNullException(nameof(windowClosingSelector)); + } return s_impl.Window(source, windowClosingSelector); } @@ -1513,11 +2093,19 @@ public static IObservable> Window( public static IObservable> Window(this IObservable source, IObservable windowOpenings, Func> windowClosingSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (windowOpenings == null) + { throw new ArgumentNullException(nameof(windowOpenings)); + } + if (windowClosingSelector == null) + { throw new ArgumentNullException(nameof(windowClosingSelector)); + } return s_impl.Window(source, windowOpenings, windowClosingSelector); } @@ -1534,9 +2122,14 @@ public static IObservable> Window> Window(this IObservable source, IObservable windowBoundaries) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (windowBoundaries == null) + { throw new ArgumentNullException(nameof(windowBoundaries)); + } return s_impl.Window(source, windowBoundaries); } @@ -1561,11 +2154,19 @@ public static IObservable> Window public static IObservable WithLatestFrom(this IObservable first, IObservable second, Func resultSelector) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.WithLatestFrom(first, second, resultSelector); } @@ -1588,11 +2189,19 @@ public static IObservable WithLatestFrom(this public static IObservable Zip(this IObservable first, IObservable second, Func resultSelector) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(first, second, resultSelector); } @@ -1617,13 +2226,24 @@ public static IObservable Zip(this IObserv public static IObservable Zip(this IObservable source1, IObservable source2, IObservable source3, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, resultSelector); } @@ -1646,15 +2266,29 @@ public static IObservable Zip(th public static IObservable Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, resultSelector); } @@ -1679,17 +2313,34 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, resultSelector); } @@ -1716,19 +2367,39 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, source6, resultSelector); } @@ -1757,21 +2428,44 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, source6, source7, resultSelector); } @@ -1802,23 +2496,49 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, source6, source7, source8, resultSelector); } @@ -1851,25 +2571,54 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, source6, source7, source8, source9, resultSelector); } @@ -1904,27 +2653,59 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, resultSelector); } @@ -1961,29 +2742,64 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, resultSelector); } @@ -2022,31 +2838,69 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (source12 == null) + { throw new ArgumentNullException(nameof(source12)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, source12, resultSelector); } @@ -2087,33 +2941,74 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (source12 == null) + { throw new ArgumentNullException(nameof(source12)); + } + if (source13 == null) + { throw new ArgumentNullException(nameof(source13)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, source12, source13, resultSelector); } @@ -2156,35 +3051,79 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (source12 == null) + { throw new ArgumentNullException(nameof(source12)); + } + if (source13 == null) + { throw new ArgumentNullException(nameof(source13)); + } + if (source14 == null) + { throw new ArgumentNullException(nameof(source14)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, source12, source13, source14, resultSelector); } @@ -2229,37 +3168,84 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (source12 == null) + { throw new ArgumentNullException(nameof(source12)); + } + if (source13 == null) + { throw new ArgumentNullException(nameof(source13)); + } + if (source14 == null) + { throw new ArgumentNullException(nameof(source14)); + } + if (source15 == null) + { throw new ArgumentNullException(nameof(source15)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, source12, source13, source14, source15, resultSelector); } @@ -2306,39 +3292,89 @@ public static IObservable Zip Zip(this IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15, IObservable source16, Func resultSelector) { if (source1 == null) + { throw new ArgumentNullException(nameof(source1)); + } + if (source2 == null) + { throw new ArgumentNullException(nameof(source2)); + } + if (source3 == null) + { throw new ArgumentNullException(nameof(source3)); + } + if (source4 == null) + { throw new ArgumentNullException(nameof(source4)); + } + if (source5 == null) + { throw new ArgumentNullException(nameof(source5)); + } + if (source6 == null) + { throw new ArgumentNullException(nameof(source6)); + } + if (source7 == null) + { throw new ArgumentNullException(nameof(source7)); + } + if (source8 == null) + { throw new ArgumentNullException(nameof(source8)); + } + if (source9 == null) + { throw new ArgumentNullException(nameof(source9)); + } + if (source10 == null) + { throw new ArgumentNullException(nameof(source10)); + } + if (source11 == null) + { throw new ArgumentNullException(nameof(source11)); + } + if (source12 == null) + { throw new ArgumentNullException(nameof(source12)); + } + if (source13 == null) + { throw new ArgumentNullException(nameof(source13)); + } + if (source14 == null) + { throw new ArgumentNullException(nameof(source14)); + } + if (source15 == null) + { throw new ArgumentNullException(nameof(source15)); + } + if (source16 == null) + { throw new ArgumentNullException(nameof(source16)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(source1, source2, source3, source4, source5, source6, source7, source8, source9, source10, source11, source12, source13, source14, source15, source16, resultSelector); } @@ -2357,9 +3393,14 @@ public static IObservable Zip Zip(this IEnumerable> sources, Func, TResult> resultSelector) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(sources, resultSelector); } @@ -2374,7 +3415,9 @@ public static IObservable Zip(this IEnumerable> Zip(this IEnumerable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Zip(sources); } @@ -2389,7 +3432,9 @@ public static IObservable> Zip(this IEnumerable> Zip(params IObservable[] sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.Zip(sources); } @@ -2408,11 +3453,19 @@ public static IObservable> Zip(params IObservable Zip(this IObservable first, IEnumerable second, Func resultSelector) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Zip(first, second, resultSelector); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Queryable.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Queryable.cs index b6d6f9463e..b43c86dab5 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Queryable.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Queryable.cs @@ -18,7 +18,9 @@ public static IQbservableProvider Provider get { if (s_provider == null) + { s_provider = new ObservableQueryProvider(); + } return s_provider; } @@ -34,7 +36,9 @@ public static IQbservableProvider Provider public static IQbservable AsQbservable(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return new ObservableQuery(source); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Single.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Single.cs index c181b7d8bf..32c59b058a 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Single.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Single.cs @@ -22,7 +22,9 @@ public static partial class Observable public static IObservable Append(this IObservable source, TSource value) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Append(source, value); } @@ -39,9 +41,14 @@ public static IObservable Append(this IObservable sou public static IObservable Append(this IObservable source, TSource value, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Append(source, value, scheduler); } @@ -60,7 +67,9 @@ public static IObservable Append(this IObservable sou public static IObservable AsObservable(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.AsObservable(source); } @@ -81,9 +90,14 @@ public static IObservable AsObservable(this IObservable> Buffer(this IObservable source, int count) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (count <= 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } return s_impl.Buffer(source, count); } @@ -101,11 +115,19 @@ public static IObservable> Buffer(this IObservable> Buffer(this IObservable source, int count, int skip) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (count <= 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } + if (skip <= 0) + { throw new ArgumentOutOfRangeException(nameof(skip)); + } return s_impl.Buffer(source, count, skip); } @@ -124,7 +146,9 @@ public static IObservable> Buffer(this IObservable Dematerialize(this IObservable> source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Dematerialize(source); } @@ -143,7 +167,9 @@ public static IObservable Dematerialize(this IObservable DistinctUntilChanged(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.DistinctUntilChanged(source); } @@ -159,9 +185,14 @@ public static IObservable DistinctUntilChanged(this IObservabl public static IObservable DistinctUntilChanged(this IObservable source, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.DistinctUntilChanged(source, comparer); } @@ -178,9 +209,14 @@ public static IObservable DistinctUntilChanged(this IObservabl public static IObservable DistinctUntilChanged(this IObservable source, Func keySelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } return s_impl.DistinctUntilChanged(source, keySelector); } @@ -198,11 +234,19 @@ public static IObservable DistinctUntilChanged(this IObs public static IObservable DistinctUntilChanged(this IObservable source, Func keySelector, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.DistinctUntilChanged(source, keySelector, comparer); } @@ -223,9 +267,14 @@ public static IObservable DistinctUntilChanged(this IObs public static IObservable Do(this IObservable source, Action onNext) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } return s_impl.Do(source, onNext); } @@ -243,11 +292,19 @@ public static IObservable Do(this IObservable source, public static IObservable Do(this IObservable source, Action onNext, Action onCompleted) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } return s_impl.Do(source, onNext, onCompleted); } @@ -265,11 +322,19 @@ public static IObservable Do(this IObservable source, public static IObservable Do(this IObservable source, Action onNext, Action onError) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } return s_impl.Do(source, onNext, onError); } @@ -288,13 +353,24 @@ public static IObservable Do(this IObservable source, public static IObservable Do(this IObservable source, Action onNext, Action onError, Action onCompleted) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } return s_impl.Do(source, onNext, onError, onCompleted); } @@ -311,9 +387,14 @@ public static IObservable Do(this IObservable source, public static IObservable Do(this IObservable source, IObserver observer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return s_impl.Do(source, observer); } @@ -333,9 +414,14 @@ public static IObservable Do(this IObservable source, public static IObservable Finally(this IObservable source, Action finallyAction) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (finallyAction == null) + { throw new ArgumentNullException(nameof(finallyAction)); + } return s_impl.Finally(source, finallyAction); } @@ -354,7 +440,9 @@ public static IObservable Finally(this IObservable so public static IObservable IgnoreElements(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.IgnoreElements(source); } @@ -373,7 +461,9 @@ public static IObservable IgnoreElements(this IObservable> Materialize(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Materialize(source); } @@ -393,7 +483,9 @@ public static IObservable> Materialize(this IObse public static IObservable Prepend(this IObservable source, TSource value) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Prepend(source, value); } @@ -410,9 +502,14 @@ public static IObservable Prepend(this IObservable so public static IObservable Prepend(this IObservable source, TSource value, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Prepend(source, value, scheduler); } @@ -430,7 +527,9 @@ public static IObservable Prepend(this IObservable so public static IObservable Repeat(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Repeat(source); } @@ -447,9 +546,14 @@ public static IObservable Repeat(this IObservable sou public static IObservable Repeat(this IObservable source, int repeatCount) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (repeatCount < 0) + { throw new ArgumentOutOfRangeException(nameof(repeatCount)); + } return s_impl.Repeat(source, repeatCount); } @@ -471,9 +575,14 @@ public static IObservable Repeat(this IObservable sou public static IObservable RepeatWhen(this IObservable source, Func, IObservable> handler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (handler == null) + { throw new ArgumentNullException(nameof(handler)); + } return s_impl.RepeatWhen(source, handler); } @@ -493,7 +602,9 @@ public static IObservable RepeatWhen(this IObservable public static IObservable Retry(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Retry(source); } @@ -510,9 +621,14 @@ public static IObservable Retry(this IObservable sour public static IObservable Retry(this IObservable source, int retryCount) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (retryCount < 0) + { throw new ArgumentOutOfRangeException(nameof(retryCount)); + } return s_impl.Retry(source, retryCount); } @@ -534,9 +650,14 @@ public static IObservable Retry(this IObservable sour public static IObservable RetryWhen(this IObservable source, Func, IObservable> handler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (handler == null) + { throw new ArgumentNullException(nameof(handler)); + } return s_impl.RetryWhen(source, handler); } @@ -560,9 +681,14 @@ public static IObservable RetryWhen(this IObservable< public static IObservable Scan(this IObservable source, TAccumulate seed, Func accumulator) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (accumulator == null) + { throw new ArgumentNullException(nameof(accumulator)); + } return s_impl.Scan(source, seed, accumulator); } @@ -579,9 +705,14 @@ public static IObservable Scan(this IObservab public static IObservable Scan(this IObservable source, Func accumulator) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (accumulator == null) + { throw new ArgumentNullException(nameof(accumulator)); + } return s_impl.Scan(source, accumulator); } @@ -606,9 +737,14 @@ public static IObservable Scan(this IObservable sourc public static IObservable SkipLast(this IObservable source, int count) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (count < 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } return s_impl.SkipLast(source, count); } @@ -628,9 +764,14 @@ public static IObservable SkipLast(this IObservable s public static IObservable StartWith(this IObservable source, params TSource[] values) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (values == null) + { throw new ArgumentNullException(nameof(values)); + } return s_impl.StartWith(source, values); } @@ -646,9 +787,14 @@ public static IObservable StartWith(this IObservable public static IObservable StartWith(this IObservable source, IEnumerable values) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (values == null) + { throw new ArgumentNullException(nameof(values)); + } return s_impl.StartWith(source, values); } @@ -665,11 +811,19 @@ public static IObservable StartWith(this IObservable public static IObservable StartWith(this IObservable source, IScheduler scheduler, params TSource[] values) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (values == null) + { throw new ArgumentNullException(nameof(values)); + } return s_impl.StartWith(source, scheduler, values); } @@ -691,11 +845,19 @@ public static IObservable StartWith(this IObservable // if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (values == null) + { throw new ArgumentNullException(nameof(values)); + } return s_impl.StartWith(source, scheduler, values); } @@ -720,9 +882,14 @@ public static IObservable StartWith(this IObservable public static IObservable TakeLast(this IObservable source, int count) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (count < 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } return s_impl.TakeLast(source, count); } @@ -744,11 +911,19 @@ public static IObservable TakeLast(this IObservable s public static IObservable TakeLast(this IObservable source, int count, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (count < 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.TakeLast(source, count, scheduler); } @@ -773,9 +948,14 @@ public static IObservable TakeLast(this IObservable s public static IObservable> TakeLastBuffer(this IObservable source, int count) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (count < 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } return s_impl.TakeLastBuffer(source, count); } @@ -796,9 +976,14 @@ public static IObservable> TakeLastBuffer(this IObservab public static IObservable> Window(this IObservable source, int count) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (count <= 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } return s_impl.Window(source, count); } @@ -816,11 +1001,19 @@ public static IObservable> Window(this IObservable public static IObservable> Window(this IObservable source, int count, int skip) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (count <= 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } + if (skip <= 0) + { throw new ArgumentOutOfRangeException(nameof(skip)); + } return s_impl.Window(source, count, skip); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.StandardSequenceOperators.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.StandardSequenceOperators.cs index 2daccba827..853e52dde2 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.StandardSequenceOperators.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.StandardSequenceOperators.cs @@ -24,7 +24,9 @@ public static partial class Observable public static IObservable Cast(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Cast(source); } @@ -43,7 +45,9 @@ public static IObservable Cast(this IObservable source public static IObservable DefaultIfEmpty(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.DefaultIfEmpty(source); } @@ -59,7 +63,9 @@ public static IObservable DefaultIfEmpty(this IObservable DefaultIfEmpty(this IObservable source, TSource defaultValue) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.DefaultIfEmpty(source, defaultValue); } @@ -79,7 +85,9 @@ public static IObservable DefaultIfEmpty(this IObservable Distinct(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Distinct(source); } @@ -96,9 +104,14 @@ public static IObservable Distinct(this IObservable s public static IObservable Distinct(this IObservable source, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.Distinct(source, comparer); } @@ -116,9 +129,14 @@ public static IObservable Distinct(this IObservable s public static IObservable Distinct(this IObservable source, Func keySelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } return s_impl.Distinct(source, keySelector); } @@ -137,11 +155,19 @@ public static IObservable Distinct(this IObservable Distinct(this IObservable source, Func keySelector, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.Distinct(source, keySelector, comparer); } @@ -162,9 +188,14 @@ public static IObservable Distinct(this IObservable> GroupBy(this IObservable source, Func keySelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } return s_impl.GroupBy(source, keySelector); } @@ -182,11 +213,19 @@ public static IObservable> GroupBy> GroupBy(this IObservable source, Func keySelector, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.GroupBy(source, keySelector, comparer); } @@ -205,11 +244,19 @@ public static IObservable> GroupBy> GroupBy(this IObservable source, Func keySelector, Func elementSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } return s_impl.GroupBy(source, keySelector, elementSelector); } @@ -229,13 +276,24 @@ public static IObservable> GroupBy> GroupBy(this IObservable source, Func keySelector, Func elementSelector, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.GroupBy(source, keySelector, elementSelector, comparer); } @@ -254,11 +312,19 @@ public static IObservable> GroupBy> GroupBy(this IObservable source, Func keySelector, int capacity) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (capacity < 0) + { throw new ArgumentOutOfRangeException(nameof(capacity)); + } return s_impl.GroupBy(source, keySelector, capacity); } @@ -278,13 +344,24 @@ public static IObservable> GroupBy> GroupBy(this IObservable source, Func keySelector, int capacity, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (capacity < 0) + { throw new ArgumentOutOfRangeException(nameof(capacity)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.GroupBy(source, keySelector, capacity, comparer); } @@ -305,13 +382,24 @@ public static IObservable> GroupBy> GroupBy(this IObservable source, Func keySelector, Func elementSelector, int capacity) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } + if (capacity < 0) + { throw new ArgumentOutOfRangeException(nameof(capacity)); + } return s_impl.GroupBy(source, keySelector, elementSelector, capacity); } @@ -333,15 +421,29 @@ public static IObservable> GroupBy> GroupBy(this IObservable source, Func keySelector, Func elementSelector, int capacity, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } + if (capacity < 0) + { throw new ArgumentOutOfRangeException(nameof(capacity)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.GroupBy(source, keySelector, elementSelector, capacity, comparer); } @@ -372,15 +474,29 @@ public static IObservable> GroupBy> GroupByUntil(this IObservable source, Func keySelector, Func elementSelector, Func, IObservable> durationSelector, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } + if (durationSelector == null) + { throw new ArgumentNullException(nameof(durationSelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.GroupByUntil(source, keySelector, elementSelector, durationSelector, comparer); } @@ -406,13 +522,24 @@ public static IObservable> GroupByUntil> GroupByUntil(this IObservable source, Func keySelector, Func elementSelector, Func, IObservable> durationSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } + if (durationSelector == null) + { throw new ArgumentNullException(nameof(durationSelector)); + } return s_impl.GroupByUntil(source, keySelector, elementSelector, durationSelector); } @@ -437,13 +564,24 @@ public static IObservable> GroupByUntil> GroupByUntil(this IObservable source, Func keySelector, Func, IObservable> durationSelector, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (durationSelector == null) + { throw new ArgumentNullException(nameof(durationSelector)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.GroupByUntil(source, keySelector, durationSelector, comparer); } @@ -467,11 +605,19 @@ public static IObservable> GroupByUntil> GroupByUntil(this IObservable source, Func keySelector, Func, IObservable> durationSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (durationSelector == null) + { throw new ArgumentNullException(nameof(durationSelector)); + } return s_impl.GroupByUntil(source, keySelector, durationSelector); } @@ -500,17 +646,34 @@ public static IObservable> GroupByUntil> GroupByUntil(this IObservable source, Func keySelector, Func elementSelector, Func, IObservable> durationSelector, int capacity, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } + if (durationSelector == null) + { throw new ArgumentNullException(nameof(durationSelector)); + } + if (capacity < 0) + { throw new ArgumentOutOfRangeException(nameof(capacity)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.GroupByUntil(source, keySelector, elementSelector, durationSelector, capacity, comparer); } @@ -538,15 +701,29 @@ public static IObservable> GroupByUntil> GroupByUntil(this IObservable source, Func keySelector, Func elementSelector, Func, IObservable> durationSelector, int capacity) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (elementSelector == null) + { throw new ArgumentNullException(nameof(elementSelector)); + } + if (durationSelector == null) + { throw new ArgumentNullException(nameof(durationSelector)); + } + if (capacity < 0) + { throw new ArgumentOutOfRangeException(nameof(capacity)); + } return s_impl.GroupByUntil(source, keySelector, elementSelector, durationSelector, capacity); } @@ -573,15 +750,29 @@ public static IObservable> GroupByUntil> GroupByUntil(this IObservable source, Func keySelector, Func, IObservable> durationSelector, int capacity, IEqualityComparer comparer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (durationSelector == null) + { throw new ArgumentNullException(nameof(durationSelector)); + } + if (capacity < 0) + { throw new ArgumentOutOfRangeException(nameof(capacity)); + } + if (comparer == null) + { throw new ArgumentNullException(nameof(comparer)); + } return s_impl.GroupByUntil(source, keySelector, durationSelector, capacity, comparer); } @@ -607,13 +798,24 @@ public static IObservable> GroupByUntil> GroupByUntil(this IObservable source, Func keySelector, Func, IObservable> durationSelector, int capacity) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (keySelector == null) + { throw new ArgumentNullException(nameof(keySelector)); + } + if (durationSelector == null) + { throw new ArgumentNullException(nameof(durationSelector)); + } + if (capacity < 0) + { throw new ArgumentOutOfRangeException(nameof(capacity)); + } return s_impl.GroupByUntil(source, keySelector, durationSelector, capacity); } @@ -640,15 +842,29 @@ public static IObservable> GroupByUntil GroupJoin(this IObservable left, IObservable right, Func> leftDurationSelector, Func> rightDurationSelector, Func, TResult> resultSelector) { if (left == null) + { throw new ArgumentNullException(nameof(left)); + } + if (right == null) + { throw new ArgumentNullException(nameof(right)); + } + if (leftDurationSelector == null) + { throw new ArgumentNullException(nameof(leftDurationSelector)); + } + if (rightDurationSelector == null) + { throw new ArgumentNullException(nameof(rightDurationSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.GroupJoin(left, right, leftDurationSelector, rightDurationSelector, resultSelector); } @@ -675,15 +891,29 @@ public static IObservable GroupJoin Join(this IObservable left, IObservable right, Func> leftDurationSelector, Func> rightDurationSelector, Func resultSelector) { if (left == null) + { throw new ArgumentNullException(nameof(left)); + } + if (right == null) + { throw new ArgumentNullException(nameof(right)); + } + if (leftDurationSelector == null) + { throw new ArgumentNullException(nameof(leftDurationSelector)); + } + if (rightDurationSelector == null) + { throw new ArgumentNullException(nameof(rightDurationSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.Join(left, right, leftDurationSelector, rightDurationSelector, resultSelector); } @@ -702,7 +932,9 @@ public static IObservable Join OfType(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.OfType(source); } @@ -723,9 +955,14 @@ public static IObservable OfType(this IObservable sour public static IObservable Select(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Select(source, selector); } @@ -742,9 +979,14 @@ public static IObservable Select(this IObservable Select(this IObservable source, Func selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Select(source, selector); } @@ -765,9 +1007,14 @@ public static IObservable Select(this IObservable SelectMany(this IObservable source, IObservable other) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return s_impl.SelectMany(source, other); } @@ -784,9 +1031,14 @@ public static IObservable SelectMany(this IObservable SelectMany(this IObservable source, Func> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.SelectMany(source, selector); } @@ -803,9 +1055,14 @@ public static IObservable SelectMany(this IObservable public static IObservable SelectMany(this IObservable source, Func> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.SelectMany(source, selector); } @@ -823,9 +1080,14 @@ public static IObservable SelectMany(this IObservable public static IObservable SelectMany(this IObservable source, Func> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.SelectMany(source, selector); } @@ -843,9 +1105,14 @@ public static IObservable SelectMany(this IObservable public static IObservable SelectMany(this IObservable source, Func> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.SelectMany(source, selector); } @@ -863,9 +1130,14 @@ public static IObservable SelectMany(this IObservable public static IObservable SelectMany(this IObservable source, Func> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.SelectMany(source, selector); } @@ -883,9 +1155,14 @@ public static IObservable SelectMany(this IObservable public static IObservable SelectMany(this IObservable source, Func> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.SelectMany(source, selector); } @@ -904,11 +1181,19 @@ public static IObservable SelectMany(this IObservable public static IObservable SelectMany(this IObservable source, Func> collectionSelector, Func resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (collectionSelector == null) + { throw new ArgumentNullException(nameof(collectionSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.SelectMany(source, collectionSelector, resultSelector); } @@ -927,11 +1212,19 @@ public static IObservable SelectMany(thi public static IObservable SelectMany(this IObservable source, Func> collectionSelector, Func resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (collectionSelector == null) + { throw new ArgumentNullException(nameof(collectionSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.SelectMany(source, collectionSelector, resultSelector); } @@ -951,11 +1244,19 @@ public static IObservable SelectMany(thi public static IObservable SelectMany(this IObservable source, Func> taskSelector, Func resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (taskSelector == null) + { throw new ArgumentNullException(nameof(taskSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.SelectMany(source, taskSelector, resultSelector); } @@ -975,11 +1276,19 @@ public static IObservable SelectMany(thi public static IObservable SelectMany(this IObservable source, Func> taskSelector, Func resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (taskSelector == null) + { throw new ArgumentNullException(nameof(taskSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.SelectMany(source, taskSelector, resultSelector); } @@ -999,11 +1308,19 @@ public static IObservable SelectMany(thi public static IObservable SelectMany(this IObservable source, Func> taskSelector, Func resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (taskSelector == null) + { throw new ArgumentNullException(nameof(taskSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.SelectMany(source, taskSelector, resultSelector); } @@ -1023,11 +1340,19 @@ public static IObservable SelectMany(thi public static IObservable SelectMany(this IObservable source, Func> taskSelector, Func resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (taskSelector == null) + { throw new ArgumentNullException(nameof(taskSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.SelectMany(source, taskSelector, resultSelector); } @@ -1046,13 +1371,24 @@ public static IObservable SelectMany(thi public static IObservable SelectMany(this IObservable source, Func> onNext, Func> onError, Func> onCompleted) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } return s_impl.SelectMany(source, onNext, onError, onCompleted); } @@ -1071,13 +1407,24 @@ public static IObservable SelectMany(this IObservable public static IObservable SelectMany(this IObservable source, Func> onNext, Func> onError, Func> onCompleted) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } return s_impl.SelectMany(source, onNext, onError, onCompleted); } @@ -1095,9 +1442,14 @@ public static IObservable SelectMany(this IObservable public static IObservable SelectMany(this IObservable source, Func> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.SelectMany(source, selector); } @@ -1115,9 +1467,14 @@ public static IObservable SelectMany(this IObservable public static IObservable SelectMany(this IObservable source, Func> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.SelectMany(source, selector); } @@ -1137,11 +1494,19 @@ public static IObservable SelectMany(this IObservable public static IObservable SelectMany(this IObservable source, Func> collectionSelector, Func resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (collectionSelector == null) + { throw new ArgumentNullException(nameof(collectionSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.SelectMany(source, collectionSelector, resultSelector); } @@ -1161,11 +1526,19 @@ public static IObservable SelectMany(thi public static IObservable SelectMany(this IObservable source, Func> collectionSelector, Func resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (collectionSelector == null) + { throw new ArgumentNullException(nameof(collectionSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.SelectMany(source, collectionSelector, resultSelector); } @@ -1186,9 +1559,14 @@ public static IObservable SelectMany(thi public static IObservable Skip(this IObservable source, int count) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (count < 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } return s_impl.Skip(source, count); } @@ -1208,9 +1586,14 @@ public static IObservable Skip(this IObservable sourc public static IObservable SkipWhile(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.SkipWhile(source, predicate); } @@ -1227,9 +1610,14 @@ public static IObservable SkipWhile(this IObservable public static IObservable SkipWhile(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.SkipWhile(source, predicate); } @@ -1250,9 +1638,14 @@ public static IObservable SkipWhile(this IObservable public static IObservable Take(this IObservable source, int count) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (count < 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } return s_impl.Take(source, count); } @@ -1270,11 +1663,19 @@ public static IObservable Take(this IObservable sourc public static IObservable Take(this IObservable source, int count, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (count < 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Take(source, count, scheduler); } @@ -1294,9 +1695,14 @@ public static IObservable Take(this IObservable sourc public static IObservable TakeWhile(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.TakeWhile(source, predicate); } @@ -1313,9 +1719,14 @@ public static IObservable TakeWhile(this IObservable public static IObservable TakeWhile(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.TakeWhile(source, predicate); } @@ -1335,9 +1746,14 @@ public static IObservable TakeWhile(this IObservable public static IObservable Where(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.Where(source, predicate); } @@ -1353,9 +1769,14 @@ public static IObservable Where(this IObservable sour public static IObservable Where(this IObservable source, Func predicate) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (predicate == null) + { throw new ArgumentNullException(nameof(predicate)); + } return s_impl.Where(source, predicate); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Time.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Time.cs index 6aa9e9fea6..79a84d4095 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable.Time.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable.Time.cs @@ -30,9 +30,14 @@ public static partial class Observable public static IObservable> Buffer(this IObservable source, TimeSpan timeSpan) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } return s_impl.Buffer(source, timeSpan); } @@ -55,11 +60,19 @@ public static IObservable> Buffer(this IObservable> Buffer(this IObservable source, TimeSpan timeSpan, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Buffer(source, timeSpan, scheduler); } @@ -89,11 +102,19 @@ public static IObservable> Buffer(this IObservable> Buffer(this IObservable source, TimeSpan timeSpan, TimeSpan timeShift) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } + if (timeShift < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeShift)); + } return s_impl.Buffer(source, timeSpan, timeShift); } @@ -124,13 +145,24 @@ public static IObservable> Buffer(this IObservable> Buffer(this IObservable source, TimeSpan timeSpan, TimeSpan timeShift, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } + if (timeShift < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeShift)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Buffer(source, timeSpan, timeShift, scheduler); } @@ -158,11 +190,19 @@ public static IObservable> Buffer(this IObservable> Buffer(this IObservable source, TimeSpan timeSpan, int count) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } + if (count <= 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } return s_impl.Buffer(source, timeSpan, count); } @@ -187,13 +227,24 @@ public static IObservable> Buffer(this IObservable> Buffer(this IObservable source, TimeSpan timeSpan, int count, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } + if (count <= 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Buffer(source, timeSpan, count, scheduler); } @@ -231,9 +282,14 @@ public static IObservable> Buffer(this IObservable Delay(this IObservable source, TimeSpan dueTime) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dueTime < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(dueTime)); + } return s_impl.Delay(source, dueTime); } @@ -267,11 +323,19 @@ public static IObservable Delay(this IObservable sour public static IObservable Delay(this IObservable source, TimeSpan dueTime, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dueTime < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(dueTime)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Delay(source, dueTime, scheduler); } @@ -304,7 +368,9 @@ public static IObservable Delay(this IObservable sour public static IObservable Delay(this IObservable source, DateTimeOffset dueTime) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Delay(source, dueTime); } @@ -334,9 +400,14 @@ public static IObservable Delay(this IObservable sour public static IObservable Delay(this IObservable source, DateTimeOffset dueTime, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Delay(source, dueTime, scheduler); } @@ -357,9 +428,14 @@ public static IObservable Delay(this IObservable sour public static IObservable Delay(this IObservable source, Func> delayDurationSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (delayDurationSelector == null) + { throw new ArgumentNullException(nameof(delayDurationSelector)); + } return s_impl.Delay(source, delayDurationSelector); } @@ -377,11 +453,19 @@ public static IObservable Delay(this IObservable Delay(this IObservable source, IObservable subscriptionDelay, Func> delayDurationSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (subscriptionDelay == null) + { throw new ArgumentNullException(nameof(subscriptionDelay)); + } + if (delayDurationSelector == null) + { throw new ArgumentNullException(nameof(delayDurationSelector)); + } return s_impl.Delay(source, subscriptionDelay, delayDurationSelector); } @@ -412,9 +496,14 @@ public static IObservable Delay(this IObservable DelaySubscription(this IObservable source, TimeSpan dueTime) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dueTime < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(dueTime)); + } return s_impl.DelaySubscription(source, dueTime); } @@ -440,11 +529,19 @@ public static IObservable DelaySubscription(this IObservable DelaySubscription(this IObservable source, TimeSpan dueTime, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dueTime < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(dueTime)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.DelaySubscription(source, dueTime, scheduler); } @@ -468,7 +565,9 @@ public static IObservable DelaySubscription(this IObservable DelaySubscription(this IObservable source, DateTimeOffset dueTime) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.DelaySubscription(source, dueTime); } @@ -493,9 +592,14 @@ public static IObservable DelaySubscription(this IObservable DelaySubscription(this IObservable source, DateTimeOffset dueTime, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.DelaySubscription(source, dueTime, scheduler); } @@ -519,13 +623,24 @@ public static IObservable DelaySubscription(this IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector, Func timeSelector) { if (condition == null) + { throw new ArgumentNullException(nameof(condition)); + } + if (iterate == null) + { throw new ArgumentNullException(nameof(iterate)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } + if (timeSelector == null) + { throw new ArgumentNullException(nameof(timeSelector)); + } return s_impl.Generate(initialState, condition, iterate, resultSelector, timeSelector); } @@ -546,15 +661,29 @@ public static IObservable Generate(TState initialState public static IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector, Func timeSelector, IScheduler scheduler) { if (condition == null) + { throw new ArgumentNullException(nameof(condition)); + } + if (iterate == null) + { throw new ArgumentNullException(nameof(iterate)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } + if (timeSelector == null) + { throw new ArgumentNullException(nameof(timeSelector)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Generate(initialState, condition, iterate, resultSelector, timeSelector, scheduler); } @@ -574,13 +703,24 @@ public static IObservable Generate(TState initialState public static IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector, Func timeSelector) { if (condition == null) + { throw new ArgumentNullException(nameof(condition)); + } + if (iterate == null) + { throw new ArgumentNullException(nameof(iterate)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } + if (timeSelector == null) + { throw new ArgumentNullException(nameof(timeSelector)); + } return s_impl.Generate(initialState, condition, iterate, resultSelector, timeSelector); } @@ -601,15 +741,29 @@ public static IObservable Generate(TState initialState public static IObservable Generate(TState initialState, Func condition, Func iterate, Func resultSelector, Func timeSelector, IScheduler scheduler) { if (condition == null) + { throw new ArgumentNullException(nameof(condition)); + } + if (iterate == null) + { throw new ArgumentNullException(nameof(iterate)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } + if (timeSelector == null) + { throw new ArgumentNullException(nameof(timeSelector)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Generate(initialState, condition, iterate, resultSelector, timeSelector, scheduler); } @@ -634,7 +788,9 @@ public static IObservable Generate(TState initialState public static IObservable Interval(TimeSpan period) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } return s_impl.Interval(period); } @@ -657,9 +813,14 @@ public static IObservable Interval(TimeSpan period) public static IObservable Interval(TimeSpan period, IScheduler scheduler) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Interval(period, scheduler); } @@ -685,9 +846,14 @@ public static IObservable Interval(TimeSpan period, IScheduler scheduler) public static IObservable Sample(this IObservable source, TimeSpan interval) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (interval < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(interval)); + } return s_impl.Sample(source, interval); } @@ -710,11 +876,19 @@ public static IObservable Sample(this IObservable sou public static IObservable Sample(this IObservable source, TimeSpan interval, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (interval < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(interval)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Sample(source, interval, scheduler); } @@ -732,9 +906,14 @@ public static IObservable Sample(this IObservable sou public static IObservable Sample(this IObservable source, IObservable sampler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (sampler == null) + { throw new ArgumentNullException(nameof(sampler)); + } return s_impl.Sample(source, sampler); } @@ -765,9 +944,14 @@ public static IObservable Sample(this IObservable Skip(this IObservable source, TimeSpan duration) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (duration < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(duration)); + } return s_impl.Skip(source, duration); } @@ -795,11 +979,19 @@ public static IObservable Skip(this IObservable sourc public static IObservable Skip(this IObservable source, TimeSpan duration, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (duration < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(duration)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Skip(source, duration, scheduler); } @@ -825,9 +1017,14 @@ public static IObservable Skip(this IObservable sourc public static IObservable SkipLast(this IObservable source, TimeSpan duration) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (duration < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(duration)); + } return s_impl.SkipLast(source, duration); } @@ -850,11 +1047,19 @@ public static IObservable SkipLast(this IObservable s public static IObservable SkipLast(this IObservable source, TimeSpan duration, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (duration < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(duration)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.SkipLast(source, duration, scheduler); } @@ -877,7 +1082,9 @@ public static IObservable SkipLast(this IObservable s public static IObservable SkipUntil(this IObservable source, DateTimeOffset startTime) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.SkipUntil(source, startTime); } @@ -897,9 +1104,14 @@ public static IObservable SkipUntil(this IObservable public static IObservable SkipUntil(this IObservable source, DateTimeOffset startTime, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.SkipUntil(source, startTime, scheduler); } @@ -925,9 +1137,14 @@ public static IObservable SkipUntil(this IObservable public static IObservable Take(this IObservable source, TimeSpan duration) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (duration < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(duration)); + } return s_impl.Take(source, duration); } @@ -950,11 +1167,19 @@ public static IObservable Take(this IObservable sourc public static IObservable Take(this IObservable source, TimeSpan duration, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (duration < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(duration)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Take(source, duration, scheduler); } @@ -980,9 +1205,14 @@ public static IObservable Take(this IObservable sourc public static IObservable TakeLast(this IObservable source, TimeSpan duration) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (duration < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(duration)); + } return s_impl.TakeLast(source, duration); } @@ -1005,11 +1235,19 @@ public static IObservable TakeLast(this IObservable s public static IObservable TakeLast(this IObservable source, TimeSpan duration, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (duration < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(duration)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.TakeLast(source, duration, scheduler); } @@ -1033,13 +1271,24 @@ public static IObservable TakeLast(this IObservable s public static IObservable TakeLast(this IObservable source, TimeSpan duration, IScheduler timerScheduler, IScheduler loopScheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (duration < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(duration)); + } + if (timerScheduler == null) + { throw new ArgumentNullException(nameof(timerScheduler)); + } + if (loopScheduler == null) + { throw new ArgumentNullException(nameof(loopScheduler)); + } return s_impl.TakeLast(source, duration, timerScheduler, loopScheduler); } @@ -1064,9 +1313,14 @@ public static IObservable TakeLast(this IObservable s public static IObservable> TakeLastBuffer(this IObservable source, TimeSpan duration) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (duration < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(duration)); + } return s_impl.TakeLastBuffer(source, duration); } @@ -1088,11 +1342,19 @@ public static IObservable> TakeLastBuffer(this IObservab public static IObservable> TakeLastBuffer(this IObservable source, TimeSpan duration, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (duration < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(duration)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.TakeLastBuffer(source, duration, scheduler); } @@ -1112,7 +1374,9 @@ public static IObservable> TakeLastBuffer(this IObservab public static IObservable TakeUntil(this IObservable source, DateTimeOffset endTime) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.TakeUntil(source, endTime); } @@ -1129,9 +1393,14 @@ public static IObservable TakeUntil(this IObservable public static IObservable TakeUntil(this IObservable source, DateTimeOffset endTime, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.TakeUntil(source, endTime, scheduler); } @@ -1167,9 +1436,14 @@ public static IObservable TakeUntil(this IObservable public static IObservable Throttle(this IObservable source, TimeSpan dueTime) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dueTime < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(dueTime)); + } return s_impl.Throttle(source, dueTime); } @@ -1202,11 +1476,19 @@ public static IObservable Throttle(this IObservable s public static IObservable Throttle(this IObservable source, TimeSpan dueTime, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dueTime < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(dueTime)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Throttle(source, dueTime, scheduler); } @@ -1230,9 +1512,14 @@ public static IObservable Throttle(this IObservable s public static IObservable Throttle(this IObservable source, Func> throttleDurationSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (throttleDurationSelector == null) + { throw new ArgumentNullException(nameof(throttleDurationSelector)); + } return s_impl.Throttle(source, throttleDurationSelector); } @@ -1251,7 +1538,9 @@ public static IObservable Throttle(this IObservable public static IObservable> TimeInterval(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.TimeInterval(source); } @@ -1267,9 +1556,14 @@ public static IObservable> TimeInterval(this IObs public static IObservable> TimeInterval(this IObservable source, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.TimeInterval(source, scheduler); } @@ -1307,9 +1601,14 @@ public static IObservable> TimeInterval(this IObs public static IObservable Timeout(this IObservable source, TimeSpan dueTime) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dueTime < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(dueTime)); + } return s_impl.Timeout(source, dueTime); } @@ -1342,11 +1641,19 @@ public static IObservable Timeout(this IObservable so public static IObservable Timeout(this IObservable source, TimeSpan dueTime, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dueTime < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(dueTime)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Timeout(source, dueTime, scheduler); } @@ -1378,11 +1685,19 @@ public static IObservable Timeout(this IObservable so public static IObservable Timeout(this IObservable source, TimeSpan dueTime, IObservable other) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dueTime < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(dueTime)); + } + if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return s_impl.Timeout(source, dueTime, other); } @@ -1415,13 +1730,24 @@ public static IObservable Timeout(this IObservable so public static IObservable Timeout(this IObservable source, TimeSpan dueTime, IObservable other, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dueTime < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(dueTime)); + } + if (other == null) + { throw new ArgumentNullException(nameof(other)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Timeout(source, dueTime, other, scheduler); } @@ -1448,7 +1774,9 @@ public static IObservable Timeout(this IObservable so public static IObservable Timeout(this IObservable source, DateTimeOffset dueTime) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Timeout(source, dueTime); } @@ -1472,9 +1800,14 @@ public static IObservable Timeout(this IObservable so public static IObservable Timeout(this IObservable source, DateTimeOffset dueTime, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Timeout(source, dueTime, scheduler); } @@ -1497,9 +1830,14 @@ public static IObservable Timeout(this IObservable so public static IObservable Timeout(this IObservable source, DateTimeOffset dueTime, IObservable other) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return s_impl.Timeout(source, dueTime, other); } @@ -1523,11 +1861,19 @@ public static IObservable Timeout(this IObservable so public static IObservable Timeout(this IObservable source, DateTimeOffset dueTime, IObservable other, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } + if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return s_impl.Timeout(source, dueTime, other, scheduler); } @@ -1549,9 +1895,14 @@ public static IObservable Timeout(this IObservable so public static IObservable Timeout(this IObservable source, Func> timeoutDurationSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeoutDurationSelector == null) + { throw new ArgumentNullException(nameof(timeoutDurationSelector)); + } return s_impl.Timeout(source, timeoutDurationSelector); } @@ -1570,11 +1921,19 @@ public static IObservable Timeout(this IObservable Timeout(this IObservable source, Func> timeoutDurationSelector, IObservable other) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeoutDurationSelector == null) + { throw new ArgumentNullException(nameof(timeoutDurationSelector)); + } + if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return s_impl.Timeout(source, timeoutDurationSelector, other); } @@ -1593,11 +1952,19 @@ public static IObservable Timeout(this IObservable Timeout(this IObservable source, IObservable firstTimeout, Func> timeoutDurationSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (firstTimeout == null) + { throw new ArgumentNullException(nameof(firstTimeout)); + } + if (timeoutDurationSelector == null) + { throw new ArgumentNullException(nameof(timeoutDurationSelector)); + } return s_impl.Timeout(source, firstTimeout, timeoutDurationSelector); } @@ -1617,13 +1984,24 @@ public static IObservable Timeout(this IObservable Timeout(this IObservable source, IObservable firstTimeout, Func> timeoutDurationSelector, IObservable other) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (firstTimeout == null) + { throw new ArgumentNullException(nameof(firstTimeout)); + } + if (timeoutDurationSelector == null) + { throw new ArgumentNullException(nameof(timeoutDurationSelector)); + } + if (other == null) + { throw new ArgumentNullException(nameof(other)); + } return s_impl.Timeout(source, firstTimeout, timeoutDurationSelector, other); } @@ -1664,7 +2042,9 @@ public static IObservable Timer(DateTimeOffset dueTime) public static IObservable Timer(TimeSpan dueTime, TimeSpan period) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } return s_impl.Timer(dueTime, period); } @@ -1679,7 +2059,9 @@ public static IObservable Timer(TimeSpan dueTime, TimeSpan period) public static IObservable Timer(DateTimeOffset dueTime, TimeSpan period) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } return s_impl.Timer(dueTime, period); } @@ -1694,7 +2076,9 @@ public static IObservable Timer(DateTimeOffset dueTime, TimeSpan period) public static IObservable Timer(TimeSpan dueTime, IScheduler scheduler) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Timer(dueTime, scheduler); } @@ -1709,7 +2093,9 @@ public static IObservable Timer(TimeSpan dueTime, IScheduler scheduler) public static IObservable Timer(DateTimeOffset dueTime, IScheduler scheduler) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Timer(dueTime, scheduler); } @@ -1726,9 +2112,14 @@ public static IObservable Timer(DateTimeOffset dueTime, IScheduler schedul public static IObservable Timer(TimeSpan dueTime, TimeSpan period, IScheduler scheduler) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Timer(dueTime, period, scheduler); } @@ -1745,9 +2136,14 @@ public static IObservable Timer(TimeSpan dueTime, TimeSpan period, ISchedu public static IObservable Timer(DateTimeOffset dueTime, TimeSpan period, IScheduler scheduler) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Timer(dueTime, period, scheduler); } @@ -1766,7 +2162,9 @@ public static IObservable Timer(DateTimeOffset dueTime, TimeSpan period, I public static IObservable> Timestamp(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.Timestamp(source); } @@ -1782,9 +2180,14 @@ public static IObservable> Timestamp(this IObserva public static IObservable> Timestamp(this IObservable source, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Timestamp(source, scheduler); } @@ -1812,9 +2215,14 @@ public static IObservable> Timestamp(this IObserva public static IObservable> Window(this IObservable source, TimeSpan timeSpan) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } return s_impl.Window(source, timeSpan); } @@ -1837,11 +2245,19 @@ public static IObservable> Window(this IObservable public static IObservable> Window(this IObservable source, TimeSpan timeSpan, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Window(source, timeSpan, scheduler); } @@ -1871,11 +2287,19 @@ public static IObservable> Window(this IObservable public static IObservable> Window(this IObservable source, TimeSpan timeSpan, TimeSpan timeShift) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } + if (timeShift < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeShift)); + } return s_impl.Window(source, timeSpan, timeShift); } @@ -1906,13 +2330,24 @@ public static IObservable> Window(this IObservable public static IObservable> Window(this IObservable source, TimeSpan timeSpan, TimeSpan timeShift, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } + if (timeShift < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeShift)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Window(source, timeSpan, timeShift, scheduler); } @@ -1940,11 +2375,19 @@ public static IObservable> Window(this IObservable public static IObservable> Window(this IObservable source, TimeSpan timeSpan, int count) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } + if (count <= 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } return s_impl.Window(source, timeSpan, count); } @@ -1969,13 +2412,24 @@ public static IObservable> Window(this IObservable public static IObservable> Window(this IObservable source, TimeSpan timeSpan, int count, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (timeSpan < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(timeSpan)); + } + if (count <= 0) + { throw new ArgumentOutOfRangeException(nameof(count)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Window(source, timeSpan, count, scheduler); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Aggregate.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Aggregate.cs index 52a39391b1..22b0498166 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Aggregate.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Aggregate.cs @@ -29,7 +29,7 @@ public _(Func accumulator, IObserver observe : base(observer) { _accumulator = accumulator; - _accumulation = default(TSource); + _accumulation = default; _hasAccumulation = false; } @@ -85,7 +85,7 @@ public Aggregate(IObservable source, TAccumulate seed, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func _accumulator; private TAccumulate _accumulation; @@ -141,7 +141,7 @@ public Aggregate(IObservable source, TAccumulate seed, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func _accumulator; private readonly Func _resultSelector; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/All.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/All.cs index 6850c7e8b0..83238d9df8 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/All.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/All.cs @@ -19,7 +19,7 @@ public All(IObservable source, Func predicate) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func _predicate; @@ -48,7 +48,7 @@ public override void OnNext(TSource value) ForwardOnCompleted(); } } - + public override void OnCompleted() { ForwardOnNext(true); diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Amb.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Amb.cs index 88abafd468..5742502b5a 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Amb.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Amb.cs @@ -24,11 +24,9 @@ public Amb(IObservable left, IObservable right) internal sealed class AmbCoordinator : IDisposable { - readonly AmbObserver leftObserver; - - readonly AmbObserver rightObserver; - - int winner; + private readonly AmbObserver leftObserver; + private readonly AmbObserver rightObserver; + private int winner; public AmbCoordinator(IObserver observer) { @@ -69,21 +67,18 @@ public bool TryWin(bool isLeft) return false; } - sealed class AmbObserver : IObserver, IDisposable + private sealed class AmbObserver : IObserver, IDisposable { - readonly IObserver downstream; - - readonly AmbCoordinator parent; - - readonly bool isLeft; - - IDisposable upstream; + private readonly IObserver downstream; + private readonly AmbCoordinator parent; + private readonly bool isLeft; + private IDisposable upstream; /// /// If true, this observer won the race and now can emit /// on a fast path. /// - bool iwon; + private bool iwon; public AmbObserver(IObserver downstream, AmbCoordinator parent, bool isLeft) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/AmbMany.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/AmbMany.cs index cd04338508..8b4c1cbd8c 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/AmbMany.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/AmbMany.cs @@ -2,18 +2,16 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; using System.Collections.Generic; +using System.Linq; using System.Reactive.Disposables; -using System.Text; using System.Threading; -using System.Linq; namespace System.Reactive.Linq.ObservableImpl { internal sealed class AmbManyArray : BasicProducer { - readonly IObservable[] sources; + private readonly IObservable[] sources; public AmbManyArray(IObservable[] sources) { @@ -28,7 +26,7 @@ protected override IDisposable Run(IObserver observer) internal sealed class AmbManyEnumerable : BasicProducer { - readonly IEnumerable> sources; + private readonly IEnumerable> sources; public AmbManyEnumerable(IEnumerable> sources) { @@ -56,11 +54,9 @@ protected override IDisposable Run(IObserver observer) internal sealed class AmbCoordinator : IDisposable { - readonly IObserver downstream; - - readonly InnerObserver[] observers; - - int winner; + private readonly IObserver downstream; + private readonly InnerObserver[] observers; + private int winner; internal AmbCoordinator(IObserver downstream, int n) { @@ -116,7 +112,7 @@ public void Dispose() } } - bool TryWin(int index) + private bool TryWin(int index) { if (Volatile.Read(ref winner) == -1 && Interlocked.CompareExchange(ref winner, index, -1) == -1) { @@ -134,15 +130,11 @@ bool TryWin(int index) internal sealed class InnerObserver : IObserver, IDisposable { - readonly IObserver downstream; - - readonly AmbCoordinator parent; - - readonly int index; - - IDisposable upstream; - - bool won; + private readonly IObserver downstream; + private readonly AmbCoordinator parent; + private readonly int index; + private IDisposable upstream; + private bool won; public InnerObserver(AmbCoordinator parent, int index) { @@ -197,7 +189,8 @@ public void OnNext(T value) { won = true; downstream.OnNext(value); - } else + } + else { Dispose(); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Any.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Any.cs index 4415ccd08a..7a7570e81e 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Any.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Any.cs @@ -19,7 +19,7 @@ public Count(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { public _(IObserver observer) : base(observer) @@ -55,7 +55,7 @@ public Predicate(IObservable source, Func predicate) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func _predicate; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/AppendPrepend.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/AppendPrepend.cs index e2c5c65025..c4eef9ffcd 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/AppendPrepend.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/AppendPrepend.cs @@ -7,7 +7,7 @@ namespace System.Reactive.Linq.ObservableImpl { - static internal class AppendPrepend + internal static class AppendPrepend { internal interface IAppendPrepend : IObservable { @@ -37,11 +37,15 @@ public IAppendPrepend Append(TSource value) var prev = new Node(_value); if (_append) + { return new AppendPrependMultiple(_source, null, new Node(prev, value), Scheduler); + } else + { return new AppendPrependMultiple(_source, prev, new Node(value), Scheduler); + } } public IAppendPrepend Prepend(TSource value) @@ -49,11 +53,15 @@ public IAppendPrepend Prepend(TSource value) var prev = new Node(_value); if (_append) + { return new AppendPrependMultiple(_source, new Node(value), prev, Scheduler); + } else + { return new AppendPrependMultiple(_source, new Node(prev, value), null, Scheduler); + } } protected override _ CreateSink(IObserver observer) => new _(this, observer); @@ -174,10 +182,14 @@ public _(AppendPrependMultiple parent, IObserver observer) _scheduler = parent.Scheduler; if (parent._prepends != null) + { _prepends = parent._prepends.ToArray(); + } if (parent._appends != null) + { _appends = parent._appends.ToReverseArray(); + } } public void Run() @@ -262,7 +274,9 @@ public State(ICancelable flag, _ sink, TSource[] array, Action<_> c) private void LoopRec(State state, Action recurse) { if (state._flag.IsDisposed) + { return; + } var current = state._array[state._current]; ForwardOnNext(current); @@ -281,7 +295,7 @@ private void LoopRec(State state, Action recurse) private void Loop(State state, ICancelable cancel) { var array = state._array; - int i = 0; + var i = 0; while (!cancel.IsDisposed) { @@ -306,7 +320,7 @@ private sealed class Node public readonly T Value; public readonly int Count; - public Node(T value) + public Node(T value) : this(null, value) { } @@ -314,14 +328,18 @@ public Node(T value) public Node(Node parent, T value) { Parent = parent; - Value = value; + Value = value; if (parent == null) + { Count = 1; + } else { if (parent.Count == int.MaxValue) + { throw new NotSupportedException($"Consecutive appends or prepends with a count of more than int.MaxValue ({int.MaxValue}) are not supported."); + } Count = parent.Count + 1; } @@ -331,7 +349,7 @@ public T[] ToArray() { var array = new T[Count]; var current = this; - for (int i = 0; i < Count; i++) + for (var i = 0; i < Count; i++) { array[i] = current.Value; current = current.Parent; @@ -343,7 +361,7 @@ public T[] ToReverseArray() { var array = new T[Count]; var current = this; - for (int i = Count - 1; i >= 0; i--) + for (var i = Count - 1; i >= 0; i--) { array[i] = current.Value; current = current.Parent; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/AutoConnect.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/AutoConnect.cs index 0c756438f9..c02ed1c950 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/AutoConnect.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/AutoConnect.cs @@ -14,13 +14,10 @@ namespace System.Reactive.Linq.ObservableImpl /// The upstream value type. internal sealed class AutoConnect : IObservable { - readonly IConnectableObservable source; - - readonly int minObservers; - - readonly Action onConnect; - - int count; + private readonly IConnectableObservable source; + private readonly int minObservers; + private readonly Action onConnect; + private int count; internal AutoConnect(IConnectableObservable source, int minObservers, Action onConnect) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Average.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Average.cs index 23cbeba3af..dce6595e3a 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Average.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Average.cs @@ -185,7 +185,7 @@ public AverageInt32(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private long _sum; private long _count; @@ -241,7 +241,7 @@ public AverageInt64(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private long _sum; private long _count; @@ -477,7 +477,7 @@ public AverageInt32Nullable(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private long _sum; private long _count; @@ -537,7 +537,7 @@ public AverageInt64Nullable(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private long _sum; private long _count; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Buffer.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Buffer.cs index 9cba79fcbd..3f565c52b7 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Buffer.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Buffer.cs @@ -12,9 +12,8 @@ internal static class Buffer { internal sealed class CountExact : Producer, CountExact.ExactSink> { - readonly IObservable _source; - - readonly int _count; + private readonly IObservable _source; + private readonly int _count; public CountExact(IObservable source, int count) { @@ -28,11 +27,9 @@ public CountExact(IObservable source, int count) internal sealed class ExactSink : Sink> { - readonly int _count; - - int _index; - - IList _buffer; + private readonly int _count; + private int _index; + private IList _buffer; internal ExactSink(IObserver> observer, int count) : base(observer) { @@ -79,17 +76,15 @@ public override void OnCompleted() ForwardOnNext(buffer); } ForwardOnCompleted(); - } + } } } internal sealed class CountSkip : Producer, CountSkip.SkipSink> { - readonly IObservable _source; - - readonly int _count; - - readonly int _skip; + private readonly IObservable _source; + private readonly int _count; + private readonly int _skip; public CountSkip(IObservable source, int count, int skip) { @@ -104,13 +99,10 @@ public CountSkip(IObservable source, int count, int skip) internal sealed class SkipSink : Sink> { - readonly int _count; - - readonly int _skip; - - int _index; - - IList _buffer; + private readonly int _count; + private readonly int _skip; + private int _index; + private IList _buffer; internal SkipSink(IObserver> observer, int count, int skip) : base(observer) { @@ -183,14 +175,12 @@ public CountOverlap(IObservable source, int count, int skip) protected override void Run(OverlapSink sink) => sink.Run(_source); - internal sealed class OverlapSink : Sink> + internal sealed class OverlapSink : Sink> { private readonly Queue> _queue; - private readonly int _count; private readonly int _skip; - - int _n; + private int _n; public OverlapSink(IObserver> observer, int count, int skip) : base(observer) @@ -210,19 +200,25 @@ private void CreateWindow() public override void OnNext(TSource value) { foreach (var s in _queue) + { s.Add(value); + } var c = _n - _count + 1; if (c >= 0 && c % _skip == 0) { var s = _queue.Dequeue(); if (s.Count > 0) + { ForwardOnNext(s); + } } _n++; if (_n % _skip == 0) + { CreateWindow(); + } } public override void OnError(Exception error) @@ -239,7 +235,9 @@ public override void OnCompleted() { var s = _queue.Dequeue(); if (s.Count > 0) + { ForwardOnNext(s); + } } ForwardOnCompleted(); @@ -250,7 +248,6 @@ public override void OnCompleted() internal sealed class TimeSliding : Producer, TimeSliding._> { private readonly IObservable _source; - private readonly TimeSpan _timeSpan; private readonly TimeSpan _timeShift; private readonly IScheduler _scheduler; @@ -267,14 +264,12 @@ public TimeSliding(IObservable source, TimeSpan timeSpan, TimeSpan time protected override void Run(_ sink) => sink.Run(this); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly TimeSpan _timeShift; private readonly IScheduler _scheduler; - private readonly object _gate = new object(); private readonly Queue> _q = new Queue>(); - private IDisposable _timerSerial; public _(TimeSliding parent, IObserver> observer) @@ -329,18 +324,27 @@ private void CreateTimer() isShift = true; } else if (_nextSpan < _nextShift) + { isSpan = true; + } else + { isShift = true; + } var newTotalTime = isSpan ? _nextSpan : _nextShift; var ts = newTotalTime - _totalTime; _totalTime = newTotalTime; if (isSpan) + { _nextSpan += _timeShift; + } + if (isShift) + { _nextShift += _timeShift; + } m.Disposable = _scheduler.Schedule((@this: this, isSpan, isShift), ts, (_, tuple) => tuple.@this.Tick(tuple.isSpan, tuple.isShift)); } @@ -377,7 +381,9 @@ public override void OnNext(TSource value) lock (_gate) { foreach (var s in _q) + { s.Add(value); + } } } @@ -386,7 +392,9 @@ public override void OnError(Exception error) lock (_gate) { while (_q.Count > 0) + { _q.Dequeue().Clear(); + } ForwardOnError(error); } @@ -397,7 +405,9 @@ public override void OnCompleted() lock (_gate) { while (_q.Count > 0) + { ForwardOnNext(_q.Dequeue()); + } ForwardOnCompleted(); } @@ -408,7 +418,6 @@ public override void OnCompleted() internal sealed class TimeHopping : Producer, TimeHopping._> { private readonly IObservable _source; - private readonly TimeSpan _timeSpan; private readonly IScheduler _scheduler; @@ -423,7 +432,7 @@ public TimeHopping(IObservable source, TimeSpan timeSpan, IScheduler sc protected override void Run(_ sink) => sink.Run(this); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly object _gate = new object(); @@ -433,7 +442,6 @@ public _(IObserver> observer) } private List _list; - private IDisposable _periodicDisposable; public void Run(TimeHopping parent) @@ -510,10 +518,9 @@ public Ferry(IObservable source, TimeSpan timeSpan, int count, ISchedul protected override void Run(_ sink) => sink.Run(); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly Ferry _parent; - private readonly object _gate = new object(); private IDisposable _timerSerial; @@ -563,7 +570,9 @@ private IDisposable Tick(int id) lock (_gate) { if (id != _windowId) + { return d; + } _n = 0; newId = ++_windowId; @@ -600,7 +609,9 @@ public override void OnNext(TSource value) } if (newWindow) + { CreateTimer(newId); + } } } @@ -642,12 +653,11 @@ public Selector(IObservable source, Func> b protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly object _gate = new object(); private readonly AsyncLock _bufferGate = new AsyncLock(); private IDisposable _bufferClosingSerialDisposable; - private readonly Func> _bufferClosingSelector; public _(Selector parent, IObserver> observer) @@ -779,7 +789,7 @@ public Boundaries(IObservable source, IObservable buffe protected override void Run(_ sink) => sink.Run(this); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly object _gate = new object(); @@ -789,7 +799,6 @@ public _(IObserver> observer) } private IList _buffer; - private IDisposable _boundariesDisposable; public void Run(Boundaries parent) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Case.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Case.cs index 46883464f7..666381b9ba 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Case.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Case.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System.Collections.Generic; -using System.Reactive.Disposables; namespace System.Reactive.Linq.ObservableImpl { @@ -23,7 +22,9 @@ public Case(Func selector, IDictionary> sou public IObservable Eval() { if (_sources.TryGetValue(_selector(), out var res)) + { return res; + } return _defaultSource; } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Cast.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Cast.cs index 56bfde3a40..a9254ace3d 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Cast.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Cast.cs @@ -17,7 +17,7 @@ public Cast(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { public _(IObserver observer) : base(observer) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Catch.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Catch.cs index 29830e2230..bbf1ca355c 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Catch.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Catch.cs @@ -31,7 +31,9 @@ public _(IObserver observer) protected override IEnumerable> Extract(IObservable source) { if (source is Catch @catch) + { return @catch._sources; + } return null; } @@ -47,9 +49,13 @@ public override void OnError(Exception error) protected override void Done() { if (_lastException != null) + { ForwardOnError(_lastException); + } else + { ForwardOnCompleted(); + } } protected override bool Fail(Exception error) @@ -90,8 +96,7 @@ public _(Func> handler, IObserver obse _handler = handler; } - bool _once; - + private bool _once; private IDisposable _subscription; public override void Run(IObservable source) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Collect.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Collect.cs index 78ed61eae0..b846c24656 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Collect.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Collect.cs @@ -22,9 +22,9 @@ public Collect(IObservable source, Func getInitialCollector, F private sealed class _ : PushToPullSink { - readonly object _gate; - readonly Func _merge; - readonly Func _getNewCollector; + private readonly object _gate; + private readonly Func _merge; + private readonly Func _getNewCollector; public _(Func merge, Func getNewCollector, TResult collector) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/CombineLatest.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/CombineLatest.cs index a35829f494..2cd24e89af 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/CombineLatest.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/CombineLatest.cs @@ -422,7 +422,9 @@ public void Run(IEnumerable> sources) _values = new List(N); for (var i = 0; i < N; i++) - _values.Add(default(TSource)); + { + _values.Add(default); + } _isDone = new bool[N]; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ConcatMany.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ConcatMany.cs index 792bc439cd..d88bfeccd5 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ConcatMany.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ConcatMany.cs @@ -10,7 +10,7 @@ namespace System.Reactive.Linq.ObservableImpl { internal sealed class ConcatMany : IObservable { - readonly IObservable> sources; + private readonly IObservable> sources; internal ConcatMany(IObservable> sources) { @@ -31,21 +31,14 @@ public IDisposable Subscribe(IObserver observer) internal sealed class ConcatManyOuterObserver : IObserver>, IDisposable { - readonly IObserver downstream; - - readonly ConcurrentQueue> queue; - - readonly InnerObserver innerObserver; - - IDisposable upstream; - - int trampoline; - - Exception error; - - bool done; - - int active; + private readonly IObserver downstream; + private readonly ConcurrentQueue> queue; + private readonly InnerObserver innerObserver; + private IDisposable upstream; + private int trampoline; + private Exception error; + private bool done; + private int active; internal ConcatManyOuterObserver(IObserver downstream) { @@ -65,12 +58,12 @@ public void Dispose() DisposeMain(); } - void DisposeMain() + private void DisposeMain() { Disposable.TryDispose(ref upstream); } - bool IsDisposed() + private bool IsDisposed() { return Disposable.GetIsDisposed(ref upstream); } @@ -96,12 +89,12 @@ public void OnNext(IObservable value) Drain(); } - void InnerNext(T item) + private void InnerNext(T item) { downstream.OnNext(item); } - void InnerError(Exception error) + private void InnerError(Exception error) { if (innerObserver.Finish()) { @@ -114,7 +107,7 @@ void InnerError(Exception error) } } - void InnerComplete() + private void InnerComplete() { if (innerObserver.Finish()) { @@ -123,7 +116,7 @@ void InnerComplete() } } - void Drain() + private void Drain() { if (Interlocked.Increment(ref trampoline) != 1) { @@ -134,7 +127,10 @@ void Drain() { if (IsDisposed()) { - while (queue.TryDequeue(out var _)) ; + while (queue.TryDequeue(out var _)) + { + ; + } } else { @@ -177,7 +173,7 @@ void Drain() internal sealed class InnerObserver : IObserver, IDisposable { - readonly ConcatManyOuterObserver parent; + private readonly ConcatManyOuterObserver parent; internal IDisposable upstream; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Contains.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Contains.cs index 55d1645ed4..9229881a6b 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Contains.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Contains.cs @@ -23,7 +23,7 @@ public Contains(IObservable source, TSource value, IEqualityComparer sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly TSource _value; private readonly IEqualityComparer _comparer; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Count.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Count.cs index 598e9ca8be..37e24b5533 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Count.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Count.cs @@ -19,7 +19,7 @@ public All(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private int _count; @@ -66,7 +66,7 @@ public Predicate(IObservable source, Func predicate) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func _predicate; private int _count; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/DefaultIfEmpty.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/DefaultIfEmpty.cs index 3495160290..95b7cfa595 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/DefaultIfEmpty.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/DefaultIfEmpty.cs @@ -40,7 +40,9 @@ public override void OnNext(TSource value) public override void OnCompleted() { if (!_found) + { ForwardOnNext(_defaultValue); + } ForwardOnCompleted(); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Defer.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Defer.cs index da19cc6f2b..5e9e105f58 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Defer.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Defer.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Reactive.Disposables; namespace System.Reactive.Linq.ObservableImpl { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Delay.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Delay.cs index c03dc9bf09..d3dbe9a89a 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Delay.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Delay.cs @@ -147,7 +147,10 @@ protected void DrainQueue(Action recurse) lock (_gate) { if (_hasFailed) + { return; + } + _running = true; } @@ -441,7 +444,7 @@ public Absolute(IObservable source, DateTimeOffset dueTime, IScheduler protected override void Run(_ sink) => sink.Run(this); - new private sealed class S : Base.S + private new sealed class S : Base.S { public S(Absolute parent, IObserver observer) : base(parent, observer) @@ -493,7 +496,7 @@ private IDisposable Start() } } - new private sealed class L : Base.L + private new sealed class L : Base.L { public L(Absolute parent, IObserver observer) : base(parent, observer) @@ -545,7 +548,7 @@ public Relative(IObservable source, TimeSpan dueTime, IScheduler schedu protected override void Run(_ sink) => sink.Run(this); - new private sealed class S : Base.S + private new sealed class S : Base.S { public S(Relative parent, IObserver observer) : base(parent, observer) @@ -560,7 +563,7 @@ protected override void RunCore(Relative parent) } } - new private sealed class L : Base.L + private new sealed class L : Base.L { public L(Relative parent, IObserver observer) : base(parent, observer) @@ -730,7 +733,7 @@ public Selector(IObservable source, Func> protected override void Run(Base._ sink) => sink.Run(this); - new private sealed class _ : Base._ + private new sealed class _ : Base._ { public _(Func> delaySelector, IObserver observer) : base(delaySelector, observer) @@ -757,7 +760,7 @@ public SelectorWithSubscriptionDelay(IObservable source, IObservable._ sink) => sink.Run(this); - new private sealed class _ : Base._ + private new sealed class _ : Base._ { public _(Func> delaySelector, IObserver observer) : base(delaySelector, observer) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Dematerialize.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Dematerialize.cs index 5269eee21b..7ccb12338b 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Dematerialize.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Dematerialize.cs @@ -17,7 +17,7 @@ public Dematerialize(IObservable> source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink, TSource> + internal sealed class _ : Sink, TSource> { public _(IObserver observer) : base(observer) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Distinct.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Distinct.cs index db7a607dbd..62190f5230 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Distinct.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Distinct.cs @@ -51,7 +51,9 @@ public override void OnNext(TSource value) } if (hasAdded) + { ForwardOnNext(value); + } } } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/DoWhile.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/DoWhile.cs index 22df57ce7d..5fb82adf63 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/DoWhile.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/DoWhile.cs @@ -25,7 +25,9 @@ public IEnumerable> GetSources() { yield return _source; while (_condition()) + { yield return _source; + } } internal sealed class _ : ConcatSink diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ElementAtOrDefault.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ElementAtOrDefault.cs index d1d6554e16..cdf8d94eab 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ElementAtOrDefault.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ElementAtOrDefault.cs @@ -42,7 +42,7 @@ public override void OnNext(TSource value) public override void OnCompleted() { - ForwardOnNext(default(TSource)); + ForwardOnNext(default); ForwardOnCompleted(); } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Empty.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Empty.cs index 3dfe86217a..16a50e862e 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Empty.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Empty.cs @@ -29,7 +29,7 @@ public _(IObserver observer) public void Run(IScheduler scheduler) { - SetUpstream(scheduler.Schedule(this, (s, target) => + SetUpstream(scheduler.Schedule(this, (s, target) => { target.OnCompleted(); return Disposable.Empty; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstAsync.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstAsync.cs index 14a1b6fa96..5df5fe20bc 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstAsync.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstAsync.cs @@ -21,7 +21,7 @@ public Sequence(IObservable source) internal sealed class _ : IdentitySink { - bool _found; + private bool _found; public _(IObserver observer) : base(observer) @@ -38,7 +38,9 @@ public override void OnNext(TSource value) public override void OnCompleted() { if (!_found) + { ForwardOnError(new InvalidOperationException(Strings_Linq.NO_ELEMENTS)); + } } } } @@ -61,8 +63,7 @@ public Predicate(IObservable source, Func predicate) internal sealed class _ : IdentitySink { private readonly Func _predicate; - - bool _found; + private bool _found; public _(Func predicate, IObserver observer) : base(observer) @@ -95,7 +96,9 @@ public override void OnNext(TSource value) public override void OnCompleted() { if (!_found) + { ForwardOnError(new InvalidOperationException(Strings_Linq.NO_MATCHING_ELEMENTS)); + } } } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstLastBlocking.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstLastBlocking.cs index 111a4422e0..b1b61b077b 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstLastBlocking.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstLastBlocking.cs @@ -2,15 +2,11 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; -using System.Collections.Generic; using System.Reactive.Disposables; -using System.Text; using System.Threading; namespace System.Reactive.Linq.ObservableImpl { - internal abstract class BaseBlocking : CountdownEvent, IObserver { protected IDisposable _upstream; @@ -18,8 +14,7 @@ internal abstract class BaseBlocking : CountdownEvent, IObserver internal T _value; internal bool _hasValue; internal Exception _error; - - int once; + private int once; internal BaseBlocking() : base(1) { } @@ -70,7 +65,7 @@ public override void OnCompleted() public override void OnError(Exception error) { - base.OnError(error); + base.OnError(error); if (!Disposable.GetIsDisposed(ref _upstream)) { Disposable.TryDispose(ref _upstream); diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstOrDefaultAsync.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstOrDefaultAsync.cs index 59751153fe..df7706457e 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstOrDefaultAsync.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/FirstOrDefaultAsync.cs @@ -34,7 +34,7 @@ public override void OnNext(TSource value) public override void OnCompleted() { - ForwardOnNext(default(TSource)); + ForwardOnNext(default); ForwardOnCompleted(); } } @@ -88,7 +88,7 @@ public override void OnNext(TSource value) public override void OnCompleted() { - ForwardOnNext(default(TSource)); + ForwardOnNext(default); ForwardOnCompleted(); } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/For.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/For.cs index 9a81b42a46..2892c41fdd 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/For.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/For.cs @@ -24,7 +24,9 @@ public For(IEnumerable source, Func> resu public IEnumerable> GetSources() { foreach (var item in _source) + { yield return _resultSelector(item); + } } internal sealed class _ : ConcatSink diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/FromEvent.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/FromEvent.cs index c352170d76..3ae2d740f4 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/FromEvent.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/FromEvent.cs @@ -221,7 +221,9 @@ protected override IDisposable Run(IObserver observer) // lock. Future subscriptions will cause a new session to be created. // if (_session == null) + { _session = new Session(this); + } connection = _session.Connect(observer); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/FromEventPattern.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/FromEventPattern.cs index e00b8156ff..8d83209c3f 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/FromEventPattern.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/FromEventPattern.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System.Reactive.Concurrency; -using System.Reactive.Disposables; using System.Reflection; using System.Threading; @@ -120,9 +119,9 @@ protected override IDisposable AddHandler(Delegate handler) return new RemoveHandlerDisposable(removeHandler); } - sealed class RemoveHandlerDisposable : IDisposable + private sealed class RemoveHandlerDisposable : IDisposable { - Action _removeHandler; + private Action _removeHandler; public RemoveHandlerDisposable(Action removeHandler) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Generate.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Generate.cs index c87bd33469..438d8f6eae 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Generate.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Generate.cs @@ -32,9 +32,9 @@ public NoTime(TState initialState, Func condition, Func { - readonly Func _condition; - readonly Func _iterate; - readonly Func _resultSelector; + private readonly Func _condition; + private readonly Func _iterate; + private readonly Func _resultSelector; public _(NoTime parent, IObserver observer) : base(observer) @@ -175,10 +175,10 @@ public Absolute(TState initialState, Func condition, Func { - readonly Func _condition; - readonly Func _iterate; - readonly Func _resultSelector; - readonly Func _timeSelector; + private readonly Func _condition; + private readonly Func _iterate; + private readonly Func _resultSelector; + private readonly Func _timeSelector; public _(Absolute parent, IObserver observer) : base(observer) @@ -193,7 +193,6 @@ public _(Absolute parent, IObserver observer) private bool _first; private bool _hasResult; - private TResult _result; public void Run(IScheduler outerScheduler, TState initialState) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/GetEnumerator.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/GetEnumerator.cs index 66b652ef25..88be3a6921 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/GetEnumerator.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/GetEnumerator.cs @@ -61,10 +61,14 @@ public bool MoveNext() _gate.Wait(); if (_disposed) + { throw new ObjectDisposedException(""); + } if (_queue.TryDequeue(out _current)) + { return true; + } _error.ThrowIfNotNull(); diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupBy.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupBy.cs index b789318012..94676f4452 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupBy.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupBy.cs @@ -29,7 +29,7 @@ public GroupBy(IObservable source, Func keySelector, Fun protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly Func _keySelector; private readonly Func _elementSelector; @@ -154,7 +154,9 @@ public override void OnCompleted() _null?.OnCompleted(); foreach (var w in _map.Values) + { w.OnCompleted(); + } ForwardOnCompleted(); } @@ -164,7 +166,9 @@ private void Error(Exception exception) _null?.OnError(exception); foreach (var w in _map.Values) + { w.OnError(exception); + } ForwardOnError(exception); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupByUntil.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupByUntil.cs index cec104de22..d20760717b 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupByUntil.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupByUntil.cs @@ -33,7 +33,7 @@ public GroupByUntil(IObservable source, Func keySelector protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly object _gate = new object(); private readonly object _nullGate = new object(); @@ -139,7 +139,9 @@ public override void OnNext(TSource value) } lock (_gate) + { ForwardOnNext(group); + } var durationObserver = new DurationObserver(this, key, writer); _groupDisposable.Add(durationObserver); @@ -241,15 +243,21 @@ public override void OnCompleted() // var @null = default(ISubject); lock (_nullGate) + { @null = _null; + } @null?.OnCompleted(); foreach (var w in _map.Values) + { w.OnCompleted(); + } lock (_gate) + { ForwardOnCompleted(); + } } private void Error(Exception exception) @@ -261,15 +269,21 @@ private void Error(Exception exception) // var @null = default(ISubject); lock (_nullGate) + { @null = _null; + } @null?.OnError(exception); foreach (var w in _map.Values) + { w.OnError(exception); + } lock (_gate) + { ForwardOnError(exception); + } } } } @@ -311,7 +325,9 @@ public TValue GetOrAdd(TKey key, Func valueFactory, out bool added) while (true) { if (_map.TryGetValue(key, out value)) + { break; + } if (!hasNewValue) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupJoin.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupJoin.cs index 09b6133920..1e24389dfe 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupJoin.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/GroupJoin.cs @@ -107,7 +107,7 @@ public override void OnNext(TLeft value) var window = new WindowObservable(s, _parent._refCount); // BREAKING CHANGE v2 > v1.x - Order of evaluation or the _leftDurationSelector and _resultSelector now consistent with Join. - + var duration = default(IObservable); try { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/If.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/If.cs index 8227d95056..069f44fa71 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/If.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/If.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Reactive.Disposables; namespace System.Reactive.Linq.ObservableImpl { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/IsEmpty.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/IsEmpty.cs index d6fd6ad481..9ad97eaa7f 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/IsEmpty.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/IsEmpty.cs @@ -17,7 +17,7 @@ public IsEmpty(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { public _(IObserver observer) : base(observer) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/LastAsync.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/LastAsync.cs index 1b0b74240d..28a99287d0 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/LastAsync.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/LastAsync.cs @@ -27,7 +27,7 @@ internal sealed class _ : IdentitySink public _(IObserver observer) : base(observer) { - _value = default(TSource); + _value = default; _seenValue = false; } @@ -78,7 +78,7 @@ public _(Func predicate, IObserver observer) { _predicate = predicate; - _value = default(TSource); + _value = default; _seenValue = false; } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/LastOrDefaultAsync.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/LastOrDefaultAsync.cs index 82306a62d4..545c06df91 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/LastOrDefaultAsync.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/LastOrDefaultAsync.cs @@ -26,7 +26,7 @@ internal sealed class _ : IdentitySink public _(IObserver observer) : base(observer) { - _value = default(TSource); + _value = default; } public override void OnNext(TSource value) @@ -67,7 +67,7 @@ public _(Func predicate, IObserver observer) { _predicate = predicate; - _value = default(TSource); + _value = default; } public override void OnNext(TSource value) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Latest.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Latest.cs index 89d305f8af..f1005e5409 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Latest.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Latest.cs @@ -46,7 +46,9 @@ public override void OnNext(TSource value) } if (lackedValue) + { _semaphore.Release(); + } } public override void OnError(Exception error) @@ -63,7 +65,9 @@ public override void OnError(Exception error) } if (lackedValue) + { _semaphore.Release(); + } } public override void OnCompleted() @@ -79,7 +83,9 @@ public override void OnCompleted() } if (lackedValue) + { _semaphore.Release(); + } } public override bool TryMoveNext(out TSource current) @@ -119,7 +125,7 @@ public override bool TryMoveNext(out TSource current) break; } - current = default(TSource); + current = default; return false; } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/LongCount.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/LongCount.cs index 8552b6a5e1..2e0d328b6e 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/LongCount.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/LongCount.cs @@ -19,7 +19,7 @@ public All(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private long _count; @@ -66,7 +66,7 @@ public Predicate(IObservable source, Func predicate) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func _predicate; private long _count; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Materialize.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Materialize.cs index 11a9107689..198f0a430d 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Materialize.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Materialize.cs @@ -19,7 +19,7 @@ public Materialize(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { public _(IObserver> observer) : base(observer) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Max.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Max.cs index 6d5109478e..e442333e29 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Max.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Max.cs @@ -431,7 +431,9 @@ public _(IObserver observer) public override void OnNext(double? value) { if (!value.HasValue) + { return; + } if (_lastValue.HasValue) { @@ -479,7 +481,9 @@ public _(IObserver observer) public override void OnNext(float? value) { if (!value.HasValue) + { return; + } if (_lastValue.HasValue) { @@ -527,7 +531,9 @@ public _(IObserver observer) public override void OnNext(decimal? value) { if (!value.HasValue) + { return; + } if (_lastValue.HasValue) { @@ -575,7 +581,9 @@ public _(IObserver observer) public override void OnNext(int? value) { if (!value.HasValue) + { return; + } if (_lastValue.HasValue) { @@ -623,7 +631,9 @@ public _(IObserver observer) public override void OnNext(long? value) { if (!value.HasValue) + { return; + } if (_lastValue.HasValue) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/MaxBy.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/MaxBy.cs index 7073a76412..9fbe02c640 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/MaxBy.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/MaxBy.cs @@ -23,10 +23,10 @@ public MaxBy(IObservable source, Func keySelector, IComp protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { - readonly Func _keySelector; - readonly IComparer _comparer; + private readonly Func _keySelector; + private readonly IComparer _comparer; private bool _hasValue; private TKey _lastKey; private List _list; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Merge.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Merge.cs index c2acf4b925..ceafc745db 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Merge.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Merge.cs @@ -26,7 +26,7 @@ public ObservablesMaxConcurrency(IObservable> sources, int protected override void Run(_ sink) => sink.Run(_sources); - internal sealed class _ : Sink, TSource> + internal sealed class _ : Sink, TSource> { private readonly int _maxConcurrent; @@ -52,7 +52,9 @@ public override void OnNext(IObservable value) Subscribe(value); } else + { _q.Enqueue(value); + } } } @@ -85,7 +87,9 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); if (disposing) + { _group.Dispose(); + } } private void Subscribe(IObservable innerSource) @@ -107,7 +111,9 @@ public InnerObserver(_ parent) public override void OnNext(TSource value) { lock (_parent._gate) + { _parent.ForwardOnNext(value); + } } public override void OnError(Exception error) @@ -155,7 +161,7 @@ public Observables(IObservable> sources) protected override void Run(_ sink) => sink.Run(_sources); - internal sealed class _ : Sink, TSource> + internal sealed class _ : Sink, TSource> { public _(IObserver observer) : base(observer) @@ -209,7 +215,9 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); if (disposing) + { _group.Dispose(); + } } private sealed class InnerObserver : SafeObserver @@ -224,7 +232,9 @@ public InnerObserver(_ parent) public override void OnNext(TSource value) { lock (_parent._gate) + { _parent.ForwardOnNext(value); + } } public override void OnError(Exception error) @@ -270,14 +280,14 @@ public Tasks(IObservable> sources) protected override void Run(_ sink) => sink.Run(_sources); - internal sealed class _ : Sink, TSource> + internal sealed class _ : Sink, TSource> { public _(IObserver observer) : base(observer) { } - private object _gate = new object(); + private readonly object _gate = new object(); private volatile int _count = 1; public override void OnNext(Task value) @@ -298,29 +308,31 @@ private void OnCompletedTask(Task task) switch (task.Status) { case TaskStatus.RanToCompletion: + { + lock (_gate) { - lock (_gate) - ForwardOnNext(task.Result); - - OnCompleted(); + ForwardOnNext(task.Result); } - break; + + OnCompleted(); + } + break; case TaskStatus.Faulted: + { + lock (_gate) { - lock (_gate) - { - ForwardOnError(task.Exception.InnerException); - } + ForwardOnError(task.Exception.InnerException); } - break; + } + break; case TaskStatus.Canceled: + { + lock (_gate) { - lock (_gate) - { - ForwardOnError(new TaskCanceledException(task)); - } + ForwardOnError(new TaskCanceledException(task)); } - break; + } + break; } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Min.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Min.cs index 9c9a17b80f..4656910c8a 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Min.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Min.cs @@ -431,7 +431,9 @@ public _(IObserver observer) public override void OnNext(double? value) { if (!value.HasValue) + { return; + } if (_lastValue.HasValue) { @@ -479,7 +481,9 @@ public _(IObserver observer) public override void OnNext(float? value) { if (!value.HasValue) + { return; + } if (_lastValue.HasValue) { @@ -527,7 +531,9 @@ public _(IObserver observer) public override void OnNext(decimal? value) { if (!value.HasValue) + { return; + } if (_lastValue.HasValue) { @@ -575,7 +581,9 @@ public _(IObserver observer) public override void OnNext(int? value) { if (!value.HasValue) + { return; + } if (_lastValue.HasValue) { @@ -623,7 +631,9 @@ public _(IObserver observer) public override void OnNext(long? value) { if (!value.HasValue) + { return; + } if (_lastValue.HasValue) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/MinBy.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/MinBy.cs index a074e94d21..1b4d3ecc08 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/MinBy.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/MinBy.cs @@ -23,10 +23,10 @@ public MinBy(IObservable source, Func keySelector, IComp protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { - readonly Func _keySelector; - readonly IComparer _comparer; + private readonly Func _keySelector; + private readonly IComparer _comparer; private bool _hasValue; private TKey _lastKey; private List _list; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/MostRecent.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/MostRecent.cs index 64b91d3d41..a999bf777f 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/MostRecent.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/MostRecent.cs @@ -72,7 +72,7 @@ public override bool TryMoveNext(out TSource current) break; } - current = default(TSource); + current = default; return false; } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Never.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Never.cs index 42ea834de2..33cc1d4ed6 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Never.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Never.cs @@ -25,7 +25,9 @@ private Never() public IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return Disposable.Empty; } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Next.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Next.cs index aee68493c6..183d989572 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Next.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Next.cs @@ -62,7 +62,9 @@ public override void OnError(Exception error) _kind = NotificationKind.OnError; if (_waiting) + { _semaphore.Release(); + } _waiting = false; } @@ -80,7 +82,9 @@ public override void OnCompleted() _kind = NotificationKind.OnCompleted; if (_waiting) + { _semaphore.Release(); + } _waiting = false; } @@ -130,7 +134,7 @@ public override bool TryMoveNext(out TSource current) break; } - current = default(TSource); + current = default; return false; } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/OfType.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/OfType.cs index af022229d1..252668101e 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/OfType.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/OfType.cs @@ -17,7 +17,7 @@ public OfType(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { public _(IObserver observer) : base(observer) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/OnErrorResumeNext.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/OnErrorResumeNext.cs index 619a5b0308..1b2dd20c2a 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/OnErrorResumeNext.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/OnErrorResumeNext.cs @@ -29,7 +29,9 @@ public _(IObserver observer) protected override IEnumerable> Extract(IObservable source) { if (source is OnErrorResumeNext oern) + { return oern._sources; + } return null; } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Range.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Range.cs index eb72f29897..ca1a482776 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Range.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Range.cs @@ -26,11 +26,9 @@ public RangeRecursive(int start, int count, IScheduler scheduler) internal sealed class RangeSink : IdentitySink { - readonly int _end; - - int _index; - - IDisposable _task; + private readonly int _end; + private int _index; + private IDisposable _task; public RangeSink(int start, int count, IObserver observer) : base(observer) @@ -52,7 +50,7 @@ protected override void Dispose(bool disposing) { Disposable.TryDispose(ref _task); } - } + } private IDisposable LoopRec(IScheduler scheduler) { @@ -63,7 +61,8 @@ private IDisposable LoopRec(IScheduler scheduler) ForwardOnNext(idx); var next = scheduler.Schedule(this, (innerScheduler, @this) => @this.LoopRec(innerScheduler)); Disposable.TrySetMultiple(ref _task, next); - } else + } + else { ForwardOnCompleted(); } @@ -91,9 +90,8 @@ public RangeLongRunning(int start, int count, ISchedulerLongRunning scheduler) internal sealed class RangeSink : IdentitySink { - readonly int _end; - - int _index; + private readonly int _end; + private readonly int _index; public RangeSink(int start, int count, IObserver observer) : base(observer) @@ -117,7 +115,9 @@ private void Loop(ICancelable cancel) } if (!cancel.IsDisposed) + { ForwardOnCompleted(); + } } } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/RefCount.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/RefCount.cs index 7d1deaecff..466e9f258b 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/RefCount.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/RefCount.cs @@ -14,7 +14,6 @@ internal static class RefCount internal sealed class Eager : Producer { private readonly IConnectableObservable _source; - private readonly object _gate; private int _count; private IDisposable _connectableSubscription; @@ -31,7 +30,7 @@ public Eager(IConnectableObservable source) internal sealed class _ : IdentitySink { - readonly Eager _parent; + private readonly Eager _parent; public _(IObserver observer, Eager parent) : base(observer) @@ -88,7 +87,6 @@ internal sealed class Lazy : Producer private readonly TimeSpan _disconnectTime; private readonly IConnectableObservable _source; private IDisposable _serial; - private int _count; private IDisposable _connectableSubscription; @@ -120,7 +118,9 @@ public void Run(Lazy parent) if (++parent._count == 1) { if (parent._connectableSubscription == null) + { parent._connectableSubscription = parent._source.Connect(); + } Disposable.TrySetSerial(ref parent._serial, new SingleAssignmentDisposable()); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Repeat.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Repeat.cs index 2da21d0c14..e9ab0db645 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Repeat.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Repeat.cs @@ -57,7 +57,9 @@ private void LoopInf(ICancelable cancel) { var value = _value; while (!cancel.IsDisposed) + { ForwardOnNext(value); + } Dispose(); } @@ -131,7 +133,9 @@ private void Loop(int n, ICancelable cancel) } if (!cancel.IsDisposed) + { ForwardOnCompleted(); + } } } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/RepeatWhen.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/RepeatWhen.cs index 7feb82bbfc..cb650b4c1d 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/RepeatWhen.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/RepeatWhen.cs @@ -2,21 +2,16 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; using System.Reactive.Disposables; using System.Reactive.Subjects; -using System.Text; using System.Threading; namespace System.Reactive.Linq.ObservableImpl { internal sealed class RepeatWhen : IObservable { - readonly IObservable source; - - readonly Func, IObservable> handler; + private readonly IObservable source; + private readonly Func, IObservable> handler; internal RepeatWhen(IObservable source, Func, IObservable> handler) { @@ -58,23 +53,18 @@ public IDisposable Subscribe(IObserver observer) return parent; } - sealed class MainObserver : Sink, IObserver + private sealed class MainObserver : Sink, IObserver { - readonly IObserver errorSignal; + private readonly IObserver errorSignal; internal readonly HandlerObserver handlerObserver; - - readonly IObservable source; - - IDisposable upstream; + private readonly IObservable source; + private IDisposable upstream; internal IDisposable handlerUpstream; - - int trampoline; - - int halfSerializer; - - Exception error; + private int trampoline; + private int halfSerializer; + private Exception error; internal MainObserver(IObserver downstream, IObservable source, IObserver errorSignal) : base(downstream) { @@ -142,7 +132,7 @@ internal void HandlerNext() internal sealed class HandlerObserver : IObserver { - readonly MainObserver main; + private readonly MainObserver main; internal HandlerObserver(MainObserver main) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/RetryWhen.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/RetryWhen.cs index a12430aced..5e84c34fce 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/RetryWhen.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/RetryWhen.cs @@ -2,21 +2,17 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; using System.Collections.Concurrent; -using System.Collections.Generic; using System.Reactive.Disposables; using System.Reactive.Subjects; -using System.Text; using System.Threading; namespace System.Reactive.Linq.ObservableImpl { internal sealed class RetryWhen : IObservable { - readonly IObservable source; - - readonly Func, IObservable> handler; + private readonly IObservable source; + private readonly Func, IObservable> handler; internal RetryWhen(IObservable source, Func, IObservable> handler) { @@ -58,23 +54,17 @@ public IDisposable Subscribe(IObserver observer) return parent; } - sealed class MainObserver : Sink, IObserver + private sealed class MainObserver : Sink, IObserver { - - readonly IObserver errorSignal; + private readonly IObserver errorSignal; internal readonly HandlerObserver handlerObserver; - - readonly IObservable source; - - IDisposable upstream; + private readonly IObservable source; + private IDisposable upstream; internal IDisposable handlerUpstream; - - int trampoline; - - int halfSerializer; - - Exception error; + private int trampoline; + private int halfSerializer; + private Exception error; internal MainObserver(IObserver downstream, IObservable source, IObserver errorSignal) : base(downstream) { @@ -88,7 +78,7 @@ protected override void Dispose(bool disposing) if (disposing) { Disposable.TryDispose(ref upstream); - Disposable.TryDispose(ref handlerUpstream); + Disposable.TryDispose(ref handlerUpstream); } base.Dispose(disposing); } @@ -141,7 +131,7 @@ internal void HandlerNext() internal sealed class HandlerObserver : IObserver { - readonly MainObserver main; + private readonly MainObserver main; internal HandlerObserver(MainObserver main) { @@ -168,17 +158,12 @@ public void OnNext(U value) internal sealed class RedoSerializedObserver : IObserver { - readonly IObserver downstream; - - int wip; - - Exception terminalException; - - static readonly Exception DONE = new Exception(); - - static readonly Exception SIGNALED = new Exception(); - - readonly ConcurrentQueue queue; + private readonly IObserver downstream; + private int wip; + private Exception terminalException; + private static readonly Exception DONE = new Exception(); + private static readonly Exception SIGNALED = new Exception(); + private readonly ConcurrentQueue queue; internal RedoSerializedObserver(IObserver downstream) { @@ -208,12 +193,15 @@ public void OnNext(X value) Drain(); } - void Clear() + private void Clear() { - while (queue.TryDequeue(out var _)) ; + while (queue.TryDequeue(out var _)) + { + ; + } } - void Drain() + private void Drain() { if (Interlocked.Increment(ref wip) != 1) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Return.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Return.cs index 15a91d6782..7743a9f95a 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Return.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Return.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System.Reactive.Concurrency; -using System.Reactive.Disposables; namespace System.Reactive.Linq.ObservableImpl { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Sample.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Sample.cs index a87ef198bd..716fdaf03e 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Sample.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Sample.cs @@ -80,9 +80,13 @@ public override void OnCompleted() _sourceAtEnd = true; if (_samplerAtEnd) + { ForwardOnCompleted(); + } else + { Disposable.TryDispose(ref _sourceDisposable); + } } } @@ -138,7 +142,9 @@ public void OnCompleted() _parent.ForwardOnCompleted(); } else + { Disposable.TryDispose(ref _parent._samplerDisposable); + } } } } @@ -164,7 +170,7 @@ public Sample(IObservable source, TimeSpan interval, IScheduler schedul internal sealed class _ : IdentitySink { - private object _gate = new object(); + private readonly object _gate = new object(); public _(IObserver observer) : base(observer) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Scan.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Scan.cs index 74d347897a..623d7ffdcc 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Scan.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Scan.cs @@ -21,7 +21,7 @@ public Scan(IObservable source, TAccumulate seed, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func _accumulator; private TAccumulate _accumulation; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Select.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Select.cs index 4f2f0e404f..97c3eeeb70 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Select.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Select.cs @@ -21,7 +21,7 @@ public Selector(IObservable source, Func selector) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func _selector; @@ -64,7 +64,7 @@ public SelectorIndexed(IObservable source, Func protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func _selector; private int _index; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/SelectMany.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/SelectMany.cs index 94ec50f00f..741dc24c82 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/SelectMany.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/SelectMany.cs @@ -28,7 +28,7 @@ public ObservableSelector(IObservable source, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly object _gate = new object(); private readonly CompositeDisposable _group = new CompositeDisposable(); @@ -103,7 +103,9 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); if (disposing) + { _group.Dispose(); + } } private sealed class InnerObserver : SafeObserver @@ -135,7 +137,9 @@ public override void OnNext(TCollection value) } lock (_parent._gate) + { _parent.ForwardOnNext(res); + } } public override void OnError(Exception error) @@ -185,7 +189,7 @@ public ObservableSelectorIndexed(IObservable source, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly object _gate = new object(); private readonly CompositeDisposable _group = new CompositeDisposable(); @@ -262,7 +266,9 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); if (disposing) + { _group.Dispose(); + } } private sealed class InnerObserver : SafeObserver @@ -298,7 +304,9 @@ public override void OnNext(TCollection value) } lock (_parent._gate) + { _parent.ForwardOnNext(res); + } } public override void OnError(Exception error) @@ -348,7 +356,7 @@ public EnumerableSelector(IObservable source, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func> _collectionSelector; private readonly Func _resultSelector; @@ -396,7 +404,9 @@ public override void OnNext(TSource value) { hasNext = e.MoveNext(); if (hasNext) + { current = _resultSelector(value, e.Current); + } } catch (Exception exception) { @@ -405,13 +415,17 @@ public override void OnNext(TSource value) } if (hasNext) + { ForwardOnNext(current); + } } } finally { if (e != null) + { e.Dispose(); + } } } } @@ -434,7 +448,7 @@ public EnumerableSelectorIndexed(IObservable source, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func> _collectionSelector; private readonly Func _resultSelector; @@ -487,7 +501,9 @@ public override void OnNext(TSource value) { hasNext = e.MoveNext(); if (hasNext) + { current = _resultSelector(value, index, e.Current, checked(eIndex++)); + } } catch (Exception exception) { @@ -496,13 +512,17 @@ public override void OnNext(TSource value) } if (hasNext) + { ForwardOnNext(current); + } } } finally { if (e != null) + { e.Dispose(); + } } } } @@ -525,7 +545,7 @@ public TaskSelector(IObservable source, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly object _gate = new object(); private readonly CancellationDisposable _cancel = new CancellationDisposable(); @@ -599,47 +619,49 @@ private void OnCompletedTask(TSource value, Task task) switch (task.Status) { case TaskStatus.RanToCompletion: + { + var res = default(TResult); + try { - var res = default(TResult); - try - { - res = _resultSelector(value, task.Result); - } - catch (Exception ex) + res = _resultSelector(value, task.Result); + } + catch (Exception ex) + { + lock (_gate) { - lock (_gate) - { - ForwardOnError(ex); - } - - return; + ForwardOnError(ex); } - lock (_gate) - ForwardOnNext(res); + return; + } - OnCompleted(); + lock (_gate) + { + ForwardOnNext(res); } - break; + + OnCompleted(); + } + break; case TaskStatus.Faulted: + { + lock (_gate) { - lock (_gate) - { - ForwardOnError(task.Exception.InnerException); - } + ForwardOnError(task.Exception.InnerException); } - break; + } + break; case TaskStatus.Canceled: + { + if (!_cancel.IsDisposed) { - if (!_cancel.IsDisposed) + lock (_gate) { - lock (_gate) - { - ForwardOnError(new TaskCanceledException(task)); - } + ForwardOnError(new TaskCanceledException(task)); } } - break; + } + break; } } @@ -681,7 +703,7 @@ public TaskSelectorIndexed(IObservable source, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly object _gate = new object(); private readonly CancellationDisposable _cancel = new CancellationDisposable(); @@ -758,47 +780,49 @@ private void OnCompletedTask(TSource value, int index, Task task) switch (task.Status) { case TaskStatus.RanToCompletion: + { + var res = default(TResult); + try { - var res = default(TResult); - try - { - res = _resultSelector(value, index, task.Result); - } - catch (Exception ex) + res = _resultSelector(value, index, task.Result); + } + catch (Exception ex) + { + lock (_gate) { - lock (_gate) - { - ForwardOnError(ex); - } - - return; + ForwardOnError(ex); } - lock (_gate) - ForwardOnNext(res); + return; + } - OnCompleted(); + lock (_gate) + { + ForwardOnNext(res); } - break; + + OnCompleted(); + } + break; case TaskStatus.Faulted: + { + lock (_gate) { - lock (_gate) - { - ForwardOnError(task.Exception.InnerException); - } + ForwardOnError(task.Exception.InnerException); } - break; + } + break; case TaskStatus.Canceled: + { + if (!_cancel.IsDisposed) { - if (!_cancel.IsDisposed) + lock (_gate) { - lock (_gate) - { - ForwardOnError(new TaskCanceledException(task)); - } + ForwardOnError(new TaskCanceledException(task)); } } - break; + } + break; } } @@ -841,12 +865,12 @@ public ObservableSelector(IObservable source, Func sink.Run(_source); - internal class _ : Sink + internal class _ : Sink { protected readonly object _gate = new object(); private readonly Func> _selector; private readonly CompositeDisposable _group = new CompositeDisposable(); - + private volatile bool _isStopped; public _(ObservableSelector parent, IObserver observer) @@ -893,7 +917,9 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); if (disposing) + { _group.Dispose(); + } } protected void Final() @@ -939,7 +965,9 @@ public InnerObserver(_ parent) public override void OnNext(TResult value) { lock (_parent._gate) + { _parent.ForwardOnNext(value); + } } public override void OnError(Exception error) @@ -986,7 +1014,7 @@ public ObservableSelectors(IObservable source, Func observer) => new _(this, observer); - new internal sealed class _ : ObservableSelector._ + internal new sealed class _ : ObservableSelector._ { private readonly Func> _selectorOnError; private readonly Func> _selectorOnCompleted; @@ -1069,7 +1097,7 @@ public ObservableSelectorIndexed(IObservable source, Func sink.Run(_source); - internal class _ : Sink + internal class _ : Sink { private readonly object _gate = new object(); private readonly CompositeDisposable _group = new CompositeDisposable(); @@ -1123,7 +1151,9 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); if (disposing) + { _group.Dispose(); + } } protected void Final() @@ -1169,7 +1199,9 @@ public InnerObserver(_ parent) public override void OnNext(TResult value) { lock (_parent._gate) + { _parent.ForwardOnNext(value); + } } public override void OnError(Exception error) @@ -1216,7 +1248,7 @@ public ObservableSelectorsIndexed(IObservable source, Func observer) => new _(this, observer); - new internal sealed class _ : ObservableSelectorIndexed._ + internal new sealed class _ : ObservableSelectorIndexed._ { private readonly object _gate = new object(); @@ -1301,7 +1333,7 @@ public EnumerableSelector(IObservable source, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func> _selector; @@ -1347,7 +1379,9 @@ public override void OnNext(TSource value) { hasNext = e.MoveNext(); if (hasNext) + { current = e.Current; + } } catch (Exception exception) { @@ -1356,13 +1390,17 @@ public override void OnNext(TSource value) } if (hasNext) + { ForwardOnNext(current); + } } } finally { if (e != null) + { e.Dispose(); + } } } } @@ -1383,7 +1421,7 @@ public EnumerableSelectorIndexed(IObservable source, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func> _selector; @@ -1431,7 +1469,9 @@ public override void OnNext(TSource value) { hasNext = e.MoveNext(); if (hasNext) + { current = e.Current; + } } catch (Exception exception) { @@ -1440,13 +1480,17 @@ public override void OnNext(TSource value) } if (hasNext) + { ForwardOnNext(current); + } } } finally { if (e != null) + { e.Dispose(); + } } } } @@ -1467,7 +1511,7 @@ public TaskSelector(IObservable source, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly object _gate = new object(); private readonly CancellationTokenSource _cts = new CancellationTokenSource(); @@ -1531,32 +1575,34 @@ private void OnCompletedTask(Task task) switch (task.Status) { case TaskStatus.RanToCompletion: + { + lock (_gate) { - lock (_gate) - ForwardOnNext(task.Result); - - OnCompleted(); + ForwardOnNext(task.Result); } - break; + + OnCompleted(); + } + break; case TaskStatus.Faulted: + { + lock (_gate) { - lock (_gate) - { - ForwardOnError(task.Exception.InnerException); - } + ForwardOnError(task.Exception.InnerException); } - break; + } + break; case TaskStatus.Canceled: + { + if (!_cts.IsCancellationRequested) { - if (!_cts.IsCancellationRequested) + lock (_gate) { - lock (_gate) - { - ForwardOnError(new TaskCanceledException(task)); - } + ForwardOnError(new TaskCanceledException(task)); } } - break; + } + break; } } @@ -1596,7 +1642,7 @@ public TaskSelectorIndexed(IObservable source, Func sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly object _gate = new object(); private readonly CancellationTokenSource _cts = new CancellationTokenSource(); @@ -1661,32 +1707,34 @@ private void OnCompletedTask(Task task) switch (task.Status) { case TaskStatus.RanToCompletion: + { + lock (_gate) { - lock (_gate) - ForwardOnNext(task.Result); - - OnCompleted(); + ForwardOnNext(task.Result); } - break; + + OnCompleted(); + } + break; case TaskStatus.Faulted: + { + lock (_gate) { - lock (_gate) - { - ForwardOnError(task.Exception.InnerException); - } + ForwardOnError(task.Exception.InnerException); } - break; + } + break; case TaskStatus.Canceled: + { + if (!_cts.IsCancellationRequested) { - if (!_cts.IsCancellationRequested) + lock (_gate) { - lock (_gate) - { - ForwardOnError(new TaskCanceledException(task)); - } + ForwardOnError(new TaskCanceledException(task)); } } - break; + } + break; } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/SequenceEqual.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/SequenceEqual.cs index 56d2e25292..c1421ecfef 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/SequenceEqual.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/SequenceEqual.cs @@ -101,7 +101,9 @@ public void OnNext(TSource value) _parent.ForwardOnCompleted(); } else + { _parent._ql.Enqueue(value); + } } } @@ -173,7 +175,9 @@ public void OnNext(TSource value) _parent.ForwardOnCompleted(); } else + { _parent._qr.Enqueue(value); + } } } @@ -226,7 +230,7 @@ public Enumerable(IObservable first, IEnumerable second, IEqua protected override void Run(_ sink) => sink.Run(this); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly IEqualityComparer _comparer; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Skip.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Skip.cs index 6a9ec4d62d..02adb86e90 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Skip.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Skip.cs @@ -49,9 +49,13 @@ public _(int count, IObserver observer) public override void OnNext(TSource value) { if (_remaining <= 0) + { ForwardOnNext(value); + } else + { _remaining--; + } } } } @@ -81,9 +85,13 @@ public IObservable Combine(TimeSpan duration) // xs.Skip(2s).Skip(3s) xxxxxxxxxx-o--o--o--| xs.Skip(3s).Skip(2s) xxxxxxx----o--o--o--| // if (duration <= _duration) + { return this; + } else + { return new Time(_source, duration, _scheduler); + } } protected override _ CreateSink(IObserver observer) => new _(observer); @@ -125,7 +133,9 @@ private IDisposable Tick() public override void OnNext(TSource value) { if (_open) + { ForwardOnNext(value); + } } } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/SkipLast.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/SkipLast.cs index 129f5e0df6..a889e3637b 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/SkipLast.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/SkipLast.cs @@ -26,7 +26,7 @@ public Count(IObservable source, int count) internal sealed class _ : IdentitySink { - private int _count; + private readonly int _count; private Queue _queue; public _(int count, IObserver observer) @@ -40,7 +40,9 @@ public override void OnNext(TSource value) { _queue.Enqueue(value); if (_queue.Count > _count) + { ForwardOnNext(_queue.Dequeue()); + } } } } @@ -88,14 +90,18 @@ public override void OnNext(TSource value) var now = _watch.Elapsed; _queue.Enqueue(new System.Reactive.TimeInterval(value, now)); while (_queue.Count > 0 && now - _queue.Peek().Interval >= _duration) + { ForwardOnNext(_queue.Dequeue().Value); + } } public override void OnCompleted() { var now = _watch.Elapsed; while (_queue.Count > 0 && now - _queue.Peek().Interval >= _duration) + { ForwardOnNext(_queue.Dequeue().Value); + } ForwardOnCompleted(); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/SkipUntil.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/SkipUntil.cs index 161bd4fcd1..1db2d533a4 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/SkipUntil.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/SkipUntil.cs @@ -4,7 +4,6 @@ using System.Reactive.Concurrency; using System.Reactive.Disposables; -using System.Threading; namespace System.Reactive.Linq.ObservableImpl { @@ -25,10 +24,10 @@ public SkipUntil(IObservable source, IObservable other) internal sealed class _ : IdentitySink { - IDisposable _otherDisposable; - volatile bool _forward; - int _halfSerializer; - Exception _error; + private IDisposable _otherDisposable; + private bool _forward; + private int _halfSerializer; + private Exception _error; public _(IObserver observer) : base(observer) @@ -57,7 +56,9 @@ protected override void Dispose(bool disposing) public override void OnNext(TSource value) { if (_forward) + { HalfSerializer.ForwardOnNext(this, value, ref _halfSerializer, ref _error); + } } public override void OnError(Exception ex) @@ -68,19 +69,23 @@ public override void OnError(Exception ex) public override void OnCompleted() { if (_forward) + { HalfSerializer.ForwardOnCompleted(this, ref _halfSerializer, ref _error); + } else + { DisposeUpstream(); + } } - void OtherComplete() + private void OtherComplete() { _forward = true; } - sealed class OtherObserver : IObserver, IDisposable + private sealed class OtherObserver : IObserver, IDisposable { - readonly _ _parent; + private readonly _ _parent; public OtherObserver(_ parent) { @@ -139,9 +144,13 @@ public IObservable Combine(DateTimeOffset startTime) // xs.SU(5AM).SU(3AM) xxxxxxxxx--------o--| xs.SU(3AM).SU(5AM) xxxxxxxxxxxxxxxx-o--| // if (startTime <= _startTime) + { return this; + } else + { return new SkipUntil(_source, startTime, _scheduler); + } } protected override _ CreateSink(IObserver observer) => new _(observer); @@ -150,7 +159,7 @@ public IObservable Combine(DateTimeOffset startTime) internal sealed class _ : IdentitySink { - private volatile bool _open; + private bool _open; public _(IObserver observer) : base(observer) @@ -183,7 +192,9 @@ private IDisposable Tick() public override void OnNext(TSource value) { if (_open) + { ForwardOnNext(value); + } } } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Sum.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Sum.cs index 519ec3bed9..929fce2947 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Sum.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Sum.cs @@ -145,7 +145,7 @@ public override void OnNext(int value) ForwardOnError(exception); } } - + public override void OnCompleted() { ForwardOnNext(_sum); @@ -224,7 +224,9 @@ public _(IObserver observer) public override void OnNext(double? value) { if (value != null) + { _sum += value.Value; + } } public override void OnCompleted() @@ -260,7 +262,9 @@ public _(IObserver observer) public override void OnNext(float? value) { if (value != null) + { _sum += value.Value; // This is what LINQ to Objects does! + } } public override void OnCompleted() @@ -296,7 +300,9 @@ public _(IObserver observer) public override void OnNext(decimal? value) { if (value != null) + { _sum += value.Value; + } } public override void OnCompleted() @@ -336,7 +342,9 @@ public override void OnNext(int? value) checked { if (value != null) + { _sum += value.Value; + } } } catch (Exception exception) @@ -382,7 +390,9 @@ public override void OnNext(long? value) checked { if (value != null) + { _sum += value.Value; + } } } catch (Exception exception) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Switch.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Switch.cs index 45642046dc..d83373328f 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Switch.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Switch.cs @@ -19,7 +19,7 @@ public Switch(IObservable> sources) protected override void Run(_ sink) => sink.Run(_sources); - internal sealed class _ : Sink, TSource> + internal sealed class _ : Sink, TSource> { private readonly object _gate = new object(); @@ -36,7 +36,9 @@ public _(IObserver observer) protected override void Dispose(bool disposing) { if (disposing) + { Disposable.TryDispose(ref _innerSerialDisposable); + } base.Dispose(disposing); } @@ -59,7 +61,9 @@ public override void OnNext(IObservable value) public override void OnError(Exception error) { lock (_gate) + { ForwardOnError(error); + } } public override void OnCompleted() diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Take.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Take.cs index 1cfe45b171..df8ca2813d 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Take.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Take.cs @@ -30,9 +30,13 @@ public IObservable Combine(int count) // xs.Take(5).Take(3) --o--o--o| xs.Take(3).Take(5) --o--o--o| // if (_count <= count) + { return this; + } else + { return new Count(_source, count); + } } protected override _ CreateSink(IObserver observer) => new _(_count, observer); @@ -90,16 +94,20 @@ public IObservable Combine(TimeSpan duration) // xs.Take(5s).Take(3s) --o--o--o| xs.Take(3s).Take(5s) --o--o--o| // if (_duration <= duration) + { return this; + } else + { return new Time(_source, duration, _scheduler); + } } protected override _ CreateSink(IObserver observer) => new _(observer); protected override void Run(_ sink) => sink.Run(this); - internal sealed class _ : IdentitySink + internal sealed class _ : IdentitySink { public _(IObserver observer) : base(observer) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeLast.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeLast.cs index dfe60773e0..ee7b03cc70 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeLast.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeLast.cs @@ -57,7 +57,9 @@ public override void OnNext(TSource value) { _queue.Enqueue(value); if (_queue.Count > _parent._count) + { _queue.Dequeue(); + } } public override void OnCompleted() @@ -66,9 +68,13 @@ public override void OnCompleted() var longRunning = _parent._loopScheduler.AsLongRunning(); if (longRunning != null) + { Disposable.SetSingle(ref _loopDisposable, longRunning.ScheduleLongRunning(this, (@this, c) => @this.Loop(c))); + } else + { Disposable.SetSingle(ref _loopDisposable, _parent._loopScheduler.Schedule(this, (@this, a) => @this.LoopRec(a))); + } } private void LoopRec(Action<_> recurse) @@ -96,7 +102,9 @@ private void Loop(ICancelable cancel) break; } else + { ForwardOnNext(_queue.Dequeue()); + } n--; } @@ -174,9 +182,13 @@ public override void OnCompleted() var longRunning = _parent._loopScheduler.AsLongRunning(); if (longRunning != null) + { Disposable.SetSingle(ref _loopDisposable, longRunning.ScheduleLongRunning(this, (@this, c) => @this.Loop(c))); + } else + { Disposable.SetSingle(ref _loopDisposable, _parent._loopScheduler.Schedule(this, (@this, a) => @this.LoopRec(a))); + } } private void LoopRec(Action<_> recurse) @@ -204,7 +216,9 @@ private void Loop(ICancelable cancel) break; } else + { ForwardOnNext(_queue.Dequeue().Value); + } n--; } @@ -215,7 +229,9 @@ private void Loop(ICancelable cancel) private void Trim(TimeSpan now) { while (_queue.Count > 0 && now - _queue.Peek().Interval >= _parent._duration) + { _queue.Dequeue(); + } } } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeLastBuffer.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeLastBuffer.cs index a217ef5fe6..8b5d923088 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeLastBuffer.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeLastBuffer.cs @@ -24,7 +24,7 @@ public Count(IObservable source, int count) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly int _count; private Queue _queue; @@ -40,14 +40,18 @@ public override void OnNext(TSource value) { _queue.Enqueue(value); if (_queue.Count > _count) + { _queue.Dequeue(); + } } public override void OnCompleted() { var res = new List(_queue.Count); while (_queue.Count > 0) + { res.Add(_queue.Dequeue()); + } ForwardOnNext(res); ForwardOnCompleted(); @@ -72,7 +76,7 @@ public Time(IObservable source, TimeSpan duration, IScheduler scheduler protected override void Run(_ sink) => sink.Run(_source, _scheduler); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly TimeSpan _duration; private Queue> _queue; @@ -107,7 +111,9 @@ public override void OnCompleted() var res = new List(_queue.Count); while (_queue.Count > 0) + { res.Add(_queue.Dequeue().Value); + } ForwardOnNext(res); ForwardOnCompleted(); @@ -116,7 +122,9 @@ public override void OnCompleted() private void Trim(TimeSpan now) { while (_queue.Count > 0 && now - _queue.Peek().Interval >= _duration) + { _queue.Dequeue(); + } } } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeUntil.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeUntil.cs index 4a46cdaa28..8044e971d2 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeUntil.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeUntil.cs @@ -4,7 +4,6 @@ using System.Reactive.Concurrency; using System.Reactive.Disposables; -using System.Threading; namespace System.Reactive.Linq.ObservableImpl { @@ -68,9 +67,9 @@ public override void OnCompleted() HalfSerializer.ForwardOnCompleted(this, ref _halfSerializer, ref _error); } - sealed class OtherObserver : IObserver + private sealed class OtherObserver : IObserver { - readonly _ _parent; + private readonly _ _parent; public OtherObserver(_ parent) { @@ -122,9 +121,13 @@ public IObservable Combine(DateTimeOffset endTime) // xs.TU(5AM).TU(3AM) --o--o--o| xs.TU(3AM).TU(5AM) --o--o--o| // if (_endTime <= endTime) + { return this; + } else + { return new TakeUntil(_source, endTime, _scheduler); + } } protected override _ CreateSink(IObserver observer) => new _(observer); @@ -134,9 +137,7 @@ public IObservable Combine(DateTimeOffset endTime) internal sealed class _ : IdentitySink { private IDisposable _timerDisposable; - private int _wip; - private Exception _error; public _(IObserver observer) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeUntilPredicate.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeUntilPredicate.cs index 444d770036..b359a4f62e 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeUntilPredicate.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/TakeUntilPredicate.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; -using System.Collections.Generic; -using System.Text; namespace System.Reactive.Linq.ObservableImpl { @@ -12,12 +9,11 @@ namespace System.Reactive.Linq.ObservableImpl /// Relays items to the downstream until the predicate returns true. /// /// The element type of the sequence - internal sealed class TakeUntilPredicate : + internal sealed class TakeUntilPredicate : Producer.TakeUntilPredicateObserver> { - readonly IObservable _source; - - readonly Func _stopPredicate; + private readonly IObservable _source; + private readonly Func _stopPredicate; public TakeUntilPredicate(IObservable source, Func stopPredicate) { @@ -31,10 +27,10 @@ public TakeUntilPredicate(IObservable source, Func stopP internal sealed class TakeUntilPredicateObserver : IdentitySink { - readonly Func _stopPredicate; + private readonly Func _stopPredicate; - public TakeUntilPredicateObserver(IObserver downstream, - Func predicate) : base (downstream) + public TakeUntilPredicateObserver(IObserver downstream, + Func predicate) : base(downstream) { _stopPredicate = predicate; } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Throttle.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Throttle.cs index dd3710a1dc..7516d1fbb5 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Throttle.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Throttle.cs @@ -72,7 +72,10 @@ private IDisposable Propagate(ulong currentid) lock (_gate) { if (_hasValue && _id == currentid) + { ForwardOnNext(_value); + } + _hasValue = false; } @@ -91,7 +94,7 @@ public override void OnError(Exception error) _id = unchecked(_id + 1); } } - + public override void OnCompleted() { Disposable.TryDispose(ref _serialCancelable); @@ -99,7 +102,9 @@ public override void OnCompleted() lock (_gate) { if (_hasValue) + { ForwardOnNext(_value); + } ForwardOnCompleted(); @@ -204,7 +209,9 @@ public override void OnCompleted() lock (_gate) { if (_hasValue) + { ForwardOnNext(_value); + } ForwardOnCompleted(); @@ -231,7 +238,9 @@ public override void OnNext(TThrottle value) lock (_parent._gate) { if (_parent._hasValue && _parent._id == _currentid) + { _parent.ForwardOnNext(_value); + } _parent._hasValue = false; Dispose(); @@ -251,7 +260,9 @@ public override void OnCompleted() lock (_parent._gate) { if (_parent._hasValue && _parent._id == _currentid) + { _parent.ForwardOnNext(_value); + } _parent._hasValue = false; Dispose(); diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Throw.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Throw.cs index 2bace19f8f..cd82ef9ded 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Throw.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Throw.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System.Reactive.Concurrency; -using System.Reactive.Disposables; namespace System.Reactive.Linq.ObservableImpl { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/TimeInterval.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/TimeInterval.cs index 4d88368159..e0df0e316d 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/TimeInterval.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/TimeInterval.cs @@ -21,7 +21,7 @@ public TimeInterval(IObservable source, IScheduler scheduler) protected override void Run(_ sink) => sink.Run(this); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { public _(IObserver> observer) : base(observer) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timeout.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timeout.cs index 24eaebd462..81394c08a3 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timeout.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timeout.cs @@ -34,12 +34,10 @@ internal sealed class _ : IdentitySink private readonly TimeSpan _dueTime; private readonly IObservable _other; private readonly IScheduler _scheduler; - - long _index; - - IDisposable _mainDisposable; - IDisposable _otherDisposable; - IDisposable _timerDisposable; + private long _index; + private IDisposable _mainDisposable; + private IDisposable _otherDisposable; + private IDisposable _timerDisposable; public _(Relative parent, IObserver observer) : base(observer) @@ -150,9 +148,7 @@ public Absolute(IObservable source, DateTimeOffset dueTime, IObservable internal sealed class _ : IdentitySink { private readonly IObservable _other; - private IDisposable _serialDisposable; - private int _wip; public _(IObservable other, IObserver observer) @@ -240,10 +236,8 @@ internal sealed class _ : IdentitySink { private readonly Func> _timeoutSelector; private readonly IObservable _other; - private IDisposable _sourceDisposable; private IDisposable _timerDisposable; - private long _index; public _(Timeout parent, IObserver observer) @@ -296,7 +290,7 @@ public override void OnNext(TSource value) } SetTimer(timeoutSource, idx + 1); - } + } } } @@ -306,7 +300,7 @@ public override void OnError(Exception error) { ForwardOnError(error); } - } + } public override void OnCompleted() { @@ -316,7 +310,7 @@ public override void OnCompleted() } } - void Timeout(long idx) + private void Timeout(long idx) { if (Volatile.Read(ref _index) == idx && Interlocked.CompareExchange(ref _index, long.MaxValue, idx) == idx) @@ -325,7 +319,7 @@ void Timeout(long idx) } } - bool TimeoutError(long idx, Exception error) + private bool TimeoutError(long idx, Exception error) { if (Volatile.Read(ref _index) == idx && Interlocked.CompareExchange(ref _index, long.MaxValue, idx) == idx) @@ -344,7 +338,7 @@ private void SetTimer(IObservable timeout, long idx) var d = timeout.Subscribe(timeoutObserver); timeoutObserver.SetResource(d); } - } + } private sealed class TimeoutObserver : SafeObserver { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timer.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timer.cs index 3918949989..40633ad30e 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timer.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timer.cs @@ -119,8 +119,7 @@ public Absolute(DateTimeOffset dueTime, TimeSpan period, IScheduler scheduler) internal sealed class _ : IdentitySink { private readonly TimeSpan _period; - - long _index; + private long _index; public _(TimeSpan period, IObserver observer) : base(observer) @@ -139,9 +138,13 @@ public void Run(Periodic parent, TimeSpan dueTime) // Optimize for the case of Observable.Interval. // if (dueTime == _period) + { SetUpstream(parent._scheduler.SchedulePeriodic(this, _period, @this => @this.Tick())); + } else + { SetUpstream(parent._scheduler.Schedule(this, dueTime, (innerScheduler, @this) => @this.InvokeStart(innerScheduler))); + } } // diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timestamp.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timestamp.cs index ed10efec9f..256d68450f 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timestamp.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timestamp.cs @@ -21,7 +21,7 @@ public Timestamp(IObservable source, IScheduler scheduler) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly IScheduler _scheduler; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToArray.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToArray.cs index 4e38a28f67..32c78b3a2e 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToArray.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToArray.cs @@ -19,7 +19,7 @@ public ToArray(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink + internal sealed class _ : Sink { private List _list; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToDictionary.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToDictionary.cs index 8b7d500ee7..86e5807c28 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToDictionary.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToDictionary.cs @@ -25,7 +25,7 @@ public ToDictionary(IObservable source, Func keySelector protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly Func _keySelector; private readonly Func _elementSelector; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToList.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToList.cs index f835cbab2d..29589e0244 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToList.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToList.cs @@ -19,7 +19,7 @@ public ToList(IObservable source) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private List _list; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToLookup.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToLookup.cs index d46cab68a7..a4290446ea 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToLookup.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToLookup.cs @@ -26,7 +26,7 @@ public ToLookup(IObservable source, Func keySelector, Fu protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly Func _keySelector; private readonly Func _elementSelector; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToObservable.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToObservable.cs index c8f4e29e1e..e663527d56 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToObservable.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/ToObservable.cs @@ -98,7 +98,9 @@ private void LoopRec(State state, Action recurse) { hasNext = state.enumerator.MoveNext(); if (hasNext) + { current = state.enumerator.Current; + } } catch (Exception exception) { @@ -137,7 +139,9 @@ private void Loop(IEnumerator enumerator, ICancelable cancel) { hasNext = enumerator.MoveNext(); if (hasNext) + { current = enumerator.Current; + } } catch (Exception exception) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Using.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Using.cs index 42d719897a..91436cd4a2 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Using.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Using.cs @@ -38,7 +38,10 @@ public void Run(Using parent) { var resource = parent._resourceFactory(); if (resource != null) + { Disposable.SetSingle(ref _disposable, resource); + } + source = parent._observableFactory(resource); } catch (Exception exception) diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/While.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/While.cs index 16e1c392d0..58db524fb3 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/While.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/While.cs @@ -24,7 +24,9 @@ public While(Func condition, IObservable source) public IEnumerable> GetSources() { while (_condition()) + { yield return _source; + } } internal sealed class _ : ConcatSink diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Window.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Window.cs index 58953d730f..a61b0c4899 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Window.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Window.cs @@ -28,7 +28,7 @@ public Count(IObservable source, int count, int skip) protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink > + internal sealed class _ : Sink> { private readonly Queue> _queue = new Queue>(); private readonly SingleAssignmentDisposable _m = new SingleAssignmentDisposable(); @@ -68,7 +68,9 @@ private IObservable CreateWindow() public override void OnNext(TSource value) { foreach (var s in _queue) + { s.OnNext(value); + } var c = _n - _count + 1; if (c >= 0 && c % _skip == 0) @@ -88,7 +90,9 @@ public override void OnNext(TSource value) public override void OnError(Exception error) { while (_queue.Count > 0) + { _queue.Dequeue().OnError(error); + } ForwardOnError(error); } @@ -96,7 +100,9 @@ public override void OnError(Exception error) public override void OnCompleted() { while (_queue.Count > 0) + { _queue.Dequeue().OnCompleted(); + } ForwardOnCompleted(); } @@ -122,7 +128,7 @@ public TimeSliding(IObservable source, TimeSpan timeSpan, TimeSpan time protected override void Run(_ sink) => sink.Run(this); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly object _gate = new object(); private readonly Queue> _q = new Queue>(); @@ -180,18 +186,27 @@ private void CreateTimer() isShift = true; } else if (_nextSpan < _nextShift) + { isSpan = true; + } else + { isShift = true; + } var newTotalTime = isSpan ? _nextSpan : _nextShift; var ts = newTotalTime - _totalTime; _totalTime = newTotalTime; if (isSpan) + { _nextSpan += _timeShift; + } + if (isShift) + { _nextShift += _timeShift; + } m.Disposable = _scheduler.Schedule((@this: this, isSpan, isShift), ts, (_, tuple) => tuple.@this.Tick(tuple.isSpan, tuple.isShift)); } @@ -228,7 +243,9 @@ public override void OnNext(TSource value) lock (_gate) { foreach (var s in _q) + { s.OnNext(value); + } } } @@ -237,7 +254,9 @@ public override void OnError(Exception error) lock (_gate) { foreach (var s in _q) + { s.OnError(error); + } ForwardOnError(error); } @@ -248,7 +267,9 @@ public override void OnCompleted() lock (_gate) { foreach (var s in _q) + { s.OnCompleted(); + } ForwardOnCompleted(); } @@ -273,7 +294,7 @@ public TimeHopping(IObservable source, TimeSpan timeSpan, IScheduler sc protected override void Run(_ sink) => sink.Run(this); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly object _gate = new object(); @@ -362,7 +383,7 @@ public Ferry(IObservable source, TimeSpan timeSpan, int count, ISchedul protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly object _gate = new object(); private readonly SerialDisposable _timerD = new SerialDisposable(); @@ -414,7 +435,9 @@ private IDisposable Tick(Subject window) lock (_gate) { if (window != _s) + { return d; + } _n = 0; newWindow = new Subject(); @@ -450,7 +473,9 @@ public override void OnNext(TSource value) } if (newWindow != null) + { CreateTimer(newWindow); + } } public override void OnError(Exception error) @@ -491,7 +516,7 @@ public Selector(IObservable source, Func> w protected override void Run(_ sink) => sink.Run(_source); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly object _gate = new object(); private readonly AsyncLock _windowGate = new AsyncLock(); @@ -630,7 +655,7 @@ public Boundaries(IObservable source, IObservable windo protected override void Run(_ sink) => sink.Run(this); - internal sealed class _ : Sink> + internal sealed class _ : Sink> { private readonly object _gate = new object(); diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Zip.cs b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Zip.cs index 77d6c7401b..284aa0e41d 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Observable/Zip.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Observable/Zip.cs @@ -266,7 +266,7 @@ public Enumerable(IObservable first, IEnumerable second, Func sink.Run(_first, _second); - internal sealed class _ : Sink + internal sealed class _ : Sink { private readonly Func _resultSelector; @@ -579,7 +579,9 @@ public void Run(IEnumerable> sources) _queues = new Queue[N]; for (var i = 0; i < N; i++) + { _queues[i] = new Queue(); + } _isDone = new bool[N]; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/ObservableEx.cs b/Rx.NET/Source/src/System.Reactive/Linq/ObservableEx.cs index b41d3e93f7..1bdaa434fe 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/ObservableEx.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/ObservableEx.cs @@ -27,7 +27,9 @@ public static class ObservableEx public static IObservable Create(Func, IEnumerable>> iteratorMethod) { if (iteratorMethod == null) + { throw new ArgumentNullException(nameof(iteratorMethod)); + } return s_impl.Create(iteratorMethod); } @@ -42,7 +44,9 @@ public static IObservable Create(Func, IEnu public static IObservable Create(Func>> iteratorMethod) { if (iteratorMethod == null) + { throw new ArgumentNullException(nameof(iteratorMethod)); + } return s_impl.Create(iteratorMethod); } @@ -64,11 +68,19 @@ public static IObservable Create(Func>> it public static IObservable Expand(this IObservable source, Func> selector, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.Expand(source, selector, scheduler); } @@ -85,9 +97,14 @@ public static IObservable Expand(this IObservable sou public static IObservable Expand(this IObservable source, Func> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Expand(source, selector); } @@ -111,11 +128,19 @@ public static IObservable Expand(this IObservable sou public static IObservable ForkJoin(this IObservable first, IObservable second, Func resultSelector) { if (first == null) + { throw new ArgumentNullException(nameof(first)); + } + if (second == null) + { throw new ArgumentNullException(nameof(second)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return s_impl.ForkJoin(first, second, resultSelector); } @@ -131,7 +156,9 @@ public static IObservable ForkJoin(this IO public static IObservable ForkJoin(params IObservable[] sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.ForkJoin(sources); } @@ -147,7 +174,9 @@ public static IObservable ForkJoin(params IObservable ForkJoin(this IEnumerable> sources) { if (sources == null) + { throw new ArgumentNullException(nameof(sources)); + } return s_impl.ForkJoin(sources); } @@ -170,9 +199,14 @@ public static IObservable ForkJoin(this IEnumerable Let(this IObservable source, Func, IObservable> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.Let(source, selector); } @@ -188,11 +222,19 @@ public static IObservable Let(this IObservable ManySelect(this IObservable source, Func, TResult> selector, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return s_impl.ManySelect(source, selector, scheduler); } @@ -204,9 +246,14 @@ public static IObservable ManySelect(this IObservable public static IObservable ManySelect(this IObservable source, Func, TResult> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return s_impl.ManySelect(source, selector); } @@ -226,7 +273,9 @@ public static IObservable ManySelect(this IObservable public static ListObservable ToListObservable(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return s_impl.ToListObservable(source); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.Generated.cs b/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.Generated.cs index 3000e69b06..7e7eaf0aa0 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.Generated.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.Generated.cs @@ -5,18 +5,15 @@ #pragma warning disable 1591 -using System; -using System.Reactive.Concurrency; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.Reactive.Joins; using System.Linq; using System.Linq.Expressions; +using System.Reactive.Concurrency; +using System.Reactive.Subjects; using System.Reflection; using System.Threading; using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Subjects; namespace System.Reactive.Linq { @@ -21918,7 +21915,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -21959,7 +21956,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider #if PREFERASYNC [Obsolete(Constants_Linq.USE_TASK_FROMASYNCPATTERN)] #endif - public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22002,7 +21999,7 @@ public static Func> FromAsyncPattern(this IQbser #if PREFERASYNC [Obsolete(Constants_Linq.USE_TASK_FROMASYNCPATTERN)] #endif - public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22047,7 +22044,7 @@ public static Func> FromAsyncPattern> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22094,7 +22091,7 @@ public static Func> FromAsyncPattern> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22143,7 +22140,7 @@ public static Func> FromAsyncPatte #if PREFERASYNC [Obsolete(Constants_Linq.USE_TASK_FROMASYNCPATTERN)] #endif - public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22194,7 +22191,7 @@ public static Func> FromAsy #if PREFERASYNC [Obsolete(Constants_Linq.USE_TASK_FROMASYNCPATTERN)] #endif - public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22247,7 +22244,7 @@ public static Func> #if PREFERASYNC [Obsolete(Constants_Linq.USE_TASK_FROMASYNCPATTERN)] #endif - public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22302,7 +22299,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22359,7 +22356,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22418,7 +22415,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22479,7 +22476,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22542,7 +22539,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22607,7 +22604,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22674,7 +22671,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22729,7 +22726,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22771,7 +22768,7 @@ public static Func> FromAsyncPattern(this IQbserva #if PREFERASYNC [Obsolete(Constants_Linq.USE_TASK_FROMASYNCPATTERN)] #endif - public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22815,7 +22812,7 @@ public static Func> FromAsyncPattern #if PREFERASYNC [Obsolete(Constants_Linq.USE_TASK_FROMASYNCPATTERN)] #endif - public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22861,7 +22858,7 @@ public static Func> FromAsyncPattern> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22909,7 +22906,7 @@ public static Func> FromAsyncPattern> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -22959,7 +22956,7 @@ public static Func> FromAsyncPa #if PREFERASYNC [Obsolete(Constants_Linq.USE_TASK_FROMASYNCPATTERN)] #endif - public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -23011,7 +23008,7 @@ public static Func> From #if PREFERASYNC [Obsolete(Constants_Linq.USE_TASK_FROMASYNCPATTERN)] #endif - public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -23065,7 +23062,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -23121,7 +23118,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -23179,7 +23176,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -23239,7 +23236,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -23301,7 +23298,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -23365,7 +23362,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -23431,7 +23428,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); @@ -23499,7 +23496,7 @@ public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression>end) + public static Func> FromAsyncPattern(this IQbservableProvider provider, Expression> begin, Expression> end) { if (provider == null) throw new ArgumentNullException(nameof(provider)); diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.Joins.cs b/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.Joins.cs index 0afd417973..716decef24 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.Joins.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.Joins.cs @@ -5,10 +5,10 @@ #pragma warning disable 1591 using System.Collections.Generic; -using System.Reactive.Joins; +using System.Linq; using System.Linq.Expressions; +using System.Reactive.Joins; using System.Reflection; -using System.Linq; namespace System.Reactive.Linq { @@ -28,15 +28,20 @@ public static partial class Qbservable public static QueryablePattern And(this IQbservable left, IObservable right) { if (left == null) + { throw new ArgumentNullException(nameof(left)); + } + if (right == null) + { throw new ArgumentNullException(nameof(right)); + } return new QueryablePattern( Expression.Call( null, #if CRIPPLED_REFLECTION - InfoOf(() => Qbservable.And(default(IQbservable), default(IObservable))), + InfoOf(() => Qbservable.And(default, default)), #else ((MethodInfo)MethodInfo.GetCurrentMethod()).MakeGenericMethod(typeof(TLeft), typeof(TRight)), #endif @@ -58,15 +63,20 @@ public static QueryablePattern And(this IQbservabl public static QueryablePlan Then(this IQbservable source, Expression> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return new QueryablePlan( Expression.Call( null, #if CRIPPLED_REFLECTION - InfoOf(() => Qbservable.Then(default(IQbservable), default(Expression>))), + InfoOf(() => Qbservable.Then(default, default)), #else ((MethodInfo)MethodInfo.GetCurrentMethod()).MakeGenericMethod(typeof(TSource), typeof(TResult)), #endif @@ -87,15 +97,20 @@ public static QueryablePlan Then(this IQbservable When(this IQbservableProvider provider, params QueryablePlan[] plans) { if (provider == null) + { throw new ArgumentNullException(nameof(provider)); + } + if (plans == null) + { throw new ArgumentNullException(nameof(plans)); + } return provider.CreateQuery( Expression.Call( null, #if CRIPPLED_REFLECTION - InfoOf(() => Qbservable.When(default(IQbservableProvider), default(QueryablePlan[]))), + InfoOf(() => Qbservable.When(default, default)), #else ((MethodInfo)MethodInfo.GetCurrentMethod()).MakeGenericMethod(typeof(TResult)), #endif @@ -119,15 +134,20 @@ public static IQbservable When(this IQbservableProvider provid public static IQbservable When(this IQbservableProvider provider, IEnumerable> plans) { if (provider == null) + { throw new ArgumentNullException(nameof(provider)); + } + if (plans == null) + { throw new ArgumentNullException(nameof(plans)); + } return provider.CreateQuery( Expression.Call( null, #if CRIPPLED_REFLECTION - InfoOf(() => Qbservable.When(default(IQbservableProvider), default(IEnumerable>))), + InfoOf(() => Qbservable.When(default, default(IEnumerable>))), #else ((MethodInfo)MethodInfo.GetCurrentMethod()).MakeGenericMethod(typeof(TResult)), #endif diff --git a/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.cs b/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.cs index 5eb2776221..8a19434102 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/Qbservable.cs @@ -7,8 +7,8 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; -using System.Reflection; using System.Reactive.Concurrency; +using System.Reflection; namespace System.Reactive.Linq { @@ -28,7 +28,9 @@ public static partial class Qbservable public static IObservable AsObservable(this IQbservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return source; } @@ -44,13 +46,15 @@ public static IObservable AsObservable(this IQbservable ToQbservable(this IQueryable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return ((IQbservableProvider)source.Provider).CreateQuery( Expression.Call( null, #if CRIPPLED_REFLECTION - InfoOf(() => Qbservable.ToQbservable(default(IQueryable))), + InfoOf(() => Qbservable.ToQbservable(default)), #else ((MethodInfo)MethodInfo.GetCurrentMethod()).MakeGenericMethod(typeof(TSource)), #endif @@ -71,15 +75,20 @@ public static IQbservable ToQbservable(this IQueryable ToQbservable(this IQueryable source, IScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return ((IQbservableProvider)source.Provider).CreateQuery( Expression.Call( null, #if CRIPPLED_REFLECTION - InfoOf(() => Qbservable.ToQbservable(default(IQueryable))), + InfoOf(() => Qbservable.ToQbservable(default)), #else ((MethodInfo)MethodInfo.GetCurrentMethod()).MakeGenericMethod(typeof(TSource)), #endif @@ -92,7 +101,9 @@ public static IQbservable ToQbservable(this IQueryable(IObservable source) { if (source is IQbservable q) + { return q.Expression; + } return Expression.Constant(source, typeof(IObservable)); } @@ -100,7 +111,9 @@ internal static Expression GetSourceExpression(IObservable sou internal static Expression GetSourceExpression(IEnumerable source) { if (source is IQueryable q) + { return q.Expression; + } return Expression.Constant(source, typeof(IEnumerable)); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.Generated.cs b/Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.Generated.cs index 4d8eea88e8..3e239269a9 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.Generated.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.Generated.cs @@ -5,17 +5,10 @@ #pragma warning disable 1591 -using System; -using System.Reactive.Concurrency; using System.Collections.Generic; -using System.Reactive.Joins; -using System.Linq; using System.Linq.Expressions; +using System.Reactive.Concurrency; using System.Reflection; -using System.Threading; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Subjects; namespace System.Reactive.Linq { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.cs b/Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.cs index 0654bf9622..f67cd4a126 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QbservableEx.cs @@ -18,7 +18,9 @@ public static partial class QbservableEx internal static Expression GetSourceExpression(IObservable source) { if (source is IQbservable q) + { return q.Expression; + } return Expression.Constant(source, typeof(IObservable)); } @@ -26,7 +28,9 @@ internal static Expression GetSourceExpression(IObservable sou internal static Expression GetSourceExpression(IEnumerable source) { if (source is IQueryable q) + { return q.Expression; + } return Expression.Constant(source, typeof(IEnumerable)); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Async.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Async.cs index 9dfa79e442..8882704059 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Async.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Async.cs @@ -728,11 +728,10 @@ private IObservable StartAsyncImpl(Func(cancellable, result); } - sealed class StartAsyncObservable : ObservableBase + private sealed class StartAsyncObservable : ObservableBase { - readonly CancellationDisposable cancellable; - - readonly IObservable result; + private readonly CancellationDisposable cancellable; + private readonly IObservable result; public StartAsyncObservable(CancellationDisposable cancellable, IObservable result) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Awaiter.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Awaiter.cs index beb5716819..ce1773d30a 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Awaiter.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Awaiter.cs @@ -2,9 +2,9 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Threading; using System.Reactive.Disposables; using System.Reactive.Subjects; +using System.Threading; namespace System.Reactive.Linq { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Binding.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Binding.cs index f7f486d367..9e9e8a7508 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Binding.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Binding.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System.Reactive.Concurrency; -using System.Reactive.Disposables; using System.Reactive.Subjects; namespace System.Reactive.Linq diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Blocking.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Blocking.cs index 8142c37ab7..b7367a095b 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Blocking.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Blocking.cs @@ -281,7 +281,9 @@ private static TSource SingleOrDefaultInternal(IObservable sou ex.ThrowIfNotNull(); if (throwOnEmpty && !seenValue) + { throw new InvalidOperationException(Strings_Linq.NO_ELEMENTS); + } return value; } @@ -299,7 +301,7 @@ public virtual TSource Wait(IObservable source) #region |> Helpers <| - class WaitAndSetOnce : IDisposable + private class WaitAndSetOnce : IDisposable { private readonly ManualResetEvent _evt; private int _hasSet; @@ -332,6 +334,6 @@ public void Dispose() } } -#endregion + #endregion } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Conversions.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Conversions.cs index c75474f928..71491bc52b 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Conversions.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Conversions.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Reactive.Concurrency; -using System.Reactive.Disposables; namespace System.Reactive.Linq { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Creation.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Creation.cs index 2939a33480..743e407b5c 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Creation.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Creation.cs @@ -2,8 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Collections.Generic; -using System.Linq; using System.Reactive.Concurrency; using System.Reactive.Disposables; using System.Reactive.Threading.Tasks; @@ -23,9 +21,9 @@ public virtual IObservable Create(Func, IDi return new CreateWithDisposableObservable(subscribe); } - sealed class CreateWithDisposableObservable : ObservableBase + private sealed class CreateWithDisposableObservable : ObservableBase { - readonly Func, IDisposable> subscribe; + private readonly Func, IDisposable> subscribe; public CreateWithDisposableObservable(Func, IDisposable> subscribe) { @@ -43,9 +41,9 @@ public virtual IObservable Create(Func, Act return new CreateWithActionDisposable(subscribe); } - sealed class CreateWithActionDisposable : ObservableBase + private sealed class CreateWithActionDisposable : ObservableBase { - readonly Func, Action> subscribe; + private readonly Func, Action> subscribe; public CreateWithActionDisposable(Func, Action> subscribe) { @@ -68,9 +66,9 @@ public virtual IObservable Create(Func, Can return new CreateWithTaskTokenObservable(subscribeAsync); } - sealed class CreateWithTaskTokenObservable : ObservableBase + private sealed class CreateWithTaskTokenObservable : ObservableBase { - readonly Func, CancellationToken, Task> subscribeAsync; + private readonly Func, CancellationToken, Task> subscribeAsync; public CreateWithTaskTokenObservable(Func, CancellationToken, Task> subscribeAsync) { @@ -88,9 +86,9 @@ protected override IDisposable SubscribeCore(IObserver observer) return StableCompositeDisposable.Create(cancellable, subscription); } - sealed class TaskCompletionObserver : IObserver + private sealed class TaskCompletionObserver : IObserver { - readonly IObserver observer; + private readonly IObserver observer; public TaskCompletionObserver(IObserver observer) { @@ -124,9 +122,9 @@ public virtual IObservable Create(Func, Can return new CreateWithTaskDisposable(subscribeAsync); } - sealed class CreateWithTaskDisposable : ObservableBase + private sealed class CreateWithTaskDisposable : ObservableBase { - readonly Func, CancellationToken, Task> subscribeAsync; + private readonly Func, CancellationToken, Task> subscribeAsync; public CreateWithTaskDisposable(Func, CancellationToken, Task> subscribeAsync) { @@ -150,11 +148,10 @@ protected override IDisposable SubscribeCore(IObserver observer) return StableCompositeDisposable.Create(cancellable, taskCompletionObserver); } - sealed class TaskDisposeCompletionObserver : IObserver, IDisposable + private sealed class TaskDisposeCompletionObserver : IObserver, IDisposable { - readonly IObserver observer; - - IDisposable disposable; + private readonly IObserver observer; + private IDisposable disposable; public TaskDisposeCompletionObserver(IObserver observer) { @@ -193,9 +190,9 @@ public virtual IObservable Create(Func, Can return new CreateWithTaskActionObservable(subscribeAsync); } - sealed class CreateWithTaskActionObservable : ObservableBase + private sealed class CreateWithTaskActionObservable : ObservableBase { - readonly Func, CancellationToken, Task> subscribeAsync; + private readonly Func, CancellationToken, Task> subscribeAsync; public CreateWithTaskActionObservable(Func, CancellationToken, Task> subscribeAsync) { @@ -219,13 +216,11 @@ protected override IDisposable SubscribeCore(IObserver observer) return StableCompositeDisposable.Create(cancellable, taskCompletionObserver); } - sealed class TaskDisposeCompletionObserver : IObserver, IDisposable + private sealed class TaskDisposeCompletionObserver : IObserver, IDisposable { - readonly IObserver observer; - - Action disposable; - - static readonly Action DisposedAction = () => { }; + private readonly IObserver observer; + private Action disposable; + private static readonly Action DisposedAction = () => { }; public TaskDisposeCompletionObserver(IObserver observer) { diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Events.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Events.cs index 9a62dc16a7..71e6d0a037 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Events.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Events.cs @@ -2,14 +2,10 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Globalization; using System.Reactive.Concurrency; -using System.Reactive.Disposables; -using System.Reflection; using System.Threading; #if HAS_WINRT -using System.Runtime.InteropServices.WindowsRuntime; #endif namespace System.Reactive.Linq @@ -369,9 +365,13 @@ private static IScheduler GetSchedulerForCurrentContext() var context = SynchronizationContext.Current; if (context != null) + { return new SynchronizationContextScheduler(context, false); + } else + { return SchedulerDefaults.ConstantTimeOperations; + } } #endregion diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Imperative.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Imperative.cs index 798d580676..95720a1318 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Imperative.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Imperative.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; using System.Reactive.Concurrency; using System.Reactive.Disposables; -using System.Reactive.Subjects; using System.Threading; using System.Threading.Tasks; diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Joins.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Joins.cs index 81ad16b467..738dda10b5 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Joins.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Joins.cs @@ -40,13 +40,13 @@ public virtual IObservable When(IEnumerable> pla return new WhenObservable(plans); } - sealed class WhenObservable : ObservableBase + private sealed class WhenObservable : ObservableBase { - readonly IEnumerable> plans; + private readonly IEnumerable> _plans; public WhenObservable(IEnumerable> plans) { - this.plans = plans; + _plans = plans; } protected override IDisposable SubscribeCore(IObserver observer) @@ -57,16 +57,20 @@ protected override IDisposable SubscribeCore(IObserver observer) var outObserver = new OutObserver(observer, externalSubscriptions); try { - Action onDeactivate = activePlan => + void onDeactivate(ActivePlan activePlan) { activePlans.Remove(activePlan); if (activePlans.Count == 0) + { outObserver.OnCompleted(); - }; + } + } - foreach (var plan in plans) + foreach (var plan in _plans) + { activePlans.Add(plan.Activate(externalSubscriptions, outObserver, onDeactivate)); + } } catch (Exception e) { @@ -86,35 +90,34 @@ protected override IDisposable SubscribeCore(IObserver observer) return group; } - sealed class OutObserver : IObserver + private sealed class OutObserver : IObserver { - readonly IObserver observer; - - readonly Dictionary externalSubscriptions; + private readonly IObserver _observer; + private readonly Dictionary _externalSubscriptions; public OutObserver(IObserver observer, Dictionary externalSubscriptions) { - this.observer = observer; - this.externalSubscriptions = externalSubscriptions; + _observer = observer; + _externalSubscriptions = externalSubscriptions; } public void OnCompleted() { - observer.OnCompleted(); + _observer.OnCompleted(); } public void OnError(Exception exception) { - foreach (var po in externalSubscriptions.Values) + foreach (var po in _externalSubscriptions.Values) { po.Dispose(); } - observer.OnError(exception); + _observer.OnError(exception); } public void OnNext(TResult value) { - observer.OnNext(value); + _observer.OnNext(value); } } } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Single.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Single.cs index 4a842a58e7..6edda930c7 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Single.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Single.cs @@ -27,7 +27,9 @@ public virtual IObservable Append(IObservable source, private static IObservable Append_(IObservable source, TSource value, IScheduler scheduler) { if (source is AppendPrepend.IAppendPrepend ap && ap.Scheduler == scheduler) + { return ap.Append(value); + } return new AppendPrepend.AppendPrependSingle(source, value, scheduler, append: true); } @@ -39,7 +41,9 @@ private static IObservable Append_(IObservable source public virtual IObservable AsObservable(IObservable source) { if (source is AsObservable asObservable) + { return asObservable; + } return new AsObservable(source); } @@ -74,7 +78,9 @@ public virtual IObservable> Buffer(IObservable public virtual IObservable Dematerialize(IObservable> source) { if (source is Materialize materialize) + { return materialize.Dematerialize(); + } return new Dematerialize(source); } @@ -158,7 +164,9 @@ public virtual IObservable Finally(IObservable source public virtual IObservable IgnoreElements(IObservable source) { if (source is IgnoreElements ignoreElements) + { return ignoreElements; + } return new IgnoreElements(source); } @@ -195,7 +203,9 @@ public virtual IObservable Prepend(IObservable source private static IObservable Prepend_(IObservable source, TSource value, IScheduler scheduler) { if (source is AppendPrepend.IAppendPrepend ap && ap.Scheduler == scheduler) + { return ap.Prepend(value); + } return new AppendPrepend.AppendPrependSingle(source, value, scheduler, append: false); } @@ -212,7 +222,9 @@ public virtual IObservable Repeat(IObservable source) private static IEnumerable RepeatInfinite(T value) { while (true) + { yield return value; + } } public virtual IObservable Repeat(IObservable source, int repeatCount) @@ -295,8 +307,7 @@ public virtual IObservable StartWith(IObservable sour // IQueryLanguage interface, we went for consistency with the public API, hence the odd position of the IScheduler. // - var valueArray = values as TSource[]; - if (valueArray == null) + if (!(values is TSource[] valueArray)) { var valueList = new List(values); valueArray = valueList.ToArray(); diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.StandardSequenceOperators.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.StandardSequenceOperators.cs index b6a641db3f..43ce382098 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.StandardSequenceOperators.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.StandardSequenceOperators.cs @@ -26,7 +26,7 @@ public virtual IObservable Cast(IObservable source) public virtual IObservable DefaultIfEmpty(IObservable source) { - return new DefaultIfEmpty(source, default(TSource)); + return new DefaultIfEmpty(source, default); } public virtual IObservable DefaultIfEmpty(IObservable source, TSource defaultValue) @@ -282,7 +282,7 @@ private static IObservable SelectMany_(IObservable.ObservableSelector(source, selector); } - + private static IObservable SelectMany_(IObservable source, Func> selector) { return new SelectMany.ObservableSelectorIndexed(source, selector); @@ -345,7 +345,9 @@ private static IObservable SelectMany_(I public virtual IObservable Skip(IObservable source, int count) { if (source is Skip.Count skip) + { return skip.Combine(count); + } return new Skip.Count(source, count); } @@ -371,7 +373,9 @@ public virtual IObservable SkipWhile(IObservable sour public virtual IObservable Take(IObservable source, int count) { if (count == 0) + { return Empty(); + } return Take_(source, count); } @@ -379,7 +383,9 @@ public virtual IObservable Take(IObservable source, i public virtual IObservable Take(IObservable source, int count, IScheduler scheduler) { if (count == 0) + { return Empty(scheduler); + } return Take_(source, count); } @@ -387,7 +393,9 @@ public virtual IObservable Take(IObservable source, i private static IObservable Take_(IObservable source, int count) { if (source is Take.Count take) + { return take.Combine(count); + } return new Take.Count(source, count); } @@ -413,7 +421,9 @@ public virtual IObservable TakeWhile(IObservable sour public virtual IObservable Where(IObservable source, Func predicate) { if (source is Where.Predicate where) + { return where.Combine(predicate); + } return new Where.Predicate(source, predicate); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Time.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Time.cs index 3938b1d434..0b121b7e31 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Time.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguage.Time.cs @@ -4,8 +4,6 @@ using System.Collections.Generic; using System.Reactive.Concurrency; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace System.Reactive.Linq { @@ -252,7 +250,9 @@ public virtual IObservable Skip(IObservable source, T private static IObservable Skip_(IObservable source, TimeSpan duration, IScheduler scheduler) { if (source is Skip.Time skip && skip._scheduler == scheduler) + { return skip.Combine(duration); + } return new Skip.Time(source, duration, scheduler); } @@ -293,7 +293,9 @@ public virtual IObservable SkipUntil(IObservable sour private static IObservable SkipUntil_(IObservable source, DateTimeOffset startTime, IScheduler scheduler) { if (source is SkipUntil skipUntil && skipUntil._scheduler == scheduler) + { return skipUntil.Combine(startTime); + } return new SkipUntil(source, startTime, scheduler); } @@ -315,7 +317,9 @@ public virtual IObservable Take(IObservable source, T private static IObservable Take_(IObservable source, TimeSpan duration, IScheduler scheduler) { if (source is Take.Time take && take._scheduler == scheduler) + { return take.Combine(duration); + } return new Take.Time(source, duration, scheduler); } @@ -376,7 +380,9 @@ public virtual IObservable TakeUntil(IObservable sour private static IObservable TakeUntil_(IObservable source, DateTimeOffset endTime, IScheduler scheduler) { if (source is TakeUntil takeUntil && takeUntil._scheduler == scheduler) + { return takeUntil.Combine(endTime); + } return new TakeUntil(source, endTime, scheduler); } diff --git a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguageEx.cs b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguageEx.cs index cbc8fc8cb8..bf2bfcdf61 100644 --- a/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguageEx.cs +++ b/Rx.NET/Source/src/System.Reactive/Linq/QueryLanguageEx.cs @@ -19,40 +19,40 @@ public virtual IObservable Create(Func, IEn return new CreateWithEnumerableObservable(iteratorMethod); } - sealed class CreateWithEnumerableObservable : ObservableBase + private sealed class CreateWithEnumerableObservable : ObservableBase { - readonly Func, IEnumerable>> iteratorMethod; + private readonly Func, IEnumerable>> _iteratorMethod; public CreateWithEnumerableObservable(Func, IEnumerable>> iteratorMethod) { - this.iteratorMethod = iteratorMethod; + _iteratorMethod = iteratorMethod; } protected override IDisposable SubscribeCore(IObserver observer) { - return iteratorMethod(observer) + return _iteratorMethod(observer) .Concat() .Subscribe(new TerminalOnlyObserver(observer)); } } - sealed class TerminalOnlyObserver : IObserver + private sealed class TerminalOnlyObserver : IObserver { - readonly IObserver observer; + private readonly IObserver _observer; public TerminalOnlyObserver(IObserver observer) { - this.observer = observer; + _observer = observer; } public void OnCompleted() { - observer.OnCompleted(); + _observer.OnCompleted(); } public void OnError(Exception error) { - observer.OnError(error); + _observer.OnError(error); } public void OnNext(object value) @@ -66,18 +66,18 @@ public virtual IObservable Create(Func>> i return new CreateWithOnlyEnumerableObservable(iteratorMethod); } - sealed class CreateWithOnlyEnumerableObservable : ObservableBase + private sealed class CreateWithOnlyEnumerableObservable : ObservableBase { - readonly Func>> iteratorMethod; + private readonly Func>> _iteratorMethod; public CreateWithOnlyEnumerableObservable(Func>> iteratorMethod) { - this.iteratorMethod = iteratorMethod; + _iteratorMethod = iteratorMethod; } protected override IDisposable SubscribeCore(IObserver observer) { - return iteratorMethod() + return _iteratorMethod() .Concat() .Subscribe(new TerminalOnlyObserver(observer)); } @@ -92,17 +92,17 @@ public virtual IObservable Expand(IObservable source, return new ExpandObservable(source, selector, scheduler); } - sealed class ExpandObservable : ObservableBase + private sealed class ExpandObservable : ObservableBase { - readonly IObservable source; - readonly Func> selector; - readonly IScheduler scheduler; + private readonly IObservable _source; + private readonly Func> _selector; + private readonly IScheduler _scheduler; public ExpandObservable(IObservable source, Func> selector, IScheduler scheduler) { - this.source = source; - this.selector = selector; - this.scheduler = scheduler; + _source = source; + _selector = selector; + _scheduler = scheduler; } protected override IDisposable SubscribeCore(IObserver observer) @@ -114,9 +114,7 @@ protected override IDisposable SubscribeCore(IObserver observer) var activeCount = 0; var isAcquired = false; - var ensureActive = default(Action); - - ensureActive = () => + void ensureActive() { var isOwner = false; @@ -131,14 +129,16 @@ protected override IDisposable SubscribeCore(IObserver observer) if (isOwner) { - m.Disposable = scheduler.Schedule(self => + m.Disposable = _scheduler.Schedule(self => { var work = default(IObservable); lock (q) { if (q.Count > 0) + { work = q.Dequeue(); + } else { isAcquired = false; @@ -152,17 +152,21 @@ protected override IDisposable SubscribeCore(IObserver observer) x => { lock (outGate) + { observer.OnNext(x); + } var result = default(IObservable); try { - result = selector(x); + result = _selector(x); } catch (Exception exception) { lock (outGate) + { observer.OnError(exception); + } } lock (q) @@ -176,7 +180,9 @@ protected override IDisposable SubscribeCore(IObserver observer) exception => { lock (outGate) + { observer.OnError(exception); + } }, () => { @@ -187,20 +193,26 @@ protected override IDisposable SubscribeCore(IObserver observer) { activeCount--; if (activeCount == 0) + { done = true; + } } if (done) + { lock (outGate) + { observer.OnCompleted(); + } + } }); self(); }); } - }; + } lock (q) { - q.Enqueue(source); + q.Enqueue(_source); activeCount++; } ensureActive(); @@ -247,9 +259,13 @@ public virtual IObservable ForkJoin(IObservab if (rightStopped) { if (!hasLeft) + { observer.OnCompleted(); + } else if (!hasRight) + { observer.OnCompleted(); + } else { TResult result; @@ -286,9 +302,13 @@ public virtual IObservable ForkJoin(IObservab if (leftStopped) { if (!hasLeft) + { observer.OnCompleted(); + } else if (!hasRight) + { observer.OnCompleted(); + } else { TResult result; @@ -321,18 +341,18 @@ public virtual IObservable ForkJoin(IEnumerable(sources); } - sealed class ForkJoinObservable : ObservableBase + private sealed class ForkJoinObservable : ObservableBase { - readonly IEnumerable> sources; + private readonly IEnumerable> _sources; public ForkJoinObservable(IEnumerable> sources) { - this.sources = sources; + _sources = sources; } protected override IDisposable SubscribeCore(IObserver observer) { - var allSources = sources.ToArray(); + var allSources = _sources.ToArray(); var count = allSources.Length; if (count == 0) @@ -355,7 +375,7 @@ protected override IDisposable SubscribeCore(IObserver observer) { var currentIndex = index; var source = allSources[index]; - results.Add(default(TSource)); + results.Add(default); group.Add(source.Subscribe( value => { @@ -392,7 +412,9 @@ protected override IDisposable SubscribeCore(IObserver observer) foreach (var completed in hasCompleted) { if (!completed) + { return; + } } finished = true; observer.OnNext(results.ToArray()); @@ -437,7 +459,10 @@ public virtual IObservable ManySelect(IObservable(x); if (chain != null) + { chain.OnNext(curr); + } + chain = curr; return (IObservable)curr; @@ -447,26 +472,30 @@ public virtual IObservable ManySelect(IObservable { if (chain != null) + { chain.OnError(exception); + } }, () => { if (chain != null) + { chain.OnCompleted(); + } }) .ObserveOn(scheduler) .Select(selector); }); } - class ChainObservable : ISubject, T> + private class ChainObservable : ISubject, T> { - T head; - AsyncSubject> tail = new AsyncSubject>(); + private T _head; + private AsyncSubject> _tail = new AsyncSubject>(); public ChainObservable(T head) { - this.head = head; + _head = head; } public IDisposable Subscribe(IObserver observer) @@ -475,8 +504,8 @@ public IDisposable Subscribe(IObserver observer) g.Add(CurrentThreadScheduler.Instance.ScheduleAction((observer, g, @this: this), state => { - state.observer.OnNext(state.@this.head); - state.g.Add(state.@this.tail.Merge().Subscribe(state.observer)); + state.observer.OnNext(state.@this._head); + state.g.Add(state.@this._tail.Merge().Subscribe(state.observer)); })); return g; } @@ -493,8 +522,8 @@ public void OnError(Exception error) public void OnNext(IObservable value) { - tail.OnNext(value); - tail.OnCompleted(); + _tail.OnNext(value); + _tail.OnCompleted(); } } @@ -516,18 +545,17 @@ private static IObservable Combine(IObservable< return new CombineObservable(leftSource, rightSource, combinerSelector); } - sealed class CombineObservable : ObservableBase + private sealed class CombineObservable : ObservableBase { - readonly IObservable leftSource; - readonly IObservable rightSource; - - readonly Func, IDisposable, IDisposable, IObserver, Notification>>> combinerSelector; + private readonly IObservable _leftSource; + private readonly IObservable _rightSource; + private readonly Func, IDisposable, IDisposable, IObserver, Notification>>> _combinerSelector; public CombineObservable(IObservable leftSource, IObservable rightSource, Func, IDisposable, IDisposable, IObserver, Notification>>> combinerSelector) { - this.leftSource = leftSource; - this.rightSource = rightSource; - this.combinerSelector = combinerSelector; + _leftSource = leftSource; + _rightSource = rightSource; + _combinerSelector = combinerSelector; } protected override IDisposable SubscribeCore(IObserver observer) @@ -535,11 +563,11 @@ protected override IDisposable SubscribeCore(IObserver observer) var leftSubscription = new SingleAssignmentDisposable(); var rightSubscription = new SingleAssignmentDisposable(); - var combiner = combinerSelector(observer, leftSubscription, rightSubscription); + var combiner = _combinerSelector(observer, leftSubscription, rightSubscription); var gate = new object(); - leftSubscription.Disposable = leftSource.Materialize().Select(x => Either, Notification>.CreateLeft(x)).Synchronize(gate).Subscribe(combiner); - rightSubscription.Disposable = rightSource.Materialize().Select(x => Either, Notification>.CreateRight(x)).Synchronize(gate).Subscribe(combiner); + leftSubscription.Disposable = _leftSource.Materialize().Select(x => Either, Notification>.CreateLeft(x)).Synchronize(gate).Subscribe(combiner); + rightSubscription.Disposable = _rightSource.Materialize().Select(x => Either, Notification>.CreateRight(x)).Synchronize(gate).Subscribe(combiner); return StableCompositeDisposable.Create(leftSubscription, rightSubscription); diff --git a/Rx.NET/Source/src/System.Reactive/ListObservable.cs b/Rx.NET/Source/src/System.Reactive/ListObservable.cs index b1a519f92a..2d57b39b4b 100644 --- a/Rx.NET/Source/src/System.Reactive/ListObservable.cs +++ b/Rx.NET/Source/src/System.Reactive/ListObservable.cs @@ -32,7 +32,9 @@ public class ListObservable : IList, IObservable public ListObservable(IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } subscription = source.Subscribe(results.Add, subject.OnError, subject.OnCompleted); } @@ -202,7 +204,9 @@ public IEnumerator GetEnumerator() public IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return StableCompositeDisposable.Create(subscription, subject.Subscribe(observer)); } diff --git a/Rx.NET/Source/src/System.Reactive/NamespaceDocs.cs b/Rx.NET/Source/src/System.Reactive/NamespaceDocs.cs index ee7a9d0883..9cab1d6f93 100644 --- a/Rx.NET/Source/src/System.Reactive/NamespaceDocs.cs +++ b/Rx.NET/Source/src/System.Reactive/NamespaceDocs.cs @@ -8,7 +8,7 @@ namespace System.Reactive /// The System.Reactive namespace contains interfaces and classes used throughout the Reactive Extensions library. /// [Runtime.CompilerServices.CompilerGenerated] - class NamespaceDoc + internal class NamespaceDoc { } } @@ -21,7 +21,7 @@ namespace System.Reactive.Concurrency /// and to write unit tests for functionality built using Reactive Extensions constructs. /// [Runtime.CompilerServices.CompilerGenerated] - class NamespaceDoc + internal class NamespaceDoc { } } @@ -34,7 +34,7 @@ namespace System.Reactive.Disposables /// schedulers. /// [Runtime.CompilerServices.CompilerGenerated] - class NamespaceDoc + internal class NamespaceDoc { } } @@ -46,7 +46,7 @@ namespace System.Reactive.Linq /// Query operators are made available as extension methods for and defined on the Observable and Qbservable classes, respectively. /// [Runtime.CompilerServices.CompilerGenerated] - class NamespaceDoc + internal class NamespaceDoc { } } @@ -59,7 +59,7 @@ namespace System.Reactive.Subjects /// have multiple registered observers, subjects are also used as a facility to provide multicast behavior for event streams in queries. /// [Runtime.CompilerServices.CompilerGenerated] - class NamespaceDoc + internal class NamespaceDoc { } } @@ -71,7 +71,7 @@ namespace System.Reactive.PlatformServices /// Those are not intended to be used directly from user code and are subject to change in future releases of the product. /// [Runtime.CompilerServices.CompilerGenerated] - class NamespaceDoc + internal class NamespaceDoc { } } @@ -82,7 +82,7 @@ namespace System.Reactive.Joins /// The System.Reactive.Joins namespace contains classes used to express join patterns over observable sequences using fluent method syntax. /// [Runtime.CompilerServices.CompilerGenerated] - class NamespaceDoc + internal class NamespaceDoc { } } diff --git a/Rx.NET/Source/src/System.Reactive/Notification.cs b/Rx.NET/Source/src/System.Reactive/Notification.cs index a6287ff6cb..18a91900de 100644 --- a/Rx.NET/Source/src/System.Reactive/Notification.cs +++ b/Rx.NET/Source/src/System.Reactive/Notification.cs @@ -2,9 +2,9 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. +using System.Collections.Generic; using System.Diagnostics; using System.Globalization; -using System.Collections.Generic; using System.Reactive.Concurrency; using System.Reactive.Disposables; @@ -121,11 +121,19 @@ public OnNextNotification(T value) public override bool Equals(Notification other) { if (ReferenceEquals(this, other)) + { return true; - if (ReferenceEquals(other, null)) + } + + if (other is null) + { return false; + } + if (other.Kind != NotificationKind.OnNext) + { return false; + } return EqualityComparer.Default.Equals(Value, other.Value); } @@ -142,7 +150,9 @@ public override bool Equals(Notification other) public override void Accept(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } observer.OnNext(Value); } @@ -155,7 +165,9 @@ public override void Accept(IObserver observer) public override TResult Accept(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return observer.OnNext(Value); } @@ -169,11 +181,19 @@ public override TResult Accept(IObserver observer) public override void Accept(Action onNext, Action onError, Action onCompleted) { if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } onNext(Value); } @@ -188,11 +208,19 @@ public override void Accept(Action onNext, Action onError, Action public override TResult Accept(Func onNext, Func onError, Func onCompleted) { if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } return onNext(Value); } @@ -220,7 +248,7 @@ public OnErrorNotification(Exception exception) /// /// Throws the exception. /// - public override T Value { get { Exception.Throw(); return default(T); } } + public override T Value { get { Exception.Throw(); return default; } } /// /// Returns the exception. @@ -248,11 +276,19 @@ public OnErrorNotification(Exception exception) public override bool Equals(Notification other) { if (ReferenceEquals(this, other)) + { return true; - if (ReferenceEquals(other, null)) + } + + if (other is null) + { return false; + } + if (other.Kind != NotificationKind.OnError) + { return false; + } return Equals(Exception, other.Exception); } @@ -269,7 +305,9 @@ public override bool Equals(Notification other) public override void Accept(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } observer.OnError(Exception); } @@ -282,7 +320,9 @@ public override void Accept(IObserver observer) public override TResult Accept(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return observer.OnError(Exception); } @@ -296,11 +336,19 @@ public override TResult Accept(IObserver observer) public override void Accept(Action onNext, Action onError, Action onCompleted) { if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } onError(Exception); } @@ -315,11 +363,19 @@ public override void Accept(Action onNext, Action onError, Action public override TResult Accept(Func onNext, Func onError, Func onCompleted) { if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } return onError(Exception); } @@ -380,9 +436,14 @@ private OnCompletedNotification() public override bool Equals(Notification other) { if (ReferenceEquals(this, other)) + { return true; - if (ReferenceEquals(other, null)) + } + + if (other is null) + { return false; + } return other.Kind == NotificationKind.OnCompleted; } @@ -399,7 +460,9 @@ public override bool Equals(Notification other) public override void Accept(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } observer.OnCompleted(); } @@ -412,7 +475,9 @@ public override void Accept(IObserver observer) public override TResult Accept(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return observer.OnCompleted(); } @@ -426,11 +491,19 @@ public override TResult Accept(IObserver observer) public override void Accept(Action onNext, Action onError, Action onCompleted) { if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } onCompleted(); } @@ -445,11 +518,19 @@ public override void Accept(Action onNext, Action onError, Action public override TResult Accept(Func onNext, Func onError, Func onCompleted) { if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } return onCompleted(); } @@ -481,10 +562,14 @@ public override TResult Accept(Func onNext, Func left, Notification right) { if (ReferenceEquals(left, right)) + { return true; + } if ((object)left == null || (object)right == null) + { return false; + } return left.Equals(right); } @@ -535,7 +620,7 @@ public override TResult Accept(Func onNext, FuncDelegate to invoke for an OnError notification. /// Delegate to invoke for an OnCompleted notification. public abstract void Accept(Action onNext, Action onError, Action onCompleted); - + /// /// Invokes the delegate corresponding to the notification and returns the produced result. /// @@ -560,16 +645,17 @@ public override TResult Accept(Func onNext, Func ToObservable(IScheduler scheduler) { if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new NotificationToObservable(scheduler, this); } - sealed class NotificationToObservable : ObservableBase + private sealed class NotificationToObservable : ObservableBase { - readonly IScheduler scheduler; - - readonly Notification parent; + private readonly IScheduler scheduler; + private readonly Notification parent; public NotificationToObservable(IScheduler scheduler, Notification parent) { @@ -622,7 +708,9 @@ public static Notification CreateOnNext(T value) public static Notification CreateOnError(Exception error) { if (error == null) + { throw new ArgumentNullException(nameof(error)); + } return new Notification.OnErrorNotification(error); } diff --git a/Rx.NET/Source/src/System.Reactive/Observable.Extensions.cs b/Rx.NET/Source/src/System.Reactive/Observable.Extensions.cs index 5b780993a3..4d3ce37ff9 100644 --- a/Rx.NET/Source/src/System.Reactive/Observable.Extensions.cs +++ b/Rx.NET/Source/src/System.Reactive/Observable.Extensions.cs @@ -27,7 +27,9 @@ public static class ObservableExtensions public static IDisposable Subscribe(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } // // [OK] Use of unsafe Subscribe: non-pretentious constructor for an observer; this overload is not to be used internally. @@ -46,9 +48,14 @@ public static IDisposable Subscribe(this IObservable source) public static IDisposable Subscribe(this IObservable source, Action onNext) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } // // [OK] Use of unsafe Subscribe: non-pretentious constructor for an observer; this overload is not to be used internally. @@ -68,11 +75,19 @@ public static IDisposable Subscribe(this IObservable source, Action onN public static IDisposable Subscribe(this IObservable source, Action onNext, Action onError) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } // // [OK] Use of unsafe Subscribe: non-pretentious constructor for an observer; this overload is not to be used internally. @@ -92,11 +107,19 @@ public static IDisposable Subscribe(this IObservable source, Action onN public static IDisposable Subscribe(this IObservable source, Action onNext, Action onCompleted) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } // // [OK] Use of unsafe Subscribe: non-pretentious constructor for an observer; this overload is not to be used internally. @@ -117,13 +140,24 @@ public static IDisposable Subscribe(this IObservable source, Action onN public static IDisposable Subscribe(this IObservable source, Action onNext, Action onError, Action onCompleted) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } // // [OK] Use of unsafe Subscribe: non-pretentious constructor for an observer; this overload is not to be used internally. @@ -146,9 +180,14 @@ public static IDisposable Subscribe(this IObservable source, Action onN public static void Subscribe(this IObservable source, IObserver observer, CancellationToken token) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } source.Subscribe_(observer, token); } @@ -164,7 +203,9 @@ public static void Subscribe(this IObservable source, IObserver observe public static void Subscribe(this IObservable source, CancellationToken token) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } source.Subscribe_(new AnonymousObserver(Stubs.Ignore, Stubs.Throw, Stubs.Nop), token); } @@ -180,9 +221,14 @@ public static void Subscribe(this IObservable source, CancellationToken to public static void Subscribe(this IObservable source, Action onNext, CancellationToken token) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } source.Subscribe_(new AnonymousObserver(onNext, Stubs.Throw, Stubs.Nop), token); } @@ -199,11 +245,19 @@ public static void Subscribe(this IObservable source, Action onNext, Ca public static void Subscribe(this IObservable source, Action onNext, Action onError, CancellationToken token) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } source.Subscribe_(new AnonymousObserver(onNext, onError, Stubs.Nop), token); } @@ -220,11 +274,19 @@ public static void Subscribe(this IObservable source, Action onNext, Ac public static void Subscribe(this IObservable source, Action onNext, Action onCompleted, CancellationToken token) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } source.Subscribe_(new AnonymousObserver(onNext, Stubs.Throw, onCompleted), token); } @@ -242,13 +304,24 @@ public static void Subscribe(this IObservable source, Action onNext, Ac public static void Subscribe(this IObservable source, Action onNext, Action onError, Action onCompleted, CancellationToken token) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } source.Subscribe_(new AnonymousObserver(onNext, onError, onCompleted), token); } @@ -292,9 +365,14 @@ private static void Subscribe_(this IObservable source, IObserver obser public static IDisposable SubscribeSafe(this IObservable source, IObserver observer) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } // // The following types are white-listed and should not exhibit exceptional behavior diff --git a/Rx.NET/Source/src/System.Reactive/ObservableBase.cs b/Rx.NET/Source/src/System.Reactive/ObservableBase.cs index 0b0f0bb990..532aceb26d 100644 --- a/Rx.NET/Source/src/System.Reactive/ObservableBase.cs +++ b/Rx.NET/Source/src/System.Reactive/ObservableBase.cs @@ -27,7 +27,9 @@ public abstract class ObservableBase : IObservable public IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } var autoDetachObserver = new AutoDetachObserver(observer); @@ -68,7 +70,9 @@ public IDisposable Subscribe(IObserver observer) // screwed up. // if (!autoDetachObserver.Fail(exception)) + { throw; + } } } @@ -93,7 +97,9 @@ private IDisposable ScheduledSubscribe(IScheduler _, AutoDetachObserver autoD // screwed up. // if (!autoDetachObserver.Fail(exception)) + { throw; + } } return Disposable.Empty; diff --git a/Rx.NET/Source/src/System.Reactive/ObservableQuery.cs b/Rx.NET/Source/src/System.Reactive/ObservableQuery.cs index 60ce027792..791bb1d336 100644 --- a/Rx.NET/Source/src/System.Reactive/ObservableQuery.cs +++ b/Rx.NET/Source/src/System.Reactive/ObservableQuery.cs @@ -17,9 +17,14 @@ internal class ObservableQueryProvider : IQbservableProvider, IQueryProvider public IQbservable CreateQuery(Expression expression) { if (expression == null) + { throw new ArgumentNullException(nameof(expression)); + } + if (!typeof(IObservable).IsAssignableFrom(expression.Type)) + { throw new ArgumentException(Strings_Providers.INVALID_TREE_TYPE, nameof(expression)); + } return new ObservableQuery(expression); } @@ -37,9 +42,12 @@ IQueryable IQueryProvider.CreateQuery(Expression expression) // // observable.AsQbservable()..ToEnumerable().AsQueryable() // - var call = expression as MethodCallExpression; - if (call == null || call.Method.DeclaringType != typeof(Qbservable) || call.Method.Name != nameof(Qbservable.ToQueryable)) + if (!(expression is MethodCallExpression call) || + call.Method.DeclaringType != typeof(Qbservable) || + call.Method.Name != nameof(Qbservable.ToQueryable)) + { throw new ArgumentException(Strings_Providers.EXPECTED_TOQUERYABLE_METHODCALL, nameof(expression)); + } // // This is the IQbservable object corresponding to the lhs. Now wrap @@ -70,7 +78,9 @@ private static MethodInfo AsQueryable get { if (s_AsQueryable == null) + { s_AsQueryable = Qbservable.InfoOf(() => Queryable.AsQueryable(null)).GetGenericMethodDefinition(); + } return s_AsQueryable; } @@ -146,7 +156,9 @@ public override string ToString() if (_expression is ConstantExpression c && c.Value == this) { if (_source != null) + { return _source.ToString(); + } return "null"; } @@ -154,7 +166,7 @@ public override string ToString() return _expression.ToString(); } - class ObservableRewriter : ExpressionVisitor + private class ObservableRewriter : ExpressionVisitor { protected override Expression VisitConstant(ConstantExpression/*!*/ node) { @@ -324,7 +336,7 @@ private IList VisitQbservableOperatorArguments(MethodInfo method, IE return arguments.Select(arg => Visit(arg)).ToList(); } - class Lazy + private class Lazy { private readonly Func _factory; private T _value; @@ -395,13 +407,17 @@ private static MethodCallExpression FindObservableMethod(MethodInfo method, ILis var typeArgs = method.IsGenericMethod ? method.GetGenericArguments() : null; var targetMethod = methods[method.Name].FirstOrDefault(candidateMethod => ArgsMatch(candidateMethod, arguments, typeArgs)); if (targetMethod == null) + { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Strings_Providers.NO_MATCHING_METHOD_FOUND, method.Name, targetType.Name)); + } // // Restore generic arguments. // if (typeArgs != null) + { targetMethod = targetMethod.MakeGenericMethod(typeArgs); + } // // Finally, we need to deal with mismatches on Expression> versus Func<...>. @@ -435,13 +451,17 @@ private static bool ArgsMatch(MethodInfo method, IList arguments, Ty // var parameters = method.GetParameters(); if (parameters.Length != arguments.Count) + { return false; + } // // Genericity should match too. // if (!method.IsGenericMethod && typeArgs != null && typeArgs.Length > 0) + { return false; + } // // Reconstruct the generic method if needed. @@ -449,10 +469,14 @@ private static bool ArgsMatch(MethodInfo method, IList arguments, Ty if (method.IsGenericMethodDefinition) { if (typeArgs == null) + { return false; + } if (method.GetGenericArguments().Length != typeArgs.Length) + { return false; + } var result = method.MakeGenericMethod(typeArgs); parameters = result.GetParameters(); @@ -475,7 +499,9 @@ private static bool ArgsMatch(MethodInfo method, IList arguments, Ty { argument = Unquote(argument); if (!parameterType.IsAssignableFrom(argument.Type)) + { return false; + } } } @@ -488,10 +514,12 @@ private static Expression Unquote(Expression expression) // Get rid of all outer quotes around an expression. // while (expression.NodeType == ExpressionType.Quote) + { expression = ((UnaryExpression)expression).Operand; + } return expression; } } } -} \ No newline at end of file +} diff --git a/Rx.NET/Source/src/System.Reactive/Observer.Extensions.cs b/Rx.NET/Source/src/System.Reactive/Observer.Extensions.cs index e5356a183f..41d0fb95ca 100644 --- a/Rx.NET/Source/src/System.Reactive/Observer.Extensions.cs +++ b/Rx.NET/Source/src/System.Reactive/Observer.Extensions.cs @@ -22,7 +22,9 @@ public static class Observer public static IObserver ToObserver(this Action> handler) { if (handler == null) + { throw new ArgumentNullException(nameof(handler)); + } return new AnonymousObserver( x => handler(Notification.CreateOnNext(x)), @@ -42,10 +44,12 @@ public static IObserver ToObserver(this Action> handler) public static Action> ToNotifier(this IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return n => n.Accept(observer); - } + } /// /// Creates an observer from the specified OnNext action. @@ -57,7 +61,9 @@ public static Action> ToNotifier(this IObserver observer) public static IObserver Create(Action onNext) { if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } return new AnonymousObserver(onNext); } @@ -73,9 +79,14 @@ public static IObserver Create(Action onNext) public static IObserver Create(Action onNext, Action onError) { if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } return new AnonymousObserver(onNext, onError); } @@ -91,9 +102,14 @@ public static IObserver Create(Action onNext, Action onError public static IObserver Create(Action onNext, Action onCompleted) { if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } return new AnonymousObserver(onNext, onCompleted); } @@ -110,11 +126,19 @@ public static IObserver Create(Action onNext, Action onCompleted) public static IObserver Create(Action onNext, Action onError, Action onCompleted) { if (onNext == null) + { throw new ArgumentNullException(nameof(onNext)); + } + if (onError == null) + { throw new ArgumentNullException(nameof(onError)); + } + if (onCompleted == null) + { throw new ArgumentNullException(nameof(onCompleted)); + } return new AnonymousObserver(onNext, onError, onCompleted); } @@ -129,7 +153,9 @@ public static IObserver Create(Action onNext, Action onError public static IObserver AsObserver(this IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return new AnonymousObserver(observer.OnNext, observer.OnError, observer.OnCompleted); } @@ -145,7 +171,9 @@ public static IObserver AsObserver(this IObserver observer) public static IObserver Checked(this IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return new CheckedObserver(observer); } @@ -166,7 +194,9 @@ public static IObserver Checked(this IObserver observer) public static IObserver Synchronize(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return new SynchronizedObserver(observer, new object()); } @@ -188,12 +218,18 @@ public static IObserver Synchronize(IObserver observer) public static IObserver Synchronize(IObserver observer, bool preventReentrancy) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } if (preventReentrancy) + { return new AsyncLockObserver(observer, new AsyncLock()); + } else + { return new SynchronizedObserver(observer, new object()); + } } /// @@ -214,9 +250,14 @@ public static IObserver Synchronize(IObserver observer, bool preventRee public static IObserver Synchronize(IObserver observer, object gate) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } + if (gate == null) + { throw new ArgumentNullException(nameof(gate)); + } return new SynchronizedObserver(observer, gate); } @@ -233,9 +274,14 @@ public static IObserver Synchronize(IObserver observer, object gate) public static IObserver Synchronize(IObserver observer, AsyncLock asyncLock) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } + if (asyncLock == null) + { throw new ArgumentNullException(nameof(asyncLock)); + } return new AsyncLockObserver(observer, asyncLock); } @@ -251,9 +297,14 @@ public static IObserver Synchronize(IObserver observer, AsyncLock async public static IObserver NotifyOn(this IObserver observer, IScheduler scheduler) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new ObserveOnObserver(scheduler, observer); } @@ -269,9 +320,14 @@ public static IObserver NotifyOn(this IObserver observer, IScheduler sc public static IObserver NotifyOn(this IObserver observer, SynchronizationContext context) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } + if (context == null) + { throw new ArgumentNullException(nameof(context)); + } return new ObserveOnObserver(new SynchronizationContextScheduler(context), observer); } @@ -286,7 +342,9 @@ public static IObserver NotifyOn(this IObserver observer, Synchronizati public static IProgress ToProgress(this IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return new AnonymousProgress(observer.OnNext); } @@ -302,14 +360,19 @@ public static IProgress ToProgress(this IObserver observer) public static IProgress ToProgress(this IObserver observer, IScheduler scheduler) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new AnonymousProgress(new ObserveOnObserver(scheduler, observer).OnNext); } - class AnonymousProgress : IProgress + private class AnonymousProgress : IProgress { private readonly Action _progress; @@ -334,7 +397,9 @@ public void Report(T value) public static IObserver ToObserver(this IProgress progress) { if (progress == null) + { throw new ArgumentNullException(nameof(progress)); + } return new AnonymousObserver(progress.Report); } diff --git a/Rx.NET/Source/src/System.Reactive/ObserverBase.cs b/Rx.NET/Source/src/System.Reactive/ObserverBase.cs index 6568ae5190..22cf86e97d 100644 --- a/Rx.NET/Source/src/System.Reactive/ObserverBase.cs +++ b/Rx.NET/Source/src/System.Reactive/ObserverBase.cs @@ -50,7 +50,9 @@ public void OnNext(T value) public void OnError(Exception error) { if (error == null) + { throw new ArgumentNullException(nameof(error)); + } if (Interlocked.Exchange(ref isStopped, 1) == 0) { diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Concurrency/ControlScheduler.cs b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Concurrency/ControlScheduler.cs index 0e4830d870..6887c7e0cd 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Concurrency/ControlScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Concurrency/ControlScheduler.cs @@ -25,10 +25,7 @@ public class ControlScheduler : LocalScheduler, ISchedulerPeriodic /// public ControlScheduler(Control control) { - if (control == null) - throw new ArgumentNullException(nameof(control)); - - _control = control; + _control = control ?? throw new ArgumentNullException(nameof(control)); } /// @@ -50,7 +47,9 @@ public Control Control public override IDisposable Schedule(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } if (_control.IsDisposed) { @@ -62,7 +61,9 @@ public override IDisposable Schedule(TState state, Func { if (!_control.IsDisposed && !d.IsDisposed) + { d.Disposable = action(this, state); + } })); return d; @@ -80,11 +81,15 @@ public override IDisposable Schedule(TState state, Func(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var dt = Scheduler.Normalize(dueTime); if (dt.Ticks == 0) + { return Schedule(state, action); + } var createTimer = new Func((scheduler1, state1) => { @@ -133,9 +138,13 @@ public override IDisposable Schedule(TState state, TimeSpan dueTime, Fun // the UI thread, it won't fire. // if (_control.InvokeRequired) + { return Schedule(state, createTimer); + } else + { return createTimer(this, state); + } } /// @@ -154,9 +163,14 @@ public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func< // Threshold derived from Interval property setter in ndp\fx\src\winforms\managed\system\winforms\Timer.cs. // if (period.TotalMilliseconds < 1) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var createTimer = new Func((scheduler1, state1) => { @@ -189,9 +203,13 @@ public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func< // the UI thread, it won't fire. // if (_control.InvokeRequired) + { return Schedule(state, createTimer); + } else + { return createTimer(this, state); + } } } } diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Concurrency/DispatcherScheduler.cs b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Concurrency/DispatcherScheduler.cs index 4f9fc90759..f12f9a15c2 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Concurrency/DispatcherScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Concurrency/DispatcherScheduler.cs @@ -31,7 +31,9 @@ public static DispatcherScheduler Current { var dispatcher = System.Windows.Threading.Dispatcher.FromThread(Thread.CurrentThread); if (dispatcher == null) + { throw new InvalidOperationException(Strings_WindowsThreading.NO_DISPATCHER_CURRENT_THREAD); + } return new DispatcherScheduler(dispatcher); } @@ -44,14 +46,11 @@ public static DispatcherScheduler Current /// is null. public DispatcherScheduler(System.Windows.Threading.Dispatcher dispatcher) { - if (dispatcher == null) - throw new ArgumentNullException(nameof(dispatcher)); - - Dispatcher = dispatcher; + Dispatcher = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher)); Priority = Windows.Threading.DispatcherPriority.Normal; } - + /// /// Constructs a that schedules units of work on the given at the given priority. /// @@ -60,10 +59,7 @@ public DispatcherScheduler(System.Windows.Threading.Dispatcher dispatcher) /// is null. public DispatcherScheduler(System.Windows.Threading.Dispatcher dispatcher, System.Windows.Threading.DispatcherPriority priority) { - if (dispatcher == null) - throw new ArgumentNullException(nameof(dispatcher)); - - Dispatcher = dispatcher; + Dispatcher = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher)); Priority = priority; } @@ -71,7 +67,7 @@ public DispatcherScheduler(System.Windows.Threading.Dispatcher dispatcher, Syste /// Gets the associated with the . /// public System.Windows.Threading.Dispatcher Dispatcher { get; } - + /// /// Gets the priority at which work items will be dispatched. /// @@ -88,7 +84,9 @@ public DispatcherScheduler(System.Windows.Threading.Dispatcher dispatcher, Syste public override IDisposable Schedule(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var d = new SingleAssignmentDisposable(); @@ -118,7 +116,9 @@ public override IDisposable Schedule(TState state, Func(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var dt = Scheduler.Normalize(dueTime); if (dt.Ticks == 0) @@ -181,9 +181,14 @@ private IDisposable ScheduleSlow(TState state, TimeSpan dueTime, Func(TState state, TimeSpan period, Func action) { if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var timer = new System.Windows.Threading.DispatcherTimer(Priority, Dispatcher); diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Internal/Constants.cs b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Internal/Constants.cs index d7631eb455..4178058bc4 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Internal/Constants.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Internal/Constants.cs @@ -6,7 +6,7 @@ namespace System.Reactive { // We can't make those based on the Strings_WindowsThreading.resx file, because the ObsoleteAttribute needs a compile-time constant. - static class Constants_WindowsThreading + internal static class Constants_WindowsThreading { #if !WINDOWS public const string OBSOLETE_INSTANCE_PROPERTY = "Use the Current property to retrieve the DispatcherScheduler instance for the current thread's Dispatcher object."; diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/ControlObservable.cs b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/ControlObservable.cs index 6a07cd6320..5529f2f461 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/ControlObservable.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/ControlObservable.cs @@ -27,9 +27,14 @@ public static class ControlObservable public static IObservable SubscribeOn(this IObservable source, Control control) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (control == null) + { throw new ArgumentNullException(nameof(control)); + } return Synchronization.SubscribeOn(source, new ControlScheduler(control)); } @@ -45,9 +50,14 @@ public static IObservable SubscribeOn(this IObservable ObserveOn(this IObservable source, Control control) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (control == null) + { throw new ArgumentNullException(nameof(control)); + } return Synchronization.ObserveOn(source, new ControlScheduler(control)); } diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/DispatcherObservable.cs b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/DispatcherObservable.cs index 46e1b1f46f..cdb3536302 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/DispatcherObservable.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/DispatcherObservable.cs @@ -4,7 +4,6 @@ #if !WINDOWS using System.Reactive.Concurrency; -using System.Windows; using System.Windows.Threading; namespace System.Reactive.Linq @@ -27,13 +26,18 @@ public static class DispatcherObservable public static IObservable ObserveOn(this IObservable source, Dispatcher dispatcher) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcher == null) + { throw new ArgumentNullException(nameof(dispatcher)); + } return ObserveOn_(source, dispatcher); } - + /// /// Wraps the source sequence in order to run its observer callbacks on the specified dispatcher. /// @@ -46,9 +50,14 @@ public static IObservable ObserveOn(this IObservable public static IObservable ObserveOn(this IObservable source, Dispatcher dispatcher, DispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcher == null) + { throw new ArgumentNullException(nameof(dispatcher)); + } return ObserveOn_(source, dispatcher, priority); } @@ -64,10 +73,15 @@ public static IObservable ObserveOn(this IObservable public static IObservable ObserveOn(this IObservable source, DispatcherScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); - + } + return ObserveOn_(source, scheduler.Dispatcher, scheduler.Priority); } @@ -83,9 +97,14 @@ public static IObservable ObserveOn(this IObservable public static IObservable ObserveOn(this IObservable source, DispatcherObject dispatcherObject) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcherObject == null) + { throw new ArgumentNullException(nameof(dispatcherObject)); + } return ObserveOn_(source, dispatcherObject.Dispatcher); } @@ -102,9 +121,14 @@ public static IObservable ObserveOn(this IObservable public static IObservable ObserveOn(this IObservable source, DispatcherObject dispatcherObject, DispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcherObject == null) + { throw new ArgumentNullException(nameof(dispatcherObject)); + } return ObserveOn_(source, dispatcherObject.Dispatcher, priority); } @@ -120,11 +144,13 @@ public static IObservable ObserveOn(this IObservable public static IObservable ObserveOnDispatcher(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return ObserveOn_(source, DispatcherScheduler.Current.Dispatcher); } - + /// /// Wraps the source sequence in order to run its observer callbacks on the dispatcher associated with the current thread. /// @@ -136,7 +162,9 @@ public static IObservable ObserveOnDispatcher(this IObservable public static IObservable ObserveOnDispatcher(this IObservable source, DispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return ObserveOn_(source, DispatcherScheduler.Current.Dispatcher, priority); } @@ -171,13 +199,18 @@ private static IObservable ObserveOn_(IObservable sou public static IObservable SubscribeOn(this IObservable source, Dispatcher dispatcher) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcher == null) + { throw new ArgumentNullException(nameof(dispatcher)); + } return SubscribeOn_(source, dispatcher); } - + /// /// Wraps the source sequence in order to run its subscription and unsubscription logic on the specified dispatcher. /// @@ -194,9 +227,14 @@ public static IObservable SubscribeOn(this IObservable SubscribeOn(this IObservable source, Dispatcher dispatcher, DispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcher == null) + { throw new ArgumentNullException(nameof(dispatcher)); + } return SubscribeOn_(source, dispatcher, priority); } @@ -217,9 +255,14 @@ public static IObservable SubscribeOn(this IObservable SubscribeOn(this IObservable source, DispatcherScheduler scheduler) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return SubscribeOn_(source, scheduler.Dispatcher, scheduler.Priority); } @@ -239,13 +282,18 @@ public static IObservable SubscribeOn(this IObservable SubscribeOn(this IObservable source, DispatcherObject dispatcherObject) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcherObject == null) + { throw new ArgumentNullException(nameof(dispatcherObject)); + } return SubscribeOn_(source, dispatcherObject.Dispatcher); } - + /// /// Wraps the source sequence in order to run its subscription and unsubscription logic on the dispatcher associated with the specified object. /// @@ -262,9 +310,14 @@ public static IObservable SubscribeOn(this IObservable SubscribeOn(this IObservable source, DispatcherObject dispatcherObject, DispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcherObject == null) + { throw new ArgumentNullException(nameof(dispatcherObject)); + } return SubscribeOn_(source, dispatcherObject.Dispatcher, priority); } @@ -283,7 +336,9 @@ public static IObservable SubscribeOn(this IObservable SubscribeOnDispatcher(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return SubscribeOn_(source, DispatcherScheduler.Current.Dispatcher); } @@ -303,7 +358,9 @@ public static IObservable SubscribeOnDispatcher(this IObservab public static IObservable SubscribeOnDispatcher(this IObservable source, DispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return SubscribeOn_(source, DispatcherScheduler.Current.Dispatcher, priority); } diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/Observable.Remoting.cs b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/Observable.Remoting.cs index 294b7970b0..926b7b98d7 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/Observable.Remoting.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/Observable.Remoting.cs @@ -27,7 +27,9 @@ public static partial class RemotingObservable public static IObservable Remotable(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return Remotable_(source); } @@ -44,7 +46,9 @@ public static IObservable Remotable(this IObservable public static IObservable Remotable(this IObservable source, ILease lease) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return Remotable_(source, lease); } @@ -60,7 +64,9 @@ public static IObservable Remotable(this IObservable public static IQbservable Remotable(this IQbservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return source.Provider.CreateQuery( Expression.Call( @@ -87,7 +93,9 @@ public static IQbservable Remotable(this IQbservable public static IQbservable Remotable(this IQbservable source, ILease lease) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return source.Provider.CreateQuery( Expression.Call( diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/QueryLanguage.Remoting.cs b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/QueryLanguage.Remoting.cs index a257a66cac..206c025ee0 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/QueryLanguage.Remoting.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/Desktop/Linq/QueryLanguage.Remoting.cs @@ -74,9 +74,9 @@ private static IObservable Remotable_(IObservable sou } [Serializable] - class SerializableObservable : IObservable + private class SerializableObservable : IObservable { - readonly RemotableObservable remotableObservable; + private readonly RemotableObservable remotableObservable; public SerializableObservable(RemotableObservable remotableObservable) { @@ -98,9 +98,9 @@ public IDisposable Subscribe(IObserver observer) } } - class RemotableObserver : MarshalByRefObject, IObserver, ISponsor + private class RemotableObserver : MarshalByRefObject, IObserver, ISponsor { - readonly IObserver underlyingObserver; + private readonly IObserver underlyingObserver; public RemotableObserver(IObserver underlyingObserver) { @@ -141,7 +141,9 @@ private void Unregister() { var lease = (ILease)RemotingServices.GetLifetimeService(this); if (lease != null) + { lease.Unregister(this); + } } [SecurityCritical] @@ -160,10 +162,10 @@ TimeSpan ISponsor.Renewal(ILease lease) } [Serializable] - sealed class RemotableObservable : MarshalByRefObject, IObservable + private sealed class RemotableObservable : MarshalByRefObject, IObservable { - readonly IObservable underlyingObservable; - readonly ILease lease; + private readonly IObservable underlyingObservable; + private readonly ILease lease; public RemotableObservable(IObservable underlyingObservable, ILease lease) { @@ -185,7 +187,7 @@ public override object InitializeLifetimeService() return lease; } - sealed class RemotableSubscription : MarshalByRefObject, IDisposable, ISponsor + private sealed class RemotableSubscription : MarshalByRefObject, IDisposable, ISponsor { private IDisposable underlyingSubscription; @@ -210,7 +212,9 @@ private void Unregister() { var lease = (ILease)RemotingServices.GetLifetimeService(this); if (lease != null) + { lease.Unregister(this); + } } [SecurityCritical] diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Concurrency/CoreDispatcherScheduler.cs b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Concurrency/CoreDispatcherScheduler.cs index 135075fd3f..e0498ca403 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Concurrency/CoreDispatcherScheduler.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Concurrency/CoreDispatcherScheduler.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. #if WINDOWS -using System.Reactive.Concurrency; using System.Reactive.Disposables; using System.Runtime.ExceptionServices; using System.Threading; @@ -28,10 +27,7 @@ public sealed class CoreDispatcherScheduler : LocalScheduler, ISchedulerPeriodic /// is null. public CoreDispatcherScheduler(CoreDispatcher dispatcher) { - if (dispatcher == null) - throw new ArgumentNullException(nameof(dispatcher)); - - Dispatcher = dispatcher; + Dispatcher = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher)); Priority = CoreDispatcherPriority.Normal; } @@ -43,10 +39,7 @@ public CoreDispatcherScheduler(CoreDispatcher dispatcher) /// is null. public CoreDispatcherScheduler(CoreDispatcher dispatcher, CoreDispatcherPriority priority) { - if (dispatcher == null) - throw new ArgumentNullException(nameof(dispatcher)); - - Dispatcher = dispatcher; + Dispatcher = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher)); Priority = priority; } @@ -59,7 +52,9 @@ public static CoreDispatcherScheduler Current { var window = Window.Current; if (window == null) + { throw new InvalidOperationException(Strings_WindowsThreading.NO_WINDOW_CURRENT); + } return new CoreDispatcherScheduler(window.Dispatcher); } @@ -86,7 +81,9 @@ public static CoreDispatcherScheduler Current public override IDisposable Schedule(TState state, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var d = new SingleAssignmentDisposable(); @@ -111,8 +108,10 @@ public override IDisposable Schedule(TState state, Func { timer.Stop(); @@ -142,7 +141,9 @@ public override IDisposable Schedule(TState state, Func(TState state, TimeSpan dueTime, Func action) { if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var dt = Scheduler.Normalize(dueTime); if (dt.Ticks == 0) @@ -209,9 +210,14 @@ public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func< // Empirical observation - negative values seem to be normalized to TimeSpan.Zero, but let's not go there. // if (period < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(period)); + } + if (action == null) + { throw new ArgumentNullException(nameof(action)); + } var timer = new DispatcherTimer(); @@ -237,4 +243,4 @@ public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func< } } } -#endif \ No newline at end of file +#endif diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/EventPatternSource.cs b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/EventPatternSource.cs index c9a5e66b96..9f1eba6385 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/EventPatternSource.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/EventPatternSource.cs @@ -7,7 +7,7 @@ namespace System.Reactive { - class EventPatternSource : EventPatternSourceBase, IEventPatternSource + internal class EventPatternSource : EventPatternSourceBase, IEventPatternSource { public EventPatternSource(IObservable> source, Action, /*object,*/ EventPattern> invokeHandler) : base(source, invokeHandler) diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Foundation/AsyncInfoExtensions.cs b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Foundation/AsyncInfoExtensions.cs index c70f0bafb0..bc2c2f8104 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Foundation/AsyncInfoExtensions.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Foundation/AsyncInfoExtensions.cs @@ -3,10 +3,7 @@ // See the LICENSE file in the project root for more information. #if HAS_WINRT -using System.Reactive.Disposables; using System.Reactive.Linq; -using System.Reactive.Subjects; -using System.Threading; using Windows.Foundation; namespace System.Reactive.Windows.Foundation @@ -29,7 +26,9 @@ public static class AsyncInfoObservableExtensions public static IObservable ToObservable(this IAsyncAction source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return new AsyncInfoToObservableBridge( source, @@ -52,7 +51,9 @@ public static IObservable ToObservable(this IAsyncAction source) public static IObservable ToObservable(this IAsyncActionWithProgress source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return source.ToObservable_(null); } @@ -69,9 +70,14 @@ public static IObservable ToObservable(this IAsyncActionWithPro public static IObservable ToObservable(this IAsyncActionWithProgress source, IProgress progress) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (progress == null) + { throw new ArgumentNullException(nameof(progress)); + } return source.ToObservable_(progress); } @@ -87,7 +93,9 @@ public static IObservable ToObservable(this IAsyncActionWithPro public static IObservable ToObservableProgress(this IAsyncActionWithProgress source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return Observable.Create(observer => { @@ -124,7 +132,9 @@ private static IObservable ToObservable_(this IAsyncActionWithP public static IObservable ToObservable(this IAsyncOperation source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return new AsyncInfoToObservableBridge( source, @@ -148,7 +158,9 @@ public static IObservable ToObservable(this IAsyncOperation ToObservable(this IAsyncOperationWithProgress source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return source.ToObservable_(null, false); } @@ -166,9 +178,14 @@ public static IObservable ToObservable(this IAsyncO public static IObservable ToObservable(this IAsyncOperationWithProgress source, IProgress progress) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (progress == null) + { throw new ArgumentNullException(nameof(progress)); + } return source.ToObservable_(progress, false); } @@ -185,7 +202,9 @@ public static IObservable ToObservable(this IAsyncO public static IObservable ToObservableProgress(this IAsyncOperationWithProgress source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return Observable.Create(observer => { @@ -208,7 +227,9 @@ public static IObservable ToObservableProgress(th public static IObservable ToObservableMultiple(this IAsyncOperationWithProgress source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return source.ToObservable_(null, true); } @@ -227,9 +248,14 @@ public static IObservable ToObservableMultiple(this public static IObservable ToObservableMultiple(this IAsyncOperationWithProgress source, IProgress progress) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (progress == null) + { throw new ArgumentNullException(nameof(progress)); + } return source.ToObservable_(progress, true); } diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Foundation/AsyncInfoToObservableBridge.cs b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Foundation/AsyncInfoToObservableBridge.cs index 1104b06494..5ba00249f4 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Foundation/AsyncInfoToObservableBridge.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Foundation/AsyncInfoToObservableBridge.cs @@ -3,13 +3,12 @@ // See the LICENSE file in the project root for more information. #if HAS_WINRT -using System.Reactive.Disposables; using System.Reactive.Subjects; using Windows.Foundation; namespace System.Reactive.Windows.Foundation { - class AsyncInfoToObservableBridge : ObservableBase + internal class AsyncInfoToObservableBridge : ObservableBase { private readonly Action> _onCompleted; private readonly Func _getResult; @@ -25,10 +24,14 @@ public AsyncInfoToObservableBridge(IAsyncInfo info, Action { if (multiValue && getResult != null) + { _subject.OnNext(getResult(iai)); + } if (progress != null) + { progress.Report(p); + } }); Done(info, info.Status, true); @@ -48,18 +51,26 @@ private void Done(IAsyncInfo info, AsyncStatus status, bool initial) case AsyncStatus.Error: error = info.ErrorCode; if (error == null) + { throw new InvalidOperationException("The asynchronous operation failed with a null error code."); + } + break; case AsyncStatus.Canceled: error = new OperationCanceledException(); break; case AsyncStatus.Completed: if (_getResult != null) + { result = _getResult(info); + } + break; default: if (!initial) + { throw new InvalidOperationException("The asynchronous operation completed unexpectedly."); + } _onCompleted(info, (iai, s) => Done(iai, s, false)); return; @@ -85,7 +96,9 @@ private void Done(IAsyncInfo info, AsyncStatus status, bool initial) else { if (_getResult != null) + { _subject.OnNext(result); + } _subject.OnCompleted(); } diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/AsyncInfoObservable.cs b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/AsyncInfoObservable.cs index e395f24b9c..4c3af4cd6d 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/AsyncInfoObservable.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/AsyncInfoObservable.cs @@ -4,8 +4,6 @@ #if HAS_WINRT using System.Reactive.Disposables; -using System.Reactive.Linq; -using System.Reactive.Subjects; using System.Reactive.Threading.Tasks; using System.Runtime.InteropServices.WindowsRuntime; using System.Threading.Tasks; @@ -32,7 +30,9 @@ public static class AsyncInfoObservable public static IAsyncAction ToAsyncAction(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return AsyncInfo.Run(ct => (Task)source.DefaultIfEmpty().ToTask(ct)); } @@ -50,12 +50,14 @@ public static IAsyncAction ToAsyncAction(this IObservable sour public static IAsyncActionWithProgress ToAsyncActionWithProgress(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return AsyncInfo.Run((ct, progress) => { var i = 0; - return (Task)source.Do(_ => progress.Report(i++)).DefaultIfEmpty().ToTask(ct); + return source.Do(_ => progress.Report(i++)).DefaultIfEmpty().ToTask(ct); }); } @@ -72,13 +74,18 @@ public static IAsyncActionWithProgress ToAsyncActionWithProgress(t public static IAsyncActionWithProgress ToAsyncActionWithProgress(this IObservable source, Func, IObservable> progressSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (progressSelector == null) + { throw new ArgumentNullException(nameof(progressSelector)); + } return AsyncInfo.Run((ct, progress) => { - return (Task)Observable.Create(observer => + return Observable.Create(observer => { var obs = Observer.Synchronize(observer); @@ -110,7 +117,9 @@ public static IAsyncActionWithProgress ToAsyncActionWithProgress ToAsyncOperation(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return AsyncInfo.Run(ct => source.ToTask(ct)); } @@ -126,7 +135,9 @@ public static IAsyncOperation ToAsyncOperation(this IObservabl public static IAsyncOperationWithProgress ToAsyncOperationWithProgress(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return AsyncInfo.Run((ct, progress) => { @@ -150,9 +161,14 @@ public static IAsyncOperationWithProgress ToAsyncOperationWithProg public static IAsyncOperationWithProgress ToAsyncOperationWithProgress(this IObservable source, Func, IObservable> resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return AsyncInfo.Run((ct, progress) => { @@ -176,11 +192,19 @@ public static IAsyncOperationWithProgress ToAsyncOperationWithProg public static IAsyncOperationWithProgress ToAsyncOperationWithProgress(this IObservable source, Func, IObservable> resultSelector, Func, IObservable> progressSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } + if (progressSelector == null) + { throw new ArgumentNullException(nameof(progressSelector)); + } return AsyncInfo.Run((ct, progress) => { diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/CoreDispatcherObservable.cs b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/CoreDispatcherObservable.cs index 52874ca477..5cdabd3c5f 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/CoreDispatcherObservable.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/CoreDispatcherObservable.cs @@ -28,9 +28,14 @@ public static class DispatcherObservable public static IObservable ObserveOn(this IObservable source, CoreDispatcher dispatcher) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcher == null) + { throw new ArgumentNullException(nameof(dispatcher)); + } return Synchronization.ObserveOn(source, new CoreDispatcherScheduler(dispatcher)); } @@ -47,9 +52,14 @@ public static IObservable ObserveOn(this IObservable public static IObservable ObserveOn(this IObservable source, CoreDispatcher dispatcher, CoreDispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcher == null) + { throw new ArgumentNullException(nameof(dispatcher)); + } return Synchronization.ObserveOn(source, new CoreDispatcherScheduler(dispatcher, priority)); } @@ -65,9 +75,14 @@ public static IObservable ObserveOn(this IObservable public static IObservable ObserveOn(this IObservable source, DependencyObject dependencyObject) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dependencyObject == null) + { throw new ArgumentNullException(nameof(dependencyObject)); + } return Synchronization.ObserveOn(source, new CoreDispatcherScheduler(dependencyObject.Dispatcher)); } @@ -84,9 +99,14 @@ public static IObservable ObserveOn(this IObservable public static IObservable ObserveOn(this IObservable source, DependencyObject dependencyObject, CoreDispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dependencyObject == null) + { throw new ArgumentNullException(nameof(dependencyObject)); + } return Synchronization.ObserveOn(source, new CoreDispatcherScheduler(dependencyObject.Dispatcher, priority)); } @@ -101,7 +121,9 @@ public static IObservable ObserveOn(this IObservable public static IObservable ObserveOnDispatcher(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return Synchronization.ObserveOn(source, CoreDispatcherScheduler.Current); } @@ -117,7 +139,9 @@ public static IObservable ObserveOnDispatcher(this IObservable public static IObservable ObserveOnDispatcher(this IObservable source, CoreDispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return Synchronization.ObserveOn(source, new CoreDispatcherScheduler(CoreDispatcherScheduler.Current.Dispatcher, priority)); } @@ -141,9 +165,14 @@ public static IObservable ObserveOnDispatcher(this IObservable public static IObservable SubscribeOn(this IObservable source, CoreDispatcher dispatcher) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcher == null) + { throw new ArgumentNullException(nameof(dispatcher)); + } return Synchronization.SubscribeOn(source, new CoreDispatcherScheduler(dispatcher)); } @@ -164,9 +193,14 @@ public static IObservable SubscribeOn(this IObservable SubscribeOn(this IObservable source, CoreDispatcher dispatcher, CoreDispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dispatcher == null) + { throw new ArgumentNullException(nameof(dispatcher)); + } return Synchronization.SubscribeOn(source, new CoreDispatcherScheduler(dispatcher, priority)); } @@ -186,9 +220,14 @@ public static IObservable SubscribeOn(this IObservable SubscribeOn(this IObservable source, DependencyObject dependencyObject) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dependencyObject == null) + { throw new ArgumentNullException(nameof(dependencyObject)); + } return Synchronization.SubscribeOn(source, new CoreDispatcherScheduler(dependencyObject.Dispatcher)); } @@ -209,9 +248,14 @@ public static IObservable SubscribeOn(this IObservable SubscribeOn(this IObservable source, DependencyObject dependencyObject, CoreDispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (dependencyObject == null) + { throw new ArgumentNullException(nameof(dependencyObject)); + } return Synchronization.SubscribeOn(source, new CoreDispatcherScheduler(dependencyObject.Dispatcher, priority)); } @@ -230,7 +274,9 @@ public static IObservable SubscribeOn(this IObservable SubscribeOnDispatcher(this IObservable source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return Synchronization.SubscribeOn(source, CoreDispatcherScheduler.Current); } @@ -250,7 +296,9 @@ public static IObservable SubscribeOnDispatcher(this IObservab public static IObservable SubscribeOnDispatcher(this IObservable source, CoreDispatcherPriority priority) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return Synchronization.SubscribeOn(source, new CoreDispatcherScheduler(CoreDispatcherScheduler.Current.Dispatcher, priority)); } diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/WindowsObservable.Events.cs b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/WindowsObservable.Events.cs index 86cf45e2ce..cfdba40cb3 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/WindowsObservable.Events.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/WindowsObservable.Events.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. #if HAS_WINRT -using System.Threading; using Windows.Foundation; namespace System.Reactive.Linq @@ -27,9 +26,14 @@ public static partial class WindowsObservable public static IObservable> FromEventPattern(Action> addHandler, Action> removeHandler) { if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } return Observable.Create>(observer => { @@ -62,11 +66,19 @@ public static IObservable> FromEventPattern> FromEventPattern(Func, TDelegate> conversion, Action addHandler, Action removeHandler) { if (conversion == null) + { throw new ArgumentNullException(nameof(conversion)); + } + if (addHandler == null) + { throw new ArgumentNullException(nameof(addHandler)); + } + if (removeHandler == null) + { throw new ArgumentNullException(nameof(removeHandler)); + } return Observable.Create>(observer => { @@ -95,7 +107,9 @@ public static IObservable> FromEventPattern ToEventPattern(this IObservable> source) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } return new EventPatternSource(source, (h, evt) => h(evt.Sender, evt.EventArgs)); } diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/WindowsObservable.StandardSequenceOperators.cs b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/WindowsObservable.StandardSequenceOperators.cs index 47cb49aeef..4bcf73bbcb 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/WindowsObservable.StandardSequenceOperators.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/UWP/Linq/WindowsObservable.StandardSequenceOperators.cs @@ -4,7 +4,6 @@ #if HAS_WINRT using System.Reactive.Windows.Foundation; -using System.Threading; using Windows.Foundation; namespace System.Reactive.Linq @@ -24,9 +23,14 @@ public static partial class WindowsObservable public static IObservable SelectMany(this IObservable source, Func> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return source.SelectMany(x => selector(x).ToObservable()); } @@ -45,9 +49,14 @@ public static IObservable SelectMany(this IObservable public static IObservable SelectMany(this IObservable source, Func> selector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (selector == null) + { throw new ArgumentNullException(nameof(selector)); + } return source.SelectMany(x => selector(x).ToObservable()); } @@ -67,11 +76,19 @@ public static IObservable SelectMany(this public static IObservable SelectMany(this IObservable source, Func> asyncOperationSelector, Func resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (asyncOperationSelector == null) + { throw new ArgumentNullException(nameof(asyncOperationSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return source.SelectMany(x => asyncOperationSelector(x).ToObservable(), resultSelector); } @@ -92,11 +109,19 @@ public static IObservable SelectMany SelectMany(this IObservable source, Func> asyncOperationSelector, Func resultSelector) { if (source == null) + { throw new ArgumentNullException(nameof(source)); + } + if (asyncOperationSelector == null) + { throw new ArgumentNullException(nameof(asyncOperationSelector)); + } + if (resultSelector == null) + { throw new ArgumentNullException(nameof(resultSelector)); + } return source.SelectMany(x => asyncOperationSelector(x).ToObservable(), resultSelector); } diff --git a/Rx.NET/Source/src/System.Reactive/Platforms/Windows/Strings_WindowsThreading.Designer.cs b/Rx.NET/Source/src/System.Reactive/Platforms/Windows/Strings_WindowsThreading.Designer.cs index 14eea824b6..57ea8c5a88 100644 --- a/Rx.NET/Source/src/System.Reactive/Platforms/Windows/Strings_WindowsThreading.Designer.cs +++ b/Rx.NET/Source/src/System.Reactive/Platforms/Windows/Strings_WindowsThreading.Designer.cs @@ -8,11 +8,11 @@ // //------------------------------------------------------------------------------ -namespace System.Reactive { - using System; +namespace System.Reactive +{ using System.Reflection; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -23,58 +23,70 @@ namespace System.Reactive { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Strings_WindowsThreading { - + internal class Strings_WindowsThreading + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Strings_WindowsThreading() { + internal Strings_WindowsThreading() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("System.Reactive.Platforms.Windows.Strings_WindowsThreading", typeof(Strings_WindowsThreading).GetTypeInfo().Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized string similar to The current thread has no Dispatcher associated with it.. /// - internal static string NO_DISPATCHER_CURRENT_THREAD { - get { + internal static string NO_DISPATCHER_CURRENT_THREAD + { + get + { return ResourceManager.GetString("NO_DISPATCHER_CURRENT_THREAD", resourceCulture); } } - + /// /// Looks up a localized string similar to No current Window object found to obtain a CoreDispatcher from.. /// - internal static string NO_WINDOW_CURRENT { - get { + internal static string NO_WINDOW_CURRENT + { + get + { return ResourceManager.GetString("NO_WINDOW_CURRENT", resourceCulture); } } diff --git a/Rx.NET/Source/src/System.Reactive/Properties/InternalsVisibleTo.cs b/Rx.NET/Source/src/System.Reactive/Properties/InternalsVisibleTo.cs index 7d7282b033..91f20dc360 100644 --- a/Rx.NET/Source/src/System.Reactive/Properties/InternalsVisibleTo.cs +++ b/Rx.NET/Source/src/System.Reactive/Properties/InternalsVisibleTo.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("Tests.System.Reactive, PublicKey=00240000048000009400000006020000002400005253413100040000010001008f5cff058631087031f8350f30a36fa078027e5df2316b564352dc9eb7af7ce856016d3c5e9d058036fe73bb5c83987bd3fc0793fbe25d633cc4f37c2bd5f1d717cd2a81661bec08f0971dc6078e17bde372b89005e7738a0ebd501b896ca3e8315270ff64df7809dd912c372df61785a5085b3553b7872e39b1b1cc0ff5a6bc")] diff --git a/Rx.NET/Source/src/System.Reactive/Runtime/CompilerServices/TaskObservableMethodBuilder.cs b/Rx.NET/Source/src/System.Reactive/Runtime/CompilerServices/TaskObservableMethodBuilder.cs index 26505e4ccd..6141b14a59 100644 --- a/Rx.NET/Source/src/System.Reactive/Runtime/CompilerServices/TaskObservableMethodBuilder.cs +++ b/Rx.NET/Source/src/System.Reactive/Runtime/CompilerServices/TaskObservableMethodBuilder.cs @@ -32,7 +32,7 @@ public struct TaskObservableMethodBuilder /// Creates an instance of the struct. /// /// A new instance of the struct. - public static TaskObservableMethodBuilder Create() => default(TaskObservableMethodBuilder); + public static TaskObservableMethodBuilder Create() => default; /// /// Begins running the builder with the associated state machine. @@ -44,7 +44,9 @@ public void Start(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine { if (stateMachine == null) + { throw new ArgumentNullException(nameof(stateMachine)); + } stateMachine.MoveNext(); } @@ -57,13 +59,12 @@ public void Start(ref TStateMachine stateMachine) /// The state machine was previously set. public void SetStateMachine(IAsyncStateMachine stateMachine) { - if (stateMachine == null) - throw new ArgumentNullException(nameof(stateMachine)); - if (_stateMachine != null) + { throw new InvalidOperationException(); + } - _stateMachine = stateMachine; + _stateMachine = stateMachine ?? throw new ArgumentNullException(nameof(stateMachine)); } /// @@ -92,7 +93,9 @@ public void SetResult(T result) public void SetException(Exception exception) { if (exception == null) + { throw new ArgumentNullException(nameof(exception)); + } if (_inner == null) { @@ -257,7 +260,9 @@ public TaskObservable(Exception exception) public void SetResult(T result) { if (IsCompleted) + { throw new InvalidOperationException(); + } _subject.OnNext(result); _subject.OnCompleted(); @@ -272,7 +277,9 @@ public void SetResult(T result) public void SetException(Exception exception) { if (IsCompleted) + { throw new InvalidOperationException(); + } _subject.OnError(exception); } diff --git a/Rx.NET/Source/src/System.Reactive/Strings_Core.Designer.cs b/Rx.NET/Source/src/System.Reactive/Strings_Core.Designer.cs index 96727a46c1..b619d164c0 100644 --- a/Rx.NET/Source/src/System.Reactive/Strings_Core.Designer.cs +++ b/Rx.NET/Source/src/System.Reactive/Strings_Core.Designer.cs @@ -8,11 +8,11 @@ // //------------------------------------------------------------------------------ -namespace System.Reactive { - using System; +namespace System.Reactive +{ using System.Reflection; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -23,121 +23,147 @@ namespace System.Reactive { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Strings_Core { - + internal class Strings_Core + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Strings_Core() { + internal Strings_Core() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("System.Reactive.Strings_Core", typeof(Strings_Core).GetTypeInfo().Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized string similar to Using the Scheduler.{0} property is no longer supported due to refactoring of the API surface and elimination of platform-specific dependencies. Please include System.Reactive.PlatformServices for your target platform and use the {0}Scheduler type instead. If you're building a Windows Store app, notice some schedulers are no longer supported. Consider using Scheduler.Default instead.. /// - internal static string CANT_OBTAIN_SCHEDULER { - get { + internal static string CANT_OBTAIN_SCHEDULER + { + get + { return ResourceManager.GetString("CANT_OBTAIN_SCHEDULER", resourceCulture); } } - + /// /// Looks up a localized string similar to OnCompleted notification doesn't have a value.. /// - internal static string COMPLETED_NO_VALUE { - get { + internal static string COMPLETED_NO_VALUE + { + get + { return ResourceManager.GetString("COMPLETED_NO_VALUE", resourceCulture); } } - + /// /// Looks up a localized string similar to Disposable has already been assigned.. /// - internal static string DISPOSABLE_ALREADY_ASSIGNED { - get { + internal static string DISPOSABLE_ALREADY_ASSIGNED + { + get + { return ResourceManager.GetString("DISPOSABLE_ALREADY_ASSIGNED", resourceCulture); } } - + /// /// Looks up a localized string similar to Disposables collection can not contain null values.. /// - internal static string DISPOSABLES_CANT_CONTAIN_NULL { - get { + internal static string DISPOSABLES_CANT_CONTAIN_NULL + { + get + { return ResourceManager.GetString("DISPOSABLES_CANT_CONTAIN_NULL", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to start monitoring system clock changes.. /// - internal static string FAILED_CLOCK_MONITORING { - get { + internal static string FAILED_CLOCK_MONITORING + { + get + { return ResourceManager.GetString("FAILED_CLOCK_MONITORING", resourceCulture); } } - + /// /// Looks up a localized string similar to Heap is empty.. /// - internal static string HEAP_EMPTY { - get { + internal static string HEAP_EMPTY + { + get + { return ResourceManager.GetString("HEAP_EMPTY", resourceCulture); } } - + /// /// Looks up a localized string similar to Observer has already terminated.. /// - internal static string OBSERVER_TERMINATED { - get { + internal static string OBSERVER_TERMINATED + { + get + { return ResourceManager.GetString("OBSERVER_TERMINATED", resourceCulture); } } - + /// /// Looks up a localized string similar to Reentrancy has been detected.. /// - internal static string REENTRANCY_DETECTED { - get { + internal static string REENTRANCY_DETECTED + { + get + { return ResourceManager.GetString("REENTRANCY_DETECTED", resourceCulture); } } - + /// /// Looks up a localized string similar to This scheduler operation has already been awaited.. /// - internal static string SCHEDULER_OPERATION_ALREADY_AWAITED { - get { + internal static string SCHEDULER_OPERATION_ALREADY_AWAITED + { + get + { return ResourceManager.GetString("SCHEDULER_OPERATION_ALREADY_AWAITED", resourceCulture); } } diff --git a/Rx.NET/Source/src/System.Reactive/Strings_Linq.Designer.cs b/Rx.NET/Source/src/System.Reactive/Strings_Linq.Designer.cs index 3ba392e68d..8bd0869b2d 100644 --- a/Rx.NET/Source/src/System.Reactive/Strings_Linq.Designer.cs +++ b/Rx.NET/Source/src/System.Reactive/Strings_Linq.Designer.cs @@ -8,11 +8,11 @@ // //------------------------------------------------------------------------------ -namespace System.Reactive { - using System; +namespace System.Reactive +{ using System.Reflection; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -23,184 +23,224 @@ namespace System.Reactive { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Strings_Linq { - + internal class Strings_Linq + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Strings_Linq() { + internal Strings_Linq() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("System.Reactive.Strings_Linq", typeof(Strings_Linq).GetTypeInfo().Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized string similar to {0} cannot be called when the scheduler is already running. Try using Sleep instead.. /// - internal static string CANT_ADVANCE_WHILE_RUNNING { - get { + internal static string CANT_ADVANCE_WHILE_RUNNING + { + get + { return ResourceManager.GetString("CANT_ADVANCE_WHILE_RUNNING", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not find event '{0}' on object of type '{1}'.. /// - internal static string COULD_NOT_FIND_INSTANCE_EVENT { - get { + internal static string COULD_NOT_FIND_INSTANCE_EVENT + { + get + { return ResourceManager.GetString("COULD_NOT_FIND_INSTANCE_EVENT", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not find event '{0}' on type '{1}'.. /// - internal static string COULD_NOT_FIND_STATIC_EVENT { - get { + internal static string COULD_NOT_FIND_STATIC_EVENT + { + get + { return ResourceManager.GetString("COULD_NOT_FIND_STATIC_EVENT", resourceCulture); } } - + /// /// Looks up a localized string similar to Add method should take 1 parameter.. /// - internal static string EVENT_ADD_METHOD_SHOULD_TAKE_ONE_PARAMETER { - get { + internal static string EVENT_ADD_METHOD_SHOULD_TAKE_ONE_PARAMETER + { + get + { return ResourceManager.GetString("EVENT_ADD_METHOD_SHOULD_TAKE_ONE_PARAMETER", resourceCulture); } } - + /// /// Looks up a localized string similar to The second parameter of the event delegate must be assignable to '{0}'.. /// - internal static string EVENT_ARGS_NOT_ASSIGNABLE { - get { + internal static string EVENT_ARGS_NOT_ASSIGNABLE + { + get + { return ResourceManager.GetString("EVENT_ARGS_NOT_ASSIGNABLE", resourceCulture); } } - + /// /// Looks up a localized string similar to Event is missing the add method.. /// - internal static string EVENT_MISSING_ADD_METHOD { - get { + internal static string EVENT_MISSING_ADD_METHOD + { + get + { return ResourceManager.GetString("EVENT_MISSING_ADD_METHOD", resourceCulture); } } - + /// /// Looks up a localized string similar to Event is missing the remove method.. /// - internal static string EVENT_MISSING_REMOVE_METHOD { - get { + internal static string EVENT_MISSING_REMOVE_METHOD + { + get + { return ResourceManager.GetString("EVENT_MISSING_REMOVE_METHOD", resourceCulture); } } - + /// /// Looks up a localized string similar to The event delegate must have a void return type.. /// - internal static string EVENT_MUST_RETURN_VOID { - get { + internal static string EVENT_MUST_RETURN_VOID + { + get + { return ResourceManager.GetString("EVENT_MUST_RETURN_VOID", resourceCulture); } } - + /// /// Looks up a localized string similar to The event delegate must have exactly two parameters.. /// - internal static string EVENT_PATTERN_REQUIRES_TWO_PARAMETERS { - get { + internal static string EVENT_PATTERN_REQUIRES_TWO_PARAMETERS + { + get + { return ResourceManager.GetString("EVENT_PATTERN_REQUIRES_TWO_PARAMETERS", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove method should take 1 parameter.. /// - internal static string EVENT_REMOVE_METHOD_SHOULD_TAKE_ONE_PARAMETER { - get { + internal static string EVENT_REMOVE_METHOD_SHOULD_TAKE_ONE_PARAMETER + { + get + { return ResourceManager.GetString("EVENT_REMOVE_METHOD_SHOULD_TAKE_ONE_PARAMETER", resourceCulture); } } - + /// /// Looks up a localized string similar to The first parameter of the event delegate must be assignable to '{0}'.. /// - internal static string EVENT_SENDER_NOT_ASSIGNABLE { - get { + internal static string EVENT_SENDER_NOT_ASSIGNABLE + { + get + { return ResourceManager.GetString("EVENT_SENDER_NOT_ASSIGNABLE", resourceCulture); } } - + /// /// Looks up a localized string similar to Remove method of a WinRT event should take an EventRegistrationToken.. /// - internal static string EVENT_WINRT_REMOVE_METHOD_SHOULD_TAKE_ERT { - get { + internal static string EVENT_WINRT_REMOVE_METHOD_SHOULD_TAKE_ERT + { + get + { return ResourceManager.GetString("EVENT_WINRT_REMOVE_METHOD_SHOULD_TAKE_ERT", resourceCulture); } } - + /// /// Looks up a localized string similar to Sequence contains more than one element.. /// - internal static string MORE_THAN_ONE_ELEMENT { - get { + internal static string MORE_THAN_ONE_ELEMENT + { + get + { return ResourceManager.GetString("MORE_THAN_ONE_ELEMENT", resourceCulture); } } - + /// /// Looks up a localized string similar to Sequence contains more than one matching element.. /// - internal static string MORE_THAN_ONE_MATCHING_ELEMENT { - get { + internal static string MORE_THAN_ONE_MATCHING_ELEMENT + { + get + { return ResourceManager.GetString("MORE_THAN_ONE_MATCHING_ELEMENT", resourceCulture); } } - + /// /// Looks up a localized string similar to Sequence contains no elements.. /// - internal static string NO_ELEMENTS { - get { + internal static string NO_ELEMENTS + { + get + { return ResourceManager.GetString("NO_ELEMENTS", resourceCulture); } } - + /// /// Looks up a localized string similar to Sequence contains no matching element.. /// - internal static string NO_MATCHING_ELEMENTS { - get { + internal static string NO_MATCHING_ELEMENTS + { + get + { return ResourceManager.GetString("NO_MATCHING_ELEMENTS", resourceCulture); } } diff --git a/Rx.NET/Source/src/System.Reactive/Strings_PlatformServices.Designer.cs b/Rx.NET/Source/src/System.Reactive/Strings_PlatformServices.Designer.cs index ad923c4bbd..a8f6c5a1ad 100644 --- a/Rx.NET/Source/src/System.Reactive/Strings_PlatformServices.Designer.cs +++ b/Rx.NET/Source/src/System.Reactive/Strings_PlatformServices.Designer.cs @@ -8,11 +8,11 @@ // //------------------------------------------------------------------------------ -namespace System.Reactive { - using System; +namespace System.Reactive +{ using System.Reflection; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -23,49 +23,59 @@ namespace System.Reactive { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Strings_PlatformServices { - + internal class Strings_PlatformServices + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Strings_PlatformServices() { + internal Strings_PlatformServices() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("System.Reactive.Strings_PlatformServices", typeof(Strings_PlatformServices).GetTypeInfo().Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized string similar to The WinRT thread pool doesn't support creating periodic timers with a period below 1 millisecond.. /// - internal static string WINRT_NO_SUB1MS_TIMERS { - get { + internal static string WINRT_NO_SUB1MS_TIMERS + { + get + { return ResourceManager.GetString("WINRT_NO_SUB1MS_TIMERS", resourceCulture); } } diff --git a/Rx.NET/Source/src/System.Reactive/Strings_Providers.Designer.cs b/Rx.NET/Source/src/System.Reactive/Strings_Providers.Designer.cs index 24bc2b462c..b6634f1790 100644 --- a/Rx.NET/Source/src/System.Reactive/Strings_Providers.Designer.cs +++ b/Rx.NET/Source/src/System.Reactive/Strings_Providers.Designer.cs @@ -8,11 +8,11 @@ // //------------------------------------------------------------------------------ -namespace System.Reactive { - using System; +namespace System.Reactive +{ using System.Reflection; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -23,67 +23,81 @@ namespace System.Reactive { [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Strings_Providers { - + internal class Strings_Providers + { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Strings_Providers() { + internal Strings_Providers() + { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("System.Reactive.Strings_Providers", typeof(Strings_Providers).GetTypeInfo().Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { + internal static global::System.Globalization.CultureInfo Culture + { + get + { return resourceCulture; } - set { + set + { resourceCulture = value; } } - + /// /// Looks up a localized string similar to Expected Qbservable.ToQueryable.. /// - internal static string EXPECTED_TOQUERYABLE_METHODCALL { - get { + internal static string EXPECTED_TOQUERYABLE_METHODCALL + { + get + { return ResourceManager.GetString("EXPECTED_TOQUERYABLE_METHODCALL", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid expression tree type.. /// - internal static string INVALID_TREE_TYPE { - get { + internal static string INVALID_TREE_TYPE + { + get + { return ResourceManager.GetString("INVALID_TREE_TYPE", resourceCulture); } } - + /// /// Looks up a localized string similar to There is no method '{0}' on type '{1}' that matches the specified arguments.. /// - internal static string NO_MATCHING_METHOD_FOUND { - get { + internal static string NO_MATCHING_METHOD_FOUND + { + get + { return ResourceManager.GetString("NO_MATCHING_METHOD_FOUND", resourceCulture); } } diff --git a/Rx.NET/Source/src/System.Reactive/Subjects/AsyncSubject.cs b/Rx.NET/Source/src/System.Reactive/Subjects/AsyncSubject.cs index 94c0a94101..8f973a6eea 100644 --- a/Rx.NET/Source/src/System.Reactive/Subjects/AsyncSubject.cs +++ b/Rx.NET/Source/src/System.Reactive/Subjects/AsyncSubject.cs @@ -3,8 +3,8 @@ // See the LICENSE file in the project root for more information. using System.Reactive.Disposables; -using System.Threading; using System.Runtime.CompilerServices; +using System.Threading; namespace System.Reactive.Subjects { @@ -18,7 +18,6 @@ public sealed class AsyncSubject : SubjectBase, IDisposable, INotifyComple #region Fields private AsyncSubjectDisposable[] _observers; - private T _value; private bool _hasValue; private Exception _exception; @@ -26,17 +25,17 @@ public sealed class AsyncSubject : SubjectBase, IDisposable, INotifyComple /// /// A pre-allocated empty array for the no-observers state. /// - static readonly AsyncSubjectDisposable[] EMPTY = new AsyncSubjectDisposable[0]; + private static readonly AsyncSubjectDisposable[] EMPTY = new AsyncSubjectDisposable[0]; /// /// A pre-allocated empty array indicating the AsyncSubject has terminated /// - static readonly AsyncSubjectDisposable[] TERMINATED = new AsyncSubjectDisposable[0]; + private static readonly AsyncSubjectDisposable[] TERMINATED = new AsyncSubjectDisposable[0]; /// /// A pre-allocated empty array indicating the AsyncSubject has terminated /// - static readonly AsyncSubjectDisposable[] DISPOSED = new AsyncSubjectDisposable[0]; + private static readonly AsyncSubjectDisposable[] DISPOSED = new AsyncSubjectDisposable[0]; #endregion @@ -126,7 +125,9 @@ public override void OnCompleted() public override void OnError(Exception error) { if (error == null) + { throw new ArgumentNullException(nameof(error)); + } for (; ; ) { @@ -134,7 +135,7 @@ public override void OnError(Exception error) if (observers == DISPOSED) { _exception = null; - _value = default(T); + _value = default; ThrowDisposed(); break; } @@ -167,7 +168,7 @@ public override void OnNext(T value) var observers = Volatile.Read(ref _observers); if (observers == DISPOSED) { - _value = default(T); + _value = default; _exception = null; ThrowDisposed(); return; @@ -194,7 +195,9 @@ public override void OnNext(T value) public override IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } var parent = new AsyncSubjectDisposable(this, observer); @@ -219,14 +222,14 @@ public override IDisposable Subscribe(IObserver observer) return parent; } - bool Add(AsyncSubjectDisposable inner) + private bool Add(AsyncSubjectDisposable inner) { for (; ; ) { var a = Volatile.Read(ref _observers); if (a == DISPOSED) { - _value = default(T); + _value = default; _exception = null; ThrowDisposed(); return true; @@ -248,7 +251,7 @@ bool Add(AsyncSubjectDisposable inner) } } - void Remove(AsyncSubjectDisposable inner) + private void Remove(AsyncSubjectDisposable inner) { for (; ; ) { @@ -299,11 +302,10 @@ void Remove(AsyncSubjectDisposable inner) /// /// A disposable connecting the AsyncSubject and an IObserver. /// - sealed class AsyncSubjectDisposable : IDisposable + private sealed class AsyncSubjectDisposable : IDisposable { internal readonly IObserver downstream; - - AsyncSubject parent; + private AsyncSubject parent; public AsyncSubjectDisposable(AsyncSubject parent, IObserver downstream) { @@ -326,7 +328,7 @@ internal bool IsDisposed() #region IDisposable implementation - void ThrowDisposed() + private void ThrowDisposed() { throw new ObjectDisposedException(string.Empty); } @@ -339,7 +341,7 @@ public override void Dispose() if (Interlocked.Exchange(ref _observers, DISPOSED) != DISPOSED) { _exception = null; - _value = default(T); + _value = default; _hasValue = false; } } @@ -362,7 +364,9 @@ public override void Dispose() public void OnCompleted(Action continuation) { if (continuation == null) + { throw new ArgumentNullException(nameof(continuation)); + } OnCompleted(continuation, originalContext: true); } @@ -383,7 +387,9 @@ private sealed class AwaitObserver : IObserver public AwaitObserver(Action callback, bool originalContext) { if (originalContext) + { _context = SynchronizationContext.Current; + } _callback = callback; } @@ -437,7 +443,9 @@ public T GetResult() _exception.ThrowIfNotNull(); if (!_hasValue) + { throw new InvalidOperationException(Strings_Linq.NO_ELEMENTS); + } return _value; } diff --git a/Rx.NET/Source/src/System.Reactive/Subjects/BehaviorSubject.cs b/Rx.NET/Source/src/System.Reactive/Subjects/BehaviorSubject.cs index a1960f4d0a..5ccfd4f58b 100644 --- a/Rx.NET/Source/src/System.Reactive/Subjects/BehaviorSubject.cs +++ b/Rx.NET/Source/src/System.Reactive/Subjects/BehaviorSubject.cs @@ -115,7 +115,7 @@ public bool TryGetValue(out T value) { if (_isDisposed) { - value = default(T); + value = default; return false; } else if (_exception != null) @@ -167,7 +167,9 @@ public override void OnCompleted() public override void OnError(Exception error) { if (error == null) + { throw new ArgumentNullException(nameof(error)); + } var os = default(IObserver[]); lock (_gate) @@ -232,7 +234,9 @@ public override void OnNext(T value) public override IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } var ex = default(Exception); @@ -275,7 +279,7 @@ public override void Dispose() { _isDisposed = true; _observers = null; - _value = default(T); + _value = default; _exception = null; } } @@ -283,7 +287,9 @@ public override void Dispose() private void CheckDisposed() { if (_isDisposed) + { throw new ObjectDisposedException(string.Empty); + } } #endregion diff --git a/Rx.NET/Source/src/System.Reactive/Subjects/ConnectableObservable.cs b/Rx.NET/Source/src/System.Reactive/Subjects/ConnectableObservable.cs index ddf7ad7c71..090fcde730 100644 --- a/Rx.NET/Source/src/System.Reactive/Subjects/ConnectableObservable.cs +++ b/Rx.NET/Source/src/System.Reactive/Subjects/ConnectableObservable.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Reactive.Disposables; using System.Reactive.Linq; namespace System.Reactive.Subjects @@ -84,7 +83,9 @@ public void Dispose() public IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return _subject.SubscribeSafe(observer); } diff --git a/Rx.NET/Source/src/System.Reactive/Subjects/ReplaySubject.cs b/Rx.NET/Source/src/System.Reactive/Subjects/ReplaySubject.cs index 88a5ee9768..150447dfa7 100644 --- a/Rx.NET/Source/src/System.Reactive/Subjects/ReplaySubject.cs +++ b/Rx.NET/Source/src/System.Reactive/Subjects/ReplaySubject.cs @@ -174,7 +174,9 @@ public ReplaySubject(int bufferSize, TimeSpan window, IScheduler scheduler) public override void OnError(Exception error) { if (error == null) + { throw new ArgumentNullException(nameof(error)); + } _implementation.OnError(error); } @@ -197,7 +199,9 @@ public override void OnError(Exception error) public override IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } return _implementation.Subscribe(observer); } @@ -419,7 +423,9 @@ public override void Dispose() private void CheckDisposed() { if (_isDisposed) + { throw new ObjectDisposedException(string.Empty); + } } private void Unsubscribe(IScheduledObserver observer) @@ -469,15 +475,18 @@ private sealed class ReplayByTime : ReplayBase public ReplayByTime(int bufferSize, TimeSpan window, IScheduler scheduler) { if (bufferSize < 0) + { throw new ArgumentOutOfRangeException(nameof(bufferSize)); + } + if (window < TimeSpan.Zero) + { throw new ArgumentOutOfRangeException(nameof(window)); - if (scheduler == null) - throw new ArgumentNullException(nameof(scheduler)); + } _bufferSize = bufferSize; _window = window; - _scheduler = scheduler; + _scheduler = scheduler ?? throw new ArgumentNullException(nameof(scheduler)); _stopwatch = _scheduler.StartStopwatch(); _queue = new Queue>(); @@ -592,7 +601,7 @@ protected override int Replay(IObserver observer) protected override void DisposeCore() { - _value = default(T); + _value = default; } } diff --git a/Rx.NET/Source/src/System.Reactive/Subjects/Subject.Extensions.cs b/Rx.NET/Source/src/System.Reactive/Subjects/Subject.Extensions.cs index e11d4749b0..43da4cd37a 100644 --- a/Rx.NET/Source/src/System.Reactive/Subjects/Subject.Extensions.cs +++ b/Rx.NET/Source/src/System.Reactive/Subjects/Subject.Extensions.cs @@ -24,9 +24,14 @@ public static class Subject public static ISubject Create(IObserver observer, IObservable observable) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } + if (observable == null) + { throw new ArgumentNullException(nameof(observable)); + } return new AnonymousSubject(observer, observable); } @@ -42,9 +47,14 @@ public static ISubject Create(IObserver Create(IObserver observer, IObservable observable) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } + if (observable == null) + { throw new ArgumentNullException(nameof(observable)); + } return new AnonymousSubject(observer, observable); } @@ -60,7 +70,9 @@ public static ISubject Create(IObserver observer, IObservable observ public static ISubject Synchronize(ISubject subject) { if (subject == null) + { throw new ArgumentNullException(nameof(subject)); + } return new AnonymousSubject(Observer.Synchronize(subject), subject); } @@ -75,7 +87,9 @@ public static ISubject Synchronize(ISubject< public static ISubject Synchronize(ISubject subject) { if (subject == null) + { throw new ArgumentNullException(nameof(subject)); + } return new AnonymousSubject(Observer.Synchronize(subject), subject); } @@ -92,9 +106,14 @@ public static ISubject Synchronize(ISubject subject) public static ISubject Synchronize(ISubject subject, IScheduler scheduler) { if (subject == null) + { throw new ArgumentNullException(nameof(subject)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new AnonymousSubject(Observer.Synchronize(subject), subject.ObserveOn(scheduler)); } @@ -110,9 +129,14 @@ public static ISubject Synchronize(ISubject< public static ISubject Synchronize(ISubject subject, IScheduler scheduler) { if (subject == null) + { throw new ArgumentNullException(nameof(subject)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return new AnonymousSubject(Observer.Synchronize(subject), subject.ObserveOn(scheduler)); } @@ -133,7 +157,9 @@ public AnonymousSubject(IObserver observer, IObservable observable) public void OnError(Exception error) { if (error == null) + { throw new ArgumentNullException(nameof(error)); + } _observer.OnError(error); } @@ -143,7 +169,9 @@ public void OnError(Exception error) public IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } // // [OK] Use of unsafe Subscribe: non-pretentious wrapping of an observable sequence. diff --git a/Rx.NET/Source/src/System.Reactive/Subjects/Subject.cs b/Rx.NET/Source/src/System.Reactive/Subjects/Subject.cs index 1a7251cca3..758912260f 100644 --- a/Rx.NET/Source/src/System.Reactive/Subjects/Subject.cs +++ b/Rx.NET/Source/src/System.Reactive/Subjects/Subject.cs @@ -16,15 +16,11 @@ public sealed class Subject : SubjectBase, IDisposable { #region Fields - SubjectDisposable[] _observers; - - Exception _exception; - - static readonly SubjectDisposable[] EMPTY = new SubjectDisposable[0]; - - static readonly SubjectDisposable[] TERMINATED = new SubjectDisposable[0]; - - static readonly SubjectDisposable[] DISPOSED = new SubjectDisposable[0]; + private SubjectDisposable[] _observers; + private Exception _exception; + private static readonly SubjectDisposable[] EMPTY = new SubjectDisposable[0]; + private static readonly SubjectDisposable[] TERMINATED = new SubjectDisposable[0]; + private static readonly SubjectDisposable[] DISPOSED = new SubjectDisposable[0]; #endregion @@ -64,7 +60,7 @@ public override bool HasObservers #region IObserver implementation - void ThrowDisposed() + private void ThrowDisposed() { throw new ObjectDisposedException(string.Empty); } @@ -106,7 +102,9 @@ public override void OnCompleted() public override void OnError(Exception error) { if (error == null) + { throw new ArgumentNullException(nameof(error)); + } for (; ; ) { @@ -165,7 +163,9 @@ public override void OnNext(T value) public override IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } var disposable = default(SubjectDisposable); for (; ; ) @@ -208,7 +208,7 @@ public override IDisposable Subscribe(IObserver observer) return Disposable.Empty; } - void Unsubscribe(SubjectDisposable observer) + private void Unsubscribe(SubjectDisposable observer) { for (; ; ) { @@ -259,7 +259,9 @@ public void Dispose() { var observer = Interlocked.Exchange(ref _observer, null); if (observer == null) + { return; + } _subject.Unsubscribe(this); _subject = null; diff --git a/Rx.NET/Source/src/System.Reactive/System.Reactive.csproj b/Rx.NET/Source/src/System.Reactive/System.Reactive.csproj index b9ca9f9b30..6f5b4ba1fe 100644 --- a/Rx.NET/Source/src/System.Reactive/System.Reactive.csproj +++ b/Rx.NET/Source/src/System.Reactive/System.Reactive.csproj @@ -4,7 +4,6 @@ false Rx;Reactive;Extensions;Observable;LINQ;Events Reactive Extensions (Rx) for .NET - 7.1 diff --git a/Rx.NET/Source/src/System.Reactive/Threading/Tasks/NamespaceDoc.cs b/Rx.NET/Source/src/System.Reactive/Threading/Tasks/NamespaceDoc.cs index 5edc70308e..2985d8c303 100644 --- a/Rx.NET/Source/src/System.Reactive/Threading/Tasks/NamespaceDoc.cs +++ b/Rx.NET/Source/src/System.Reactive/Threading/Tasks/NamespaceDoc.cs @@ -8,7 +8,7 @@ namespace System.Reactive.Threading.Tasks /// The System.Reactive.Threading.Tasks namespace contains helpers for the conversion between tasks and observable sequences. /// [Runtime.CompilerServices.CompilerGenerated] - class NamespaceDoc + internal class NamespaceDoc { } } diff --git a/Rx.NET/Source/src/System.Reactive/Threading/Tasks/TaskObservableExtensions.cs b/Rx.NET/Source/src/System.Reactive/Threading/Tasks/TaskObservableExtensions.cs index a231699441..7ea48a023b 100644 --- a/Rx.NET/Source/src/System.Reactive/Threading/Tasks/TaskObservableExtensions.cs +++ b/Rx.NET/Source/src/System.Reactive/Threading/Tasks/TaskObservableExtensions.cs @@ -2,13 +2,12 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Reactive.Disposables; -using System.Threading.Tasks; -using System.Threading; -using System.Reactive.Linq; -using System.Reactive.Subjects; using System.Reactive.Concurrency; +using System.Reactive.Linq; using System.Reactive.Linq.ObservableImpl; +using System.Reactive.Subjects; +using System.Threading; +using System.Threading.Tasks; namespace System.Reactive.Threading.Tasks { @@ -27,7 +26,9 @@ public static class TaskObservableExtensions public static IObservable ToObservable(this Task task) { if (task == null) + { throw new ArgumentNullException(nameof(task)); + } return ToObservableImpl(task, scheduler: null); } @@ -43,9 +44,14 @@ public static IObservable ToObservable(this Task task) public static IObservable ToObservable(this Task task, IScheduler scheduler) { if (task == null) + { throw new ArgumentNullException(nameof(task)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return ToObservableImpl(task, scheduler); } @@ -121,7 +127,9 @@ private static void ToObservableDone(Task task, IObserver subject) public static IObservable ToObservable(this Task task) { if (task == null) + { throw new ArgumentNullException(nameof(task)); + } return ToObservableImpl(task, scheduler: null); } @@ -138,9 +146,14 @@ public static IObservable ToObservable(this Task task public static IObservable ToObservable(this Task task, IScheduler scheduler) { if (task == null) + { throw new ArgumentNullException(nameof(task)); + } + if (scheduler == null) + { throw new ArgumentNullException(nameof(scheduler)); + } return ToObservableImpl(task, scheduler); } @@ -249,7 +262,9 @@ private static IObservable ToObservableResult(AsyncSubject ToTask(this IObservable observable) { if (observable == null) + { throw new ArgumentNullException(nameof(observable)); + } return observable.ToTask(new CancellationToken(), state: null); } @@ -265,7 +280,9 @@ public static Task ToTask(this IObservable observable public static Task ToTask(this IObservable observable, object state) { if (observable == null) + { throw new ArgumentNullException(nameof(observable)); + } return observable.ToTask(new CancellationToken(), state); } @@ -281,7 +298,9 @@ public static Task ToTask(this IObservable observable public static Task ToTask(this IObservable observable, CancellationToken cancellationToken) { if (observable == null) + { throw new ArgumentNullException(nameof(observable)); + } return observable.ToTask(cancellationToken, state: null); } @@ -290,7 +309,7 @@ private sealed class ToTaskObserver : SafeObserver { private readonly CancellationToken _ct; private readonly TaskCompletionSource _tcs; - private readonly CancellationTokenRegistration _ctr = default(CancellationTokenRegistration); + private readonly CancellationTokenRegistration _ctr = default; private bool _hasValue; private TResult _lastValue; @@ -358,7 +377,9 @@ private void Cancel() public static Task ToTask(this IObservable observable, CancellationToken cancellationToken, object state) { if (observable == null) + { throw new ArgumentNullException(nameof(observable)); + } var tcs = new TaskCompletionSource(state); diff --git a/Rx.NET/Source/src/System.Reactive/TimeInterval.cs b/Rx.NET/Source/src/System.Reactive/TimeInterval.cs index 33dfd19e0e..4029b31632 100644 --- a/Rx.NET/Source/src/System.Reactive/TimeInterval.cs +++ b/Rx.NET/Source/src/System.Reactive/TimeInterval.cs @@ -78,7 +78,9 @@ public bool Equals(TimeInterval other) public override bool Equals(object obj) { if (!(obj is TimeInterval)) + { return false; + } var other = (TimeInterval)obj; return Equals(other); diff --git a/Rx.NET/Source/src/System.Reactive/Timestamped.cs b/Rx.NET/Source/src/System.Reactive/Timestamped.cs index 3e2b773ade..3435c733a0 100644 --- a/Rx.NET/Source/src/System.Reactive/Timestamped.cs +++ b/Rx.NET/Source/src/System.Reactive/Timestamped.cs @@ -79,7 +79,9 @@ public bool Equals(Timestamped other) public override bool Equals(object obj) { if (!(obj is Timestamped)) + { return false; + } var other = (Timestamped)obj; return Equals(other); diff --git a/Rx.NET/Source/src/System.Reactive/Unit.cs b/Rx.NET/Source/src/System.Reactive/Unit.cs index b18a67f055..5b5049f580 100644 --- a/Rx.NET/Source/src/System.Reactive/Unit.cs +++ b/Rx.NET/Source/src/System.Reactive/Unit.cs @@ -59,6 +59,6 @@ public struct Unit : IEquatable /// /// Gets the single value. /// - public static Unit Default => default(Unit); + public static Unit Default => default; } } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.Aliases.approved.txt b/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.Aliases.approved.txt index 3152b680da..e4edc0a16a 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.Aliases.approved.txt +++ b/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.Aliases.approved.txt @@ -2,7 +2,6 @@ [assembly: System.Resources.NeutralResourcesLanguageAttribute("en-US")] [assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)] [assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6", FrameworkDisplayName=".NET Framework 4.6")] -[assembly: System.Security.AllowPartiallyTrustedCallersAttribute()] namespace System.Reactive.Linq { [System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute()] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.Core.approved.txt b/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.Core.approved.txt index a4016d0d9f..d019b166f5 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.Core.approved.txt +++ b/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.Core.approved.txt @@ -4,7 +4,6 @@ [assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute(@"Tests.System.Reactive.Uwp.DeviceRunner, PublicKey=00240000048000009400000006020000002400005253413100040000010001008f5cff058631087031f8350f30a36fa078027e5df2316b564352dc9eb7af7ce856016d3c5e9d058036fe73bb5c83987bd3fc0793fbe25d633cc4f37c2bd5f1d717cd2a81661bec08f0971dc6078e17bde372b89005e7738a0ebd501b896ca3e8315270ff64df7809dd912c372df61785a5085b3553b7872e39b1b1cc0ff5a6bc")] [assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)] [assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6", FrameworkDisplayName=".NET Framework 4.6")] -[assembly: System.Security.AllowPartiallyTrustedCallersAttribute()] namespace System { public class static ObservableExtensions diff --git a/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.cs b/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.cs index 3d2df5f294..540a8b7339 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.cs @@ -47,13 +47,13 @@ public void Testing() Approvals.Verify(publicApi); } - string GeneratePublicApi(Assembly assembly) + private string GeneratePublicApi(Assembly assembly) { var namespacePrefixWhitelist = new[] { "System", "Microsoft" }; return Filter(ApiGenerator.GeneratePublicApi(assembly, whitelistedNamespacePrefixes: namespacePrefixWhitelist)); } - static string Filter(string text) + private static string Filter(string text) { return string.Join(Environment.NewLine, text.Split(new[] { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive.Uwp.DeviceRunner/App.xaml.cs b/Rx.NET/Source/tests/Tests.System.Reactive.Uwp.DeviceRunner/App.xaml.cs index ae5470566b..1134399693 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive.Uwp.DeviceRunner/App.xaml.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive.Uwp.DeviceRunner/App.xaml.cs @@ -3,7 +3,7 @@ namespace Tests.Reactive.Uwp.DeviceRunner { - sealed partial class App : RunnerApplication + public sealed partial class App : RunnerApplication { protected override void OnInitializeRunner() { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/DispatcherHelpers.cs b/Rx.NET/Source/tests/Tests.System.Reactive/DispatcherHelpers.cs index af909c226e..1dad8a61e4 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/DispatcherHelpers.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/DispatcherHelpers.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; #if NETCOREAPP1_1 || NET46 || NETCOREAPP1_0 using System.Threading; #endif diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyDisposable.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyDisposable.cs index 0411e9a72a..711da3ddc5 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyDisposable.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyDisposable.cs @@ -6,7 +6,7 @@ namespace ReactiveTests.Dummies { - class DummyDisposable : IDisposable + internal class DummyDisposable : IDisposable { public static readonly DummyDisposable Instance = new DummyDisposable(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyEnumerable.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyEnumerable.cs index ef98a4b964..97d0e182d4 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyEnumerable.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyEnumerable.cs @@ -7,7 +7,7 @@ namespace ReactiveTests.Dummies { - class DummyEnumerable : IEnumerable + internal class DummyEnumerable : IEnumerable { public static readonly DummyEnumerable Instance = new DummyEnumerable(); @@ -26,7 +26,7 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() } } - class NullEnumeratorEnumerable : IEnumerable + internal class NullEnumeratorEnumerable : IEnumerable { public static readonly NullEnumeratorEnumerable Instance = new NullEnumeratorEnumerable(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyFunc.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyFunc.cs index f595800705..e65a7f5a00 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyFunc.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyFunc.cs @@ -6,42 +6,42 @@ namespace ReactiveTests.Dummies { - static class DummyFunc + internal static class DummyFunc { public static readonly Func Instance = () => { throw new NotImplementedException(); }; } - static class DummyFunc + internal static class DummyFunc { public static readonly Func Instance = t => { throw new NotImplementedException(); }; } - static class DummyFunc + internal static class DummyFunc { public static readonly Func Instance = (t, u) => { throw new NotImplementedException(); }; } - static class DummyFunc + internal static class DummyFunc { public static readonly Func Instance = (t, u, v) => { throw new NotImplementedException(); }; } - static class DummyFunc + internal static class DummyFunc { public static readonly Func Instance = (t, u, v, w) => { throw new NotImplementedException(); }; } - static class DummyAction + internal static class DummyAction { public static readonly Action Instance = () => { throw new NotImplementedException(); }; } - static class DummyAction + internal static class DummyAction { public static readonly Action Instance = t => { throw new NotImplementedException(); }; } - static class DummyAction + internal static class DummyAction { public static readonly Action Instance = (t, u) => { throw new NotImplementedException(); }; } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyObservable.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyObservable.cs index e088d4f5de..5687ebbada 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyObservable.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyObservable.cs @@ -6,11 +6,11 @@ namespace ReactiveTests.Dummies { - class DummyObservable : IObservable + internal class DummyObservable : IObservable { public static readonly DummyObservable Instance = new DummyObservable(); - DummyObservable() + private DummyObservable() { } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyObserver.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyObserver.cs index 68589439ae..d9195db7ce 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyObserver.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyObserver.cs @@ -6,11 +6,11 @@ namespace ReactiveTests.Dummies { - class DummyObserver : IObserver + internal class DummyObserver : IObserver { public static readonly DummyObserver Instance = new DummyObserver(); - DummyObserver() + private DummyObserver() { } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyScheduler.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyScheduler.cs index d33113a6f5..438f4138a9 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyScheduler.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Dummies/DummyScheduler.cs @@ -7,11 +7,11 @@ namespace ReactiveTests.Dummies { - class DummyScheduler : IScheduler + internal class DummyScheduler : IScheduler { public static readonly DummyScheduler Instance = new DummyScheduler(); - DummyScheduler() + private DummyScheduler() { } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Extensions.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Extensions.cs index b7b1d26f9f..1b74f7ee3f 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Extensions.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Extensions.cs @@ -5,8 +5,6 @@ using System; using System.Collections.Generic; using System.Reactive.Concurrency; -using System.Reactive.Disposables; -using Microsoft.Reactive.Testing; namespace ReactiveTests { @@ -25,17 +23,25 @@ public static class Extensions public static void EnsureTrampoline(this CurrentThreadScheduler scheduler, Action action) { if (scheduler.ScheduleRequired) + { scheduler.Schedule(action); + } else + { action(); + } } public static IEnumerable Zip(this IEnumerable source1, IEnumerable source2, Func f) { using (var e1 = source1.GetEnumerator()) using (var e2 = source2.GetEnumerator()) + { while (e1.MoveNext() && e2.MoveNext()) + { yield return f(e1.Current, e2.Current); + } + } } } } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/MockDisposable.cs b/Rx.NET/Source/tests/Tests.System.Reactive/MockDisposable.cs index adbe40a11d..2139d755b8 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/MockDisposable.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/MockDisposable.cs @@ -4,22 +4,17 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using Microsoft.Reactive.Testing; namespace ReactiveTests { public class MockDisposable : List, IDisposable { - TestScheduler scheduler; + private TestScheduler scheduler; public MockDisposable(TestScheduler scheduler) { - if (scheduler == null) - throw new ArgumentNullException(nameof(scheduler)); - - this.scheduler = scheduler; + this.scheduler = scheduler ?? throw new ArgumentNullException(nameof(scheduler)); Add(scheduler.Clock); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/MockEnumerable.cs b/Rx.NET/Source/tests/Tests.System.Reactive/MockEnumerable.cs index 037141f6bd..7f5fd2203f 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/MockEnumerable.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/MockEnumerable.cs @@ -2,10 +2,9 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; -using System.Reactive.Concurrency; using Microsoft.Reactive.Testing; -using System; namespace ReactiveTests { @@ -13,18 +12,12 @@ public class MockEnumerable : IEnumerable { public readonly TestScheduler Scheduler; public readonly List Subscriptions = new List(); - - IEnumerable underlyingEnumerable; + private IEnumerable underlyingEnumerable; public MockEnumerable(TestScheduler scheduler, IEnumerable underlyingEnumerable) { - if (scheduler == null) - throw new ArgumentNullException(nameof(scheduler)); - if (underlyingEnumerable == null) - throw new ArgumentNullException(nameof(underlyingEnumerable)); - - Scheduler = scheduler; - this.underlyingEnumerable = underlyingEnumerable; + Scheduler = scheduler ?? throw new ArgumentNullException(nameof(scheduler)); + this.underlyingEnumerable = underlyingEnumerable ?? throw new ArgumentNullException(nameof(underlyingEnumerable)); } public IEnumerator GetEnumerator() @@ -37,13 +30,13 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() return GetEnumerator(); } - class MockEnumerator : IEnumerator + private class MockEnumerator : IEnumerator { - List subscriptions; - IEnumerator enumerator; - TestScheduler scheduler; - int index; - bool disposed = false; + private readonly List subscriptions; + private IEnumerator enumerator; + private TestScheduler scheduler; + private readonly int index; + private bool disposed = false; public MockEnumerator(TestScheduler scheduler, List subscriptions, IEnumerator enumerator) { @@ -60,7 +53,10 @@ public T Current get { if (disposed) + { throw new ObjectDisposedException("this"); + } + return enumerator.Current; } } @@ -83,14 +79,20 @@ object System.Collections.IEnumerator.Current public bool MoveNext() { if (disposed) + { throw new ObjectDisposedException("this"); + } + return enumerator.MoveNext(); } public void Reset() { if (disposed) + { throw new ObjectDisposedException("this"); + } + enumerator.Reset(); } } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/NullErrorObservable.cs b/Rx.NET/Source/tests/Tests.System.Reactive/NullErrorObservable.cs index be10452b54..91ac5a03c3 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/NullErrorObservable.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/NullErrorObservable.cs @@ -2,8 +2,8 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Reactive.Disposables; using System; +using System.Reactive.Disposables; namespace ReactiveTests { @@ -18,7 +18,9 @@ private NullErrorObservable() public IDisposable Subscribe(IObserver observer) { if (observer == null) + { throw new ArgumentNullException(nameof(observer)); + } observer.OnError(null); return Disposable.Empty; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Stress/Linq/Delay.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Stress/Linq/Delay.cs index 1667ab2926..4aaec3d5ca 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Stress/Linq/Delay.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Stress/Linq/Delay.cs @@ -56,7 +56,9 @@ public static void OnNextMessages() { var n = Observable.Range(0, N, NewThreadScheduler.Default).Delay(TimeSpan.FromMilliseconds(d), NewThreadScheduler.Default).Count().Wait(); if (n != N) + { throw new InvalidOperationException("Lost OnNext message!"); + } Debug.Write("."); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/TestLongRunningScheduler.cs b/Rx.NET/Source/tests/Tests.System.Reactive/TestLongRunningScheduler.cs index ea57fbcf47..e635067469 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/TestLongRunningScheduler.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/TestLongRunningScheduler.cs @@ -10,11 +10,11 @@ namespace ReactiveTests { - class TestLongRunningScheduler : IScheduler, ISchedulerLongRunning, IServiceProvider + internal class TestLongRunningScheduler : IScheduler, ISchedulerLongRunning, IServiceProvider { - private Action _setStart; - private Action _setEnd; - private Action _setException; + private readonly Action _setStart; + private readonly Action _setEnd; + private readonly Action _setException; public TestLongRunningScheduler(Action setStart, Action setEnd) : this(setStart, setEnd, null) @@ -68,7 +68,9 @@ public IDisposable ScheduleLongRunning(TState state, Action(TState state, Action(() => new AnonymousObserver(default(Action))); + ReactiveAssert.Throws(() => new AnonymousObserver(default)); - ReactiveAssert.Throws(() => new AnonymousObserver(default(Action), () => { })); + ReactiveAssert.Throws(() => new AnonymousObserver(default, () => { })); ReactiveAssert.Throws(() => new AnonymousObserver(x => { }, default(Action))); - ReactiveAssert.Throws(() => new AnonymousObserver(default(Action), ex => { })); + ReactiveAssert.Throws(() => new AnonymousObserver(default, ex => { })); ReactiveAssert.Throws(() => new AnonymousObserver(x => { }, default(Action))); - ReactiveAssert.Throws(() => new AnonymousObserver(default(Action), ex => { }, () => { })); - ReactiveAssert.Throws(() => new AnonymousObserver(x => { }, default(Action), () => { })); - ReactiveAssert.Throws(() => new AnonymousObserver(x => { }, ex => { }, default(Action))); + ReactiveAssert.Throws(() => new AnonymousObserver(default, ex => { }, () => { })); + ReactiveAssert.Throws(() => new AnonymousObserver(x => { }, default, () => { })); + ReactiveAssert.Throws(() => new AnonymousObserver(x => { }, ex => { }, default)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ArgumentValidationTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ArgumentValidationTest.cs index 77be9f8c72..9346e6ea23 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ArgumentValidationTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ArgumentValidationTest.cs @@ -12,7 +12,6 @@ using System.Reactive.Linq; using System.Reactive.Subjects; using System.Reflection; -using System.Text; using System.Threading; using System.Threading.Tasks; using Xunit; @@ -32,7 +31,7 @@ public class ArgumentValidationTest /// as strings generated via , /// mapped to a value. /// - static Dictionary _defaultValues; + private static Dictionary _defaultValues; /// /// Prepare the default instances for various types used @@ -40,225 +39,232 @@ public class ArgumentValidationTest /// static ArgumentValidationTest() { - _defaultValues = new Dictionary(); - - _defaultValues.Add("IObservable`1[Object]", Observable.Return(new object())); - _defaultValues.Add("IObservable`1[Int32]", Observable.Return(1)); - _defaultValues.Add("IObservable`1[Task`1[Int32]]", Observable.Return(Task.FromResult(1))); - _defaultValues.Add("IObservable`1[Notification`1[Int32]]", Observable.Return(Notification.CreateOnNext(1))); - _defaultValues.Add("IObservable`1[Int64]", Observable.Return(1L)); - _defaultValues.Add("IObservable`1[Double]", Observable.Return(1.0)); - _defaultValues.Add("IObservable`1[Single]", Observable.Return(1.0f)); - _defaultValues.Add("IObservable`1[Decimal]", Observable.Return(1.0m)); - _defaultValues.Add("IObservable`1[Nullable`1[Int32]]", Observable.Return(1)); - _defaultValues.Add("IObservable`1[Nullable`1[Int64]]", Observable.Return(1L)); - _defaultValues.Add("IObservable`1[Nullable`1[Double]]", Observable.Return(1.0)); - _defaultValues.Add("IObservable`1[Nullable`1[Single]]", Observable.Return(1.0f)); - _defaultValues.Add("IObservable`1[Nullable`1[Decimal]]", Observable.Return(1.0m)); - _defaultValues.Add("IObservable`1[IObservable`1[Int32]]", Observable.Return(Observable.Return(1))); - _defaultValues.Add("IObservable`1[][Int32]", new[] { Observable.Return(1) }); - - _defaultValues.Add("IConnectableObservable`1[Int32]", Observable.Return(1).Publish()); - _defaultValues.Add("Int32", 1); - _defaultValues.Add("Int64", 1L); - _defaultValues.Add("IScheduler", Scheduler.Immediate); - _defaultValues.Add("TimeSpan", TimeSpan.FromMilliseconds(1)); - _defaultValues.Add("DateTimeOffset", DateTimeOffset.Now); - _defaultValues.Add("Object", new object()); - _defaultValues.Add("Exception", new Exception()); - _defaultValues.Add("String", "String"); - - _defaultValues.Add("IDictionary`2[Int32, IObservable`1[Int32]]", new Dictionary>()); - - _defaultValues.Add("Type", typeof(object)); - - _defaultValues.Add("Int32[]", new[] { 1 }); - - _defaultValues.Add("ISubject`1[Int32]", new Subject()); - - _defaultValues.Add("ISubject`2[Int32, Int32]", new Subject()); - - _defaultValues.Add("IEnumerable`1[Int32]", new[] { 1 }); - - _defaultValues.Add("IEnumerable`1[IObservable`1[Int32]]", new[] { Observable.Return(1) }); - - _defaultValues.Add("SynchronizationContext", SynchronizationContext.Current); - - _defaultValues.Add("IEqualityComparer`1[Int32]", EqualityComparer.Default); - - _defaultValues.Add("IComparer`1[Int32]", Comparer.Default); - - _defaultValues.Add("IObserver`1[Int32]", Observer.Create(v => { })); - - _defaultValues.Add("CancellationToken", new CancellationToken()); - - _defaultValues.Add("Action", new Action(() => { })); - - _defaultValues.Add("Action`1[Int32]", new Action(v => { })); - _defaultValues.Add("Action`1[Exception]", new Action(v => { })); - _defaultValues.Add("Action`1[IDisposable]", new Action(v => { })); - _defaultValues.Add("Action`1[EventHandler]", new Action(v => { })); - _defaultValues.Add("Action`1[EventHandler`1[Int32]]", new Action>(v => { })); - _defaultValues.Add("Action`1[Action`1[Int32]]", new Action>(v => { })); - _defaultValues.Add("Action`1[Action]", new Action(v => { })); - _defaultValues.Add("Action`1[IAsyncResult]", new Action(v => { })); - - - _defaultValues.Add("Action`2[Int32, Int32]", new Action((v, u) => { })); - - _defaultValues.Add("Func`1[Boolean]", new Func(() => true)); - _defaultValues.Add("Func`1[Int32]", new Func(() => 1)); - _defaultValues.Add("Func`1[IObservable`1[Int32]]", new Func>(() => Observable.Return(1))); - _defaultValues.Add("Func`1[ISubject`2[Int32, Int32]]", new Func>(() => new Subject())); - _defaultValues.Add("Func`1[Task`1[IObservable`1[Int32]]]", new Func>>(() => Task.FromResult(Observable.Return(1)))); - _defaultValues.Add("Func`1[IDisposable]", new Func(() => Disposable.Empty)); - _defaultValues.Add("Func`1[Task]", new Func(() => Task.FromResult(1))); - _defaultValues.Add("Func`1[Task`1[Int32]]", new Func>(() => Task.FromResult(1))); - _defaultValues.Add("Func`1[IEnumerable`1[IObservable`1[Object]]]", new Func>>(() => new[] { Observable.Return((object)1) })); - - _defaultValues.Add("Func`2[Int32, IObservable`1[Int32]]", new Func>(v => Observable.Return(v))); - _defaultValues.Add("Func`2[Exception, IObservable`1[Int32]]", new Func>(v => Observable.Return(1))); - _defaultValues.Add("Func`2[Int32, Task`1[Int32]]", new Func>(v => Task.FromResult(v))); - _defaultValues.Add("Func`2[Int32, Int32]", new Func(v => v)); - _defaultValues.Add("Func`2[Int32, IEnumerable`1[Int32]]", new Func>(v => new[] { v })); - _defaultValues.Add("Func`2[Int32, Boolean]", new Func(v => true)); - _defaultValues.Add("Func`2[Int32, TimeSpan]", new Func(v => TimeSpan.FromMilliseconds(1))); - _defaultValues.Add("Func`2[Int32, DateTimeOffset]", new Func(v => DateTimeOffset.Now)); - _defaultValues.Add("Func`2[IList`1[Int32], Int32]", new Func, int>(v => v.Count)); - _defaultValues.Add("Func`2[Int32, Nullable`1[Double]]", new Func(v => v)); - _defaultValues.Add("Func`2[Int32, Nullable`1[Single]]", new Func(v => v)); - _defaultValues.Add("Func`2[Int32, Nullable`1[Int32]]", new Func(v => v)); - _defaultValues.Add("Func`2[Int32, Nullable`1[Decimal]]", new Func(v => v)); - _defaultValues.Add("Func`2[Int32, Nullable`1[Int64]]", new Func(v => v)); - _defaultValues.Add("Func`2[Int32, Double]", new Func(v => v)); - _defaultValues.Add("Func`2[Int32, Single]", new Func(v => v)); - _defaultValues.Add("Func`2[Int32, Decimal]", new Func(v => v)); - _defaultValues.Add("Func`2[Int32, Int64]", new Func(v => v)); - _defaultValues.Add("Func`2[IObservable`1[Object], IObservable`1[Int32]]", new Func, IObservable>(v => v.Select(w => 1))); - _defaultValues.Add("Func`2[IObservable`1[Exception], IObservable`1[Int32]]", new Func, IObservable>(v => v.Select(w => 1))); - _defaultValues.Add("Func`2[IGroupedObservable`2[Int32, Int32], IObservable`1[Int32]]", new Func, IObservable>(v => v)); - _defaultValues.Add("Func`2[IObservable`1[Int32], IObservable`1[Int32]]", new Func, IObservable>(v => v.Select(w => 1))); - _defaultValues.Add("Func`2[CancellationToken, Task`1[IObservable`1[Int32]]]", new Func>>(v => Task.FromResult(Observable.Return(1)))); - _defaultValues.Add("Func`2[IDisposable, Task`1[IObservable`1[Int32]]]", new Func>>(v => Task.FromResult(Observable.Return(1)))); - _defaultValues.Add("Func`2[IDisposable, IObservable`1[Int32]]", new Func>(v => Observable.Return(1))); - _defaultValues.Add("Func`2[CancellationToken, Task`1[IDisposable]]", new Func>(v => Task.FromResult(Disposable.Empty))); - _defaultValues.Add("Func`2[EventHandler`1[Int32], Int32]", new Func, int>(v => 1)); - _defaultValues.Add("Func`2[Action`1[Int32], Int32]", new Func, int>(v => 1)); - _defaultValues.Add("Func`2[IObserver`1[Int32], IDisposable]", new Func, IDisposable>(v => Disposable.Empty)); - _defaultValues.Add("Func`2[IObserver`1[Int32], Action]", new Func, Action>(v => () => { })); - _defaultValues.Add("Func`2[IObserver`1[Int32], Task]", new Func, Task>(v => Task.FromResult(1))); - _defaultValues.Add("Func`2[IObserver`1[Int32], Task`1[IDisposable]]", new Func, Task>(v => Task.FromResult(Disposable.Empty))); - _defaultValues.Add("Func`2[IObserver`1[Int32], Task`1[Action]]", new Func, Task>(v => Task.FromResult(() => { }))); - _defaultValues.Add("Func`2[CancellationToken, Task]", new Func(v => Task.FromResult(1))); - _defaultValues.Add("Func`2[CancellationToken, Task`1[Int32]]", new Func>(v => Task.FromResult(1))); - _defaultValues.Add("Func`2[IAsyncResult, Int32]", new Func(v => 1)); - _defaultValues.Add("Func`2[IObserver`1[Int32], IEnumerable`1[IObservable`1[Object]]]", new Func, IEnumerable>>(v => new[] { Observable.Return((object)1) })); - _defaultValues.Add("Func`2[IObservable`1[Int32], Int32]", new Func, int>(v => 1)); - - _defaultValues.Add("Func`3[Int32, Int32, IObservable`1[Int32]]", new Func>((v, u) => Observable.Return(v + u))); - _defaultValues.Add("Func`3[Int32, Int32, Task`1[Int32]]", new Func>((v, u) => Task.FromResult(v + u))); - _defaultValues.Add("Func`3[Int32, CancellationToken, Task`1[Int32]]", new Func>((v, u) => Task.FromResult(v))); - _defaultValues.Add("Func`3[Int32, Int32, Int32]", new Func((v, u) => v + u)); - _defaultValues.Add("Func`3[Int32, Int32, IEnumerable`1[Int32]]", new Func>((v, u) => new[] { v, u })); - _defaultValues.Add("Func`3[Int32, Int32, Boolean]", new Func((v, u) => true)); - _defaultValues.Add("Func`3[Int32, IObservable`1[Int32], Int32]", new Func, int>((v, u) => v)); - _defaultValues.Add("Func`3[IDisposable, CancellationToken, Task`1[IObservable`1[Int32]]]", new Func>>((v, u) => Task.FromResult(Observable.Return(1)))); - _defaultValues.Add("Func`3[IObserver`1[Int32], CancellationToken, Task]", new Func, CancellationToken, Task>((v, w) => Task.FromResult(1))); - _defaultValues.Add("Func`3[IObserver`1[Int32], CancellationToken, Task`1[IDisposable]]", new Func, CancellationToken, Task>((v, w) => Task.FromResult(Disposable.Empty))); - _defaultValues.Add("Func`3[IObserver`1[Int32], CancellationToken, Task`1[Action]]", new Func, CancellationToken, Task>((v, w) => Task.FromResult(() => { }))); - _defaultValues.Add("Func`3[AsyncCallback, Object, IAsyncResult]", new Func((v, w) => null)); + _defaultValues = new Dictionary + { + { "IObservable`1[Object]", Observable.Return(new object()) }, + { "IObservable`1[Int32]", Observable.Return(1) }, + { "IObservable`1[Task`1[Int32]]", Observable.Return(Task.FromResult(1)) }, + { "IObservable`1[Notification`1[Int32]]", Observable.Return(Notification.CreateOnNext(1)) }, + { "IObservable`1[Int64]", Observable.Return(1L) }, + { "IObservable`1[Double]", Observable.Return(1.0) }, + { "IObservable`1[Single]", Observable.Return(1.0f) }, + { "IObservable`1[Decimal]", Observable.Return(1.0m) }, + { "IObservable`1[Nullable`1[Int32]]", Observable.Return(1) }, + { "IObservable`1[Nullable`1[Int64]]", Observable.Return(1L) }, + { "IObservable`1[Nullable`1[Double]]", Observable.Return(1.0) }, + { "IObservable`1[Nullable`1[Single]]", Observable.Return(1.0f) }, + { "IObservable`1[Nullable`1[Decimal]]", Observable.Return(1.0m) }, + { "IObservable`1[IObservable`1[Int32]]", Observable.Return(Observable.Return(1)) }, + { "IObservable`1[][Int32]", new[] { Observable.Return(1) } }, + + { "IConnectableObservable`1[Int32]", Observable.Return(1).Publish() }, + { "Int32", 1 }, + { "Int64", 1L }, + { "IScheduler", Scheduler.Immediate }, + { "TimeSpan", TimeSpan.FromMilliseconds(1) }, + { "DateTimeOffset", DateTimeOffset.Now }, + { "Object", new object() }, + { "Exception", new Exception() }, + { "String", "String" }, + + { "IDictionary`2[Int32, IObservable`1[Int32]]", new Dictionary>() }, + + { "Type", typeof(object) }, + + { "Int32[]", new[] { 1 } }, + + { "ISubject`1[Int32]", new Subject() }, + + { "ISubject`2[Int32, Int32]", new Subject() }, + + { "IEnumerable`1[Int32]", new[] { 1 } }, + + { "IEnumerable`1[IObservable`1[Int32]]", new[] { Observable.Return(1) } }, + + { "SynchronizationContext", SynchronizationContext.Current }, + + { "IEqualityComparer`1[Int32]", EqualityComparer.Default }, + + { "IComparer`1[Int32]", Comparer.Default }, + + { "IObserver`1[Int32]", Observer.Create(v => { }) }, + + { "CancellationToken", new CancellationToken() }, + + { "Action", new Action(() => { }) }, + + { "Action`1[Int32]", new Action(v => { }) }, + { "Action`1[Exception]", new Action(v => { }) }, + { "Action`1[IDisposable]", new Action(v => { }) }, + { "Action`1[EventHandler]", new Action(v => { }) }, + { "Action`1[EventHandler`1[Int32]]", new Action>(v => { }) }, + { "Action`1[Action`1[Int32]]", new Action>(v => { }) }, + { "Action`1[Action]", new Action(v => { }) }, + { "Action`1[IAsyncResult]", new Action(v => { }) }, + + + { "Action`2[Int32, Int32]", new Action((v, u) => { }) }, + + { "Func`1[Boolean]", new Func(() => true) }, + { "Func`1[Int32]", new Func(() => 1) }, + { "Func`1[IObservable`1[Int32]]", new Func>(() => Observable.Return(1)) }, + { "Func`1[ISubject`2[Int32, Int32]]", new Func>(() => new Subject()) }, + { "Func`1[Task`1[IObservable`1[Int32]]]", new Func>>(() => Task.FromResult(Observable.Return(1))) }, + { "Func`1[IDisposable]", new Func(() => Disposable.Empty) }, + { "Func`1[Task]", new Func(() => Task.FromResult(1)) }, + { "Func`1[Task`1[Int32]]", new Func>(() => Task.FromResult(1)) }, + { "Func`1[IEnumerable`1[IObservable`1[Object]]]", new Func>>(() => new[] { Observable.Return((object)1) }) }, + + { "Func`2[Int32, IObservable`1[Int32]]", new Func>(v => Observable.Return(v)) }, + { "Func`2[Exception, IObservable`1[Int32]]", new Func>(v => Observable.Return(1)) }, + { "Func`2[Int32, Task`1[Int32]]", new Func>(v => Task.FromResult(v)) }, + { "Func`2[Int32, Int32]", new Func(v => v) }, + { "Func`2[Int32, IEnumerable`1[Int32]]", new Func>(v => new[] { v }) }, + { "Func`2[Int32, Boolean]", new Func(v => true) }, + { "Func`2[Int32, TimeSpan]", new Func(v => TimeSpan.FromMilliseconds(1)) }, + { "Func`2[Int32, DateTimeOffset]", new Func(v => DateTimeOffset.Now) }, + { "Func`2[IList`1[Int32], Int32]", new Func, int>(v => v.Count) }, + { "Func`2[Int32, Nullable`1[Double]]", new Func(v => v) }, + { "Func`2[Int32, Nullable`1[Single]]", new Func(v => v) }, + { "Func`2[Int32, Nullable`1[Int32]]", new Func(v => v) }, + { "Func`2[Int32, Nullable`1[Decimal]]", new Func(v => v) }, + { "Func`2[Int32, Nullable`1[Int64]]", new Func(v => v) }, + { "Func`2[Int32, Double]", new Func(v => v) }, + { "Func`2[Int32, Single]", new Func(v => v) }, + { "Func`2[Int32, Decimal]", new Func(v => v) }, + { "Func`2[Int32, Int64]", new Func(v => v) }, + { "Func`2[IObservable`1[Object], IObservable`1[Int32]]", new Func, IObservable>(v => v.Select(w => 1)) }, + { "Func`2[IObservable`1[Exception], IObservable`1[Int32]]", new Func, IObservable>(v => v.Select(w => 1)) }, + { "Func`2[IGroupedObservable`2[Int32, Int32], IObservable`1[Int32]]", new Func, IObservable>(v => v) }, + { "Func`2[IObservable`1[Int32], IObservable`1[Int32]]", new Func, IObservable>(v => v.Select(w => 1)) }, + { "Func`2[CancellationToken, Task`1[IObservable`1[Int32]]]", new Func>>(v => Task.FromResult(Observable.Return(1))) }, + { "Func`2[IDisposable, Task`1[IObservable`1[Int32]]]", new Func>>(v => Task.FromResult(Observable.Return(1))) }, + { "Func`2[IDisposable, IObservable`1[Int32]]", new Func>(v => Observable.Return(1)) }, + { "Func`2[CancellationToken, Task`1[IDisposable]]", new Func>(v => Task.FromResult(Disposable.Empty)) }, + { "Func`2[EventHandler`1[Int32], Int32]", new Func, int>(v => 1) }, + { "Func`2[Action`1[Int32], Int32]", new Func, int>(v => 1) }, + { "Func`2[IObserver`1[Int32], IDisposable]", new Func, IDisposable>(v => Disposable.Empty) }, + { "Func`2[IObserver`1[Int32], Action]", new Func, Action>(v => () => { }) }, + { "Func`2[IObserver`1[Int32], Task]", new Func, Task>(v => Task.FromResult(1)) }, + { "Func`2[IObserver`1[Int32], Task`1[IDisposable]]", new Func, Task>(v => Task.FromResult(Disposable.Empty)) }, + { "Func`2[IObserver`1[Int32], Task`1[Action]]", new Func, Task>(v => Task.FromResult(() => { })) }, + { "Func`2[CancellationToken, Task]", new Func(v => Task.FromResult(1)) }, + { "Func`2[CancellationToken, Task`1[Int32]]", new Func>(v => Task.FromResult(1)) }, + { "Func`2[IAsyncResult, Int32]", new Func(v => 1) }, + { "Func`2[IObserver`1[Int32], IEnumerable`1[IObservable`1[Object]]]", new Func, IEnumerable>>(v => new[] { Observable.Return((object)1) }) }, + { "Func`2[IObservable`1[Int32], Int32]", new Func, int>(v => 1) }, + + { "Func`3[Int32, Int32, IObservable`1[Int32]]", new Func>((v, u) => Observable.Return(v + u)) }, + { "Func`3[Int32, Int32, Task`1[Int32]]", new Func>((v, u) => Task.FromResult(v + u)) }, + { "Func`3[Int32, CancellationToken, Task`1[Int32]]", new Func>((v, u) => Task.FromResult(v)) }, + { "Func`3[Int32, Int32, Int32]", new Func((v, u) => v + u) }, + { "Func`3[Int32, Int32, IEnumerable`1[Int32]]", new Func>((v, u) => new[] { v, u }) }, + { "Func`3[Int32, Int32, Boolean]", new Func((v, u) => true) }, + { "Func`3[Int32, IObservable`1[Int32], Int32]", new Func, int>((v, u) => v) }, + { "Func`3[IDisposable, CancellationToken, Task`1[IObservable`1[Int32]]]", new Func>>((v, u) => Task.FromResult(Observable.Return(1))) }, + { "Func`3[IObserver`1[Int32], CancellationToken, Task]", new Func, CancellationToken, Task>((v, w) => Task.FromResult(1)) }, + { "Func`3[IObserver`1[Int32], CancellationToken, Task`1[IDisposable]]", new Func, CancellationToken, Task>((v, w) => Task.FromResult(Disposable.Empty)) }, + { "Func`3[IObserver`1[Int32], CancellationToken, Task`1[Action]]", new Func, CancellationToken, Task>((v, w) => Task.FromResult(() => { })) }, + { "Func`3[AsyncCallback, Object, IAsyncResult]", new Func((v, w) => null) }, + + { "Func`4[Int32, Int32, CancellationToken, Task`1[Int32]]", new Func>((v, u, w) => Task.FromResult(v)) }, + { "Func`4[Int32, Int32, Int32, Int32]", new Func((v1, v2, v3) => v1 + v2 + v3) }, + { "Func`4[Int32, AsyncCallback, Object, IAsyncResult]", new Func((v, w, x) => null) }, + + { "Func`5[Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4) => v1 + v2 + v3 + v4) }, - _defaultValues.Add("Func`4[Int32, Int32, CancellationToken, Task`1[Int32]]", new Func>((v, u, w) => Task.FromResult(v))); - _defaultValues.Add("Func`4[Int32, Int32, Int32, Int32]", new Func((v1, v2, v3) => v1 + v2 + v3)); - _defaultValues.Add("Func`4[Int32, AsyncCallback, Object, IAsyncResult]", new Func((v, w, x) => null)); + { "Func`6[Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5) => v1 + v2 + v3 + v4 + v5) }, - _defaultValues.Add("Func`5[Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4) => v1 + v2 + v3 + v4)); + { "Func`7[Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6) => v1 + v2 + v3 + v4 + v5 + v6) }, + + { "Func`8[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7) => v1 + v2 + v3 + v4 + v5 + v6 + v7) }, + + { "Func`9[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8) }, + + { "Func`10[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9) }, + + { "Func`11[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10) }, + + { "Func`12[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11) }, + + { "Func`13[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 + v12) }, + + { "Func`14[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 + v12 + v13) }, + + { "Func`15[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 + v12 + v13 + v14) }, + + { "Func`16[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 + v12 + v13 + v14 + v15) }, + + { "Func`17[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 + v12 + v13 + v14 + v15 + v16) }, - _defaultValues.Add("Func`6[Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5) => v1 + v2 + v3 + v4 + v5)); - - _defaultValues.Add("Func`7[Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6) => v1 + v2 + v3 + v4 + v5 + v6)); - - _defaultValues.Add("Func`8[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7) => v1 + v2 + v3 + v4 + v5 + v6 + v7)); - - _defaultValues.Add("Func`9[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8)); - - _defaultValues.Add("Func`10[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9)); - - _defaultValues.Add("Func`11[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10)); - - _defaultValues.Add("Func`12[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11)); - - _defaultValues.Add("Func`13[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 + v12)); - - _defaultValues.Add("Func`14[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 + v12 + v13)); - - _defaultValues.Add("Func`15[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 + v12 + v13 + v14)); - - _defaultValues.Add("Func`16[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 + v12 + v13 + v14 + v15)); - - _defaultValues.Add("Func`17[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) => v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10 + v11 + v12 + v13 + v14 + v15 + v16)); - - _defaultValues.Add("Plan`1[][Int32]", new Plan[] { + { + "Plan`1[][Int32]", + new Plan[] { Observable.Return(1).Then(v => v) - }); + } + }, - _defaultValues.Add("IEnumerable`1[Plan`1[Int32]]", new Plan[] { + { + "IEnumerable`1[Plan`1[Int32]]", + new Plan[] { Observable.Return(1).Then(v => v) - }); + } + }, - _defaultValues.Add("Action`3[Int32, Int32, Int32]", new Action((v1, v2, v3) => { })); + { "Action`3[Int32, Int32, Int32]", new Action((v1, v2, v3) => { }) }, - _defaultValues.Add("Action`4[Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4) => { })); + { "Action`4[Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4) => { }) }, - _defaultValues.Add("Action`5[Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5) => { })); + { "Action`5[Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5) => { }) }, - _defaultValues.Add("Action`6[Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6) => { })); + { "Action`6[Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6) => { }) }, - _defaultValues.Add("Action`7[Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7) => { })); + { "Action`7[Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7) => { }) }, - _defaultValues.Add("Action`8[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8) => { })); + { "Action`8[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8) => { }) }, - _defaultValues.Add("Action`9[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9) => { })); + { "Action`9[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9) => { }) }, - _defaultValues.Add("Action`10[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) => { })); + { "Action`10[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) => { }) }, - _defaultValues.Add("Action`11[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) => { })); + { "Action`11[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) => { }) }, - _defaultValues.Add("Action`12[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) => { })); + { "Action`12[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) => { }) }, - _defaultValues.Add("Action`13[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) => { })); + { "Action`13[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) => { }) }, - _defaultValues.Add("Action`14[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) => { })); + { "Action`14[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) => { }) }, - _defaultValues.Add("Action`15[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) => { })); + { "Action`15[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) => { }) }, - _defaultValues.Add("Action`16[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) => { })); + { "Action`16[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32]", new Action((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) => { }) }, - _defaultValues.Add("Func`5[Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4) => null)); + { "Func`5[Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4) => null) }, - _defaultValues.Add("Func`6[Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5) => null)); + { "Func`6[Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5) => null) }, - _defaultValues.Add("Func`7[Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6) => null)); + { "Func`7[Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6) => null) }, - _defaultValues.Add("Func`8[Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7) => null)); + { "Func`8[Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7) => null) }, - _defaultValues.Add("Func`9[Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8) => null)); + { "Func`9[Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8) => null) }, - _defaultValues.Add("Func`10[Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9) => null)); + { "Func`10[Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9) => null) }, - _defaultValues.Add("Func`11[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) => null)); + { "Func`11[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) => null) }, - _defaultValues.Add("Func`12[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) => null)); + { "Func`12[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) => null) }, - _defaultValues.Add("Func`13[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) => null)); + { "Func`13[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) => null) }, - _defaultValues.Add("Func`14[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) => null)); + { "Func`14[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) => null) }, - _defaultValues.Add("Func`15[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) => null)); + { "Func`15[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) => null) }, - _defaultValues.Add("Func`16[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) => null)); + { "Func`16[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) => null) }, - _defaultValues.Add("Func`17[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) => null)); + { "Func`17[Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, AsyncCallback, Object, IAsyncResult]", new Func((v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) => null) } + }; } #endregion @@ -283,7 +289,7 @@ public void Verify_ObservableEx() /// well as when invoking Subscribe with null. /// /// The type to verify. - static void VerifyClass(Type type) + private static void VerifyClass(Type type) { foreach (var method in type.GetMethods()) { @@ -308,7 +314,7 @@ static void VerifyClass(Type type) var targs = new Type[ga.Length]; // fill in the type arguments - for (int k = 0; k < targs.Length; k++) + for (var k = 0; k < targs.Length; k++) { // watch out for type constrains // the default typeof(int) will not work when @@ -343,7 +349,8 @@ static void VerifyClass(Type type) { throw new Exception("MakeGenericMethod threw: " + method, ex); } - } else + } + else { // non generic method, we can invoke this directly m = method; @@ -353,7 +360,7 @@ static void VerifyClass(Type type) var args = m.GetParameters(); // for each parameter of the (generic) method - for (int i = 0; i < args.Length; i++) + for (var i = 0; i < args.Length; i++) { // prepare a pattern for the method invocation var margs = new object[args.Length]; @@ -364,7 +371,7 @@ static void VerifyClass(Type type) // for each argument index // with the loop i, this creates an N x N matrix where in each row, one argument is null - for (int j = 0; j < args.Length; j++) + for (var j = 0; j < args.Length; j++) { // figure out the type of the argument var pt = args[j].ParameterType; @@ -424,7 +431,8 @@ static void VerifyClass(Type type) } // if the call didn't throw and returned a null object, throw // no operators should return null - if (obj == null && !thrown) { + if (obj == null && !thrown) + { throw new NullReferenceException("null return: " + method + " @ " + i); } } @@ -443,7 +451,7 @@ static void VerifyClass(Type type) // prepare method arguments var margs = new object[args.Length]; - for (int j = 0; j < args.Length; j++) + for (var j = 0; j < args.Length; j++) { var pt = args[j].ParameterType; var paramTypeName = TypeNameOf(pt); @@ -469,11 +477,11 @@ static void VerifyClass(Type type) var thrown = true; try { - var o = m.Invoke(null, margs) as IObservable; // Should not return null, but would be mistaken for // throwing because of Subscribe(null) - if (o != null) { + if (m.Invoke(null, margs) is IObservable o) + { o.Subscribe(null); thrown = false; @@ -500,7 +508,7 @@ static void VerifyClass(Type type) } } } - } + } /// /// Generate a string representation of a possibly generic type @@ -508,7 +516,7 @@ static void VerifyClass(Type type) /// /// The type to get a string representation /// The string representation of a possibly generic type - static string TypeNameOf(Type type) + private static string TypeNameOf(Type type) { var ga = type.GetGenericArguments(); if (ga.Length == 0) diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/AsyncLockTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/AsyncLockTest.cs index 92426f6a87..7723f63adc 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/AsyncLockTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/AsyncLockTest.cs @@ -4,12 +4,11 @@ using System; using System.Reactive.Concurrency; -using System.Reflection; using Xunit; namespace ReactiveTests.Tests { - + public class AsyncLockTest { [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ConcurrencyTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ConcurrencyTest.cs index c656637042..0c50b611ef 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ConcurrencyTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ConcurrencyTest.cs @@ -9,7 +9,7 @@ namespace ReactiveTests.Tests { - + public class ConcurrencyTest { [Fact] @@ -23,15 +23,20 @@ public void CurrentScheduler_EnsureTrampoline() var e = new ManualResetEvent(false); for (var i = 0; i < concurrency; ++i) + { NewThreadScheduler.Default.Schedule(() => { e.WaitOne(); try { if (Scheduler.CurrentThread.ScheduleRequired) + { Scheduler.CurrentThread.Schedule(() => { }); + } else + { new Action(() => { })(); + } } catch (NullReferenceException) { @@ -42,11 +47,14 @@ public void CurrentScheduler_EnsureTrampoline() s.Release(); } }); + } e.Set(); for (var i = 0; i < concurrency; ++i) + { s.WaitOne(); + } Assert.True(passed); } @@ -62,15 +70,20 @@ public void CurrentScheduler_Schedule() var e = new ManualResetEvent(false); for (var i = 0; i < concurrency; ++i) + { NewThreadScheduler.Default.Schedule(() => { e.WaitOne(); try { if (Scheduler.CurrentThread.ScheduleRequired) + { Scheduler.CurrentThread.Schedule(() => { }); + } else + { new Action(() => { })(); + } } catch (NullReferenceException) { @@ -81,11 +94,14 @@ public void CurrentScheduler_Schedule() s.Release(); } }); + } e.Set(); for (var i = 0; i < concurrency; ++i) + { s.WaitOne(); + } Assert.True(passed); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/CurrentThreadSchedulerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/CurrentThreadSchedulerTest.cs index 543f80f61e..10e384bc2a 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/CurrentThreadSchedulerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/CurrentThreadSchedulerTest.cs @@ -6,20 +6,20 @@ using System.Diagnostics; using System.Reactive.Concurrency; using System.Threading; -using Xunit; using Microsoft.Reactive.Testing; +using Xunit; namespace ReactiveTests.Tests { - + public class CurrentThreadSchedulerTest { [Fact] public void CurrentThread_ArgumentChecking() { - ReactiveAssert.Throws(() => Scheduler.CurrentThread.Schedule(42, default(Func))); - ReactiveAssert.Throws(() => Scheduler.CurrentThread.Schedule(42, default(TimeSpan), default(Func))); - ReactiveAssert.Throws(() => Scheduler.CurrentThread.Schedule(42, default(DateTimeOffset), default(Func))); + ReactiveAssert.Throws(() => Scheduler.CurrentThread.Schedule(42, default)); + ReactiveAssert.Throws(() => Scheduler.CurrentThread.Schedule(42, default(TimeSpan), default)); + ReactiveAssert.Throws(() => Scheduler.CurrentThread.Schedule(42, default(DateTimeOffset), default)); } [Fact] @@ -61,7 +61,8 @@ public void CurrentThread_ScheduleActionNested() { var id = Thread.CurrentThread.ManagedThreadId; var ran = false; - Scheduler.CurrentThread.Schedule(() => { + Scheduler.CurrentThread.Schedule(() => + { Assert.Equal(id, Thread.CurrentThread.ManagedThreadId); Scheduler.CurrentThread.Schedule(() => { ran = true; }); }); @@ -81,7 +82,7 @@ public void CurrentThread_ScheduleActionNested_TimeSpan() Assert.True(ran); } - [Fact(Skip ="")] + [Fact(Skip = "")] public void CurrentThread_ScheduleActionDue() { var id = Thread.CurrentThread.ManagedThreadId; @@ -100,11 +101,13 @@ public void CurrentThread_ScheduleActionDueNested() var ran = false; var sw = new Stopwatch(); sw.Start(); - Scheduler.CurrentThread.Schedule(TimeSpan.FromSeconds(0.2), () => { + Scheduler.CurrentThread.Schedule(TimeSpan.FromSeconds(0.2), () => + { sw.Stop(); Assert.Equal(id, Thread.CurrentThread.ManagedThreadId); sw.Start(); - Scheduler.CurrentThread.Schedule(TimeSpan.FromSeconds(0.2), () => { + Scheduler.CurrentThread.Schedule(TimeSpan.FromSeconds(0.2), () => + { sw.Stop(); ran = true; }); @@ -118,7 +121,8 @@ public void CurrentThread_EnsureTrampoline() { var ran1 = false; var ran2 = false; - Scheduler.CurrentThread.EnsureTrampoline(() => { + Scheduler.CurrentThread.EnsureTrampoline(() => + { Scheduler.CurrentThread.Schedule(() => { ran1 = true; }); Scheduler.CurrentThread.Schedule(() => { ran2 = true; }); }); @@ -147,7 +151,8 @@ public void CurrentThread_EnsureTrampolineAndCancel() var ran2 = false; Scheduler.CurrentThread.EnsureTrampoline(() => { - Scheduler.CurrentThread.Schedule(() => { + Scheduler.CurrentThread.Schedule(() => + { ran1 = true; var d = Scheduler.CurrentThread.Schedule(() => { ran2 = true; }); d.Dispose(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/DefaultSchedulerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/DefaultSchedulerTest.cs index 1ad9c11909..d5ec7a7843 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/DefaultSchedulerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/DefaultSchedulerTest.cs @@ -4,23 +4,22 @@ using System; using System.Reactive.Concurrency; -using System.Diagnostics; using System.Threading; -using Xunit; using Microsoft.Reactive.Testing; +using Xunit; namespace ReactiveTests.Tests { - + public class DefaultSchedulerTest { [Fact] public void Schedule_ArgumentChecking() { - ReactiveAssert.Throws(() => DefaultScheduler.Instance.Schedule(42, default(Func))); - ReactiveAssert.Throws(() => DefaultScheduler.Instance.Schedule(42, DateTimeOffset.Now, default(Func))); - ReactiveAssert.Throws(() => DefaultScheduler.Instance.Schedule(42, TimeSpan.Zero, default(Func))); - ReactiveAssert.Throws(() => DefaultScheduler.Instance.SchedulePeriodic(42, TimeSpan.FromSeconds(1), default(Func))); + ReactiveAssert.Throws(() => DefaultScheduler.Instance.Schedule(42, default)); + ReactiveAssert.Throws(() => DefaultScheduler.Instance.Schedule(42, DateTimeOffset.Now, default)); + ReactiveAssert.Throws(() => DefaultScheduler.Instance.Schedule(42, TimeSpan.Zero, default)); + ReactiveAssert.Throws(() => DefaultScheduler.Instance.SchedulePeriodic(42, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => DefaultScheduler.Instance.SchedulePeriodic(42, TimeSpan.FromSeconds(-1), _ => _)); } @@ -74,7 +73,9 @@ public void Periodic_NonReentrant() try { if (Interlocked.Increment(ref n) > 1) // Without an AsyncLock this would fail. + { fail = true; + } Thread.Sleep(100); @@ -101,7 +102,7 @@ public void No_ThreadPool_Starvation_Dispose() var N = Environment.ProcessorCount * 2; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var e = new ManualResetEvent(false); var f = new ManualResetEvent(false); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/EventLoopSchedulerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/EventLoopSchedulerTest.cs index 4407bcc82d..7dd497f207 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/EventLoopSchedulerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/EventLoopSchedulerTest.cs @@ -16,7 +16,7 @@ namespace ReactiveTests.Tests { - + public class EventLoopSchedulerTest { [Fact] @@ -27,10 +27,10 @@ public void EventLoop_ArgumentChecking() #if !NO_THREAD ReactiveAssert.Throws(() => new EventLoopScheduler(null)); #endif - ReactiveAssert.Throws(() => el.Schedule(42, default(Func))); - ReactiveAssert.Throws(() => el.Schedule(42, DateTimeOffset.Now, default(Func))); - ReactiveAssert.Throws(() => el.Schedule(42, TimeSpan.Zero, default(Func))); - ReactiveAssert.Throws(() => el.SchedulePeriodic(42, TimeSpan.FromSeconds(1), default(Func))); + ReactiveAssert.Throws(() => el.Schedule(42, default)); + ReactiveAssert.Throws(() => el.Schedule(42, DateTimeOffset.Now, default)); + ReactiveAssert.Throws(() => el.Schedule(42, TimeSpan.Zero, default)); + ReactiveAssert.Throws(() => el.SchedulePeriodic(42, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => el.SchedulePeriodic(42, TimeSpan.FromSeconds(-1), _ => _)); } @@ -47,8 +47,11 @@ public void EventLoop_ScheduleAction() var ran = false; var gate = new Semaphore(0, 1); var el = new EventLoopScheduler(); - el.Schedule(() => { ran = true; - gate.Release(); }); + el.Schedule(() => + { + ran = true; + gate.Release(); + }); Assert.True(gate.WaitOne(TimeSpan.FromSeconds(2))); Assert.True(ran); } @@ -171,7 +174,7 @@ public void EventLoop_ScheduleOrderedAndTimedActions() [Fact] public void EventLoop_ScheduleTimeOrderedInFlightActions() - { + { var results = new List(); var gate = new Semaphore(0, 1); var el = new EventLoopScheduler(); @@ -180,7 +183,7 @@ public void EventLoop_ScheduleTimeOrderedInFlightActions() { results.Add(0); el.Schedule(TimeSpan.FromMilliseconds(50), () => results.Add(1)); - el.Schedule(TimeSpan.FromMilliseconds(100), ()=> + el.Schedule(TimeSpan.FromMilliseconds(100), () => { results.Add(2); gate.Release(); @@ -212,7 +215,7 @@ public void EventLoop_ScheduleTimeAndOrderedInFlightActions() Assert.True(gate.WaitOne(TimeSpan.FromSeconds(2))); results.AssertEqual(0, 4, 1, 2); - } + } [Fact] public void EventLoop_ScheduleActionNested() @@ -220,13 +223,16 @@ public void EventLoop_ScheduleActionNested() var ran = false; var el = new EventLoopScheduler(); var gate = new Semaphore(0, 1); - el.Schedule(() => el.Schedule(() => { ran = true; - gate.Release(); })); + el.Schedule(() => el.Schedule(() => + { + ran = true; + gate.Release(); + })); Assert.True(gate.WaitOne(TimeSpan.FromSeconds(2))); Assert.True(ran); } - [Fact(Skip ="")] + [Fact(Skip = "")] public void EventLoop_ScheduleActionDue() { var ran = false; @@ -234,11 +240,12 @@ public void EventLoop_ScheduleActionDue() var sw = new Stopwatch(); var gate = new Semaphore(0, 1); sw.Start(); - el.Schedule(TimeSpan.FromSeconds(0.2), () => { - ran = true; - sw.Stop(); - gate.Release(); - }); + el.Schedule(TimeSpan.FromSeconds(0.2), () => + { + ran = true; + sw.Stop(); + gate.Release(); + }); Assert.True(gate.WaitOne(TimeSpan.FromSeconds(2))); Assert.True(ran, "ran"); Assert.True(sw.ElapsedMilliseconds > 180, "due " + sw.ElapsedMilliseconds); @@ -284,9 +291,9 @@ public void EventLoop_Immediate() var M = 1000; var N = 4; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { - for (int j = 1; j <= M; j *= 10) + for (var j = 1; j <= M; j *= 10) { using (var e = new EventLoopScheduler()) { @@ -294,11 +301,15 @@ public void EventLoop_Immediate() { var cd = new CountdownEvent(j); - for (int k = 0; k < j; k++) + for (var k = 0; k < j; k++) + { d.Add(e.Schedule(() => cd.Signal())); + } if (!cd.Wait(10000)) + { Assert.True(false, "j = " + j); + } } } } @@ -311,9 +322,9 @@ public void EventLoop_TimeCollisions() var M = 1000; var N = 4; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { - for (int j = 1; j <= M; j *= 10) + for (var j = 1; j <= M; j *= 10) { using (var e = new EventLoopScheduler()) { @@ -321,11 +332,15 @@ public void EventLoop_TimeCollisions() { var cd = new CountdownEvent(j); - for (int k = 0; k < j; k++) + for (var k = 0; k < j; k++) + { d.Add(e.Schedule(TimeSpan.FromMilliseconds(100), () => cd.Signal())); + } if (!cd.Wait(10000)) + { Assert.True(false, "j = " + j); + } } } } @@ -338,9 +353,9 @@ public void EventLoop_Spread() var M = 1000; var N = 4; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { - for (int j = 1; j <= M; j *= 10) + for (var j = 1; j <= M; j *= 10) { using (var e = new EventLoopScheduler()) { @@ -348,11 +363,15 @@ public void EventLoop_Spread() { var cd = new CountdownEvent(j); - for (int k = 0; k < j; k++) + for (var k = 0; k < j; k++) + { d.Add(e.Schedule(TimeSpan.FromMilliseconds(k), () => cd.Signal())); + } if (!cd.Wait(10000)) + { Assert.True(false, "j = " + j); + } } } } @@ -363,7 +382,7 @@ public void EventLoop_Spread() public void EventLoop_Periodic() { var n = 0; - + using (var s = new EventLoopScheduler()) { var e = new ManualResetEvent(false); @@ -371,12 +390,16 @@ public void EventLoop_Periodic() var d = s.SchedulePeriodic(TimeSpan.FromMilliseconds(25), () => { if (Interlocked.Increment(ref n) == 10) + { e.Set(); + } }); - + if (!e.WaitOne(10000)) + { Assert.True(false); - + } + d.Dispose(); } } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/HistoricalSchedulerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/HistoricalSchedulerTest.cs index de3b7fd50f..89446c97e6 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/HistoricalSchedulerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/HistoricalSchedulerTest.cs @@ -12,7 +12,7 @@ namespace ReactiveTests.Tests { - + public class HistoricalSchedulerTest { public DateTimeOffset Time(int i) @@ -401,7 +401,7 @@ public void WithComparer() Assert.True(new[] { 1, 2 }.SequenceEqual(res)); } - class ReverseComparer : IComparer + private class ReverseComparer : IComparer { private readonly IComparer _comparer; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ImmediateSchedulerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ImmediateSchedulerTest.cs index c566233414..26b44c5e85 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ImmediateSchedulerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ImmediateSchedulerTest.cs @@ -12,7 +12,7 @@ namespace ReactiveTests.Tests { - + public class ImmediateSchedulerTest { [Fact] @@ -51,9 +51,9 @@ public void Immediate_ScheduleActionError() [Fact] public void Immediate_ArgumentChecking() { - ReactiveAssert.Throws(() => Scheduler.Immediate.Schedule(42, default(Func))); - ReactiveAssert.Throws(() => Scheduler.Immediate.Schedule(42, DateTimeOffset.Now, default(Func))); - ReactiveAssert.Throws(() => Scheduler.Immediate.Schedule(42, TimeSpan.Zero, default(Func))); + ReactiveAssert.Throws(() => Scheduler.Immediate.Schedule(42, default)); + ReactiveAssert.Throws(() => Scheduler.Immediate.Schedule(42, DateTimeOffset.Now, default)); + ReactiveAssert.Throws(() => Scheduler.Immediate.Schedule(42, TimeSpan.Zero, default)); } [Fact] @@ -117,7 +117,7 @@ public void Immediate_ArgumentChecking_More() { ReactiveAssert.Throws(() => { - self.Schedule(43, default(Func)); + self.Schedule(43, default); }); return Disposable.Empty; @@ -127,7 +127,7 @@ public void Immediate_ArgumentChecking_More() { ReactiveAssert.Throws(() => { - self.Schedule(43, TimeSpan.FromSeconds(1), default(Func)); + self.Schedule(43, TimeSpan.FromSeconds(1), default); }); return Disposable.Empty; @@ -137,7 +137,7 @@ public void Immediate_ArgumentChecking_More() { ReactiveAssert.Throws(() => { - self.Schedule(43, DateTimeOffset.UtcNow.AddDays(1), default(Func)); + self.Schedule(43, DateTimeOffset.UtcNow.AddDays(1), default); }); return Disposable.Empty; @@ -145,7 +145,7 @@ public void Immediate_ArgumentChecking_More() } #if !NO_THREAD - [Fact(Skip="Ignored")] + [Fact(Skip = "Ignored")] public void Immediate_ScheduleActionDue() { var id = Thread.CurrentThread.ManagedThreadId; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/NewThreadSchedulerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/NewThreadSchedulerTest.cs index 750627ca50..181791b5ba 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/NewThreadSchedulerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/NewThreadSchedulerTest.cs @@ -5,7 +5,6 @@ using System; using System.Diagnostics; using System.Reactive.Concurrency; -using System.Reactive.Disposables; using System.Threading; using Microsoft.Reactive.Testing; using Xunit; @@ -19,11 +18,11 @@ public class NewThreadSchedulerTest public void NewThread_ArgumentChecking() { ReactiveAssert.Throws(() => new NewThreadScheduler(null)); - ReactiveAssert.Throws(() => NewThreadScheduler.Default.Schedule(42, default(Func))); - ReactiveAssert.Throws(() => NewThreadScheduler.Default.Schedule(42, DateTimeOffset.Now, default(Func))); - ReactiveAssert.Throws(() => NewThreadScheduler.Default.Schedule(42, TimeSpan.Zero, default(Func))); - ReactiveAssert.Throws(() => NewThreadScheduler.Default.SchedulePeriodic(42, TimeSpan.FromSeconds(1), default(Func))); - ReactiveAssert.Throws(() => NewThreadScheduler.Default.ScheduleLongRunning(42, default(Action))); + ReactiveAssert.Throws(() => NewThreadScheduler.Default.Schedule(42, default)); + ReactiveAssert.Throws(() => NewThreadScheduler.Default.Schedule(42, DateTimeOffset.Now, default)); + ReactiveAssert.Throws(() => NewThreadScheduler.Default.Schedule(42, TimeSpan.Zero, default)); + ReactiveAssert.Throws(() => NewThreadScheduler.Default.SchedulePeriodic(42, TimeSpan.FromSeconds(1), default)); + ReactiveAssert.Throws(() => NewThreadScheduler.Default.ScheduleLongRunning(42, default)); ReactiveAssert.Throws(() => NewThreadScheduler.Default.SchedulePeriodic(42, TimeSpan.FromSeconds(-1), _ => _)); } @@ -75,11 +74,15 @@ public void NewThread_Periodic() var d = NewThreadScheduler.Default.SchedulePeriodic(TimeSpan.FromMilliseconds(25), () => { if (Interlocked.Increment(ref n) == 10) + { e.Set(); + } }); if (!e.WaitOne(10000)) + { Assert.True(false); + } d.Dispose(); } @@ -96,7 +99,9 @@ public void NewThread_Periodic_NonReentrant() try { if (Interlocked.Increment(ref n) > 1) // Without an AsyncLock this would fail. + { fail = true; + } Thread.Sleep(100); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ScheduledItemTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ScheduledItemTest.cs index 63c0e8f1ef..cb4f54ac94 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ScheduledItemTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ScheduledItemTest.cs @@ -11,18 +11,18 @@ namespace ReactiveTests { - + public class ScheduledItemTest : ReactiveTest { [Fact] public void ArgumentChecking() { - ReactiveAssert.Throws(() => new ScheduledItem(default(IScheduler), 42, (x, y) => Disposable.Empty, DateTimeOffset.Now)); - ReactiveAssert.Throws(() => new ScheduledItem(Scheduler.Default, 42, default(Func), DateTimeOffset.Now)); + ReactiveAssert.Throws(() => new ScheduledItem(default, 42, (x, y) => Disposable.Empty, DateTimeOffset.Now)); + ReactiveAssert.Throws(() => new ScheduledItem(Scheduler.Default, 42, default, DateTimeOffset.Now)); - ReactiveAssert.Throws(() => new ScheduledItem(default(IScheduler), 42, (x, y) => Disposable.Empty, DateTimeOffset.Now, Comparer.Default)); - ReactiveAssert.Throws(() => new ScheduledItem(Scheduler.Default, 42, default(Func), DateTimeOffset.Now, Comparer.Default)); - ReactiveAssert.Throws(() => new ScheduledItem(Scheduler.Default, 42, (x, y) => Disposable.Empty, DateTimeOffset.Now, default(IComparer))); + ReactiveAssert.Throws(() => new ScheduledItem(default, 42, (x, y) => Disposable.Empty, DateTimeOffset.Now, Comparer.Default)); + ReactiveAssert.Throws(() => new ScheduledItem(Scheduler.Default, 42, default, DateTimeOffset.Now, Comparer.Default)); + ReactiveAssert.Throws(() => new ScheduledItem(Scheduler.Default, 42, (x, y) => Disposable.Empty, DateTimeOffset.Now, default)); } [Fact] @@ -107,7 +107,7 @@ public void Equalities() Assert.NotEqual(si1.GetHashCode(), si3.GetHashCode()); } - class SI : ScheduledItem + private class SI : ScheduledItem { public SI(int dueTime) : base(dueTime, Comparer.Default) @@ -120,7 +120,7 @@ protected override IDisposable InvokeCore() } } - class SI2 : ScheduledItem + private class SI2 : ScheduledItem { private readonly int _value; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SchedulerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SchedulerTest.cs index 21f90603f7..06748d9bb6 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SchedulerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SchedulerTest.cs @@ -23,7 +23,7 @@ namespace ReactiveTests.Tests { - + public class SchedulerTest : ReactiveTest { #region IScheduler @@ -32,54 +32,54 @@ public class SchedulerTest : ReactiveTest public void Scheduler_ArgumentChecks() { var ms = new MyScheduler(); - ReactiveAssert.Throws(() => Scheduler.Schedule(default(IScheduler), a => { })); - ReactiveAssert.Throws(() => Scheduler.Schedule(default(IScheduler), () => { })); - ReactiveAssert.Throws(() => Scheduler.ScheduleAction(default(IScheduler), new object(), state => { })); - ReactiveAssert.Throws(() => Scheduler.Schedule(default(IScheduler), 1, (a, s) => { })); + ReactiveAssert.Throws(() => Scheduler.Schedule(default, a => { })); + ReactiveAssert.Throws(() => Scheduler.Schedule(default, () => { })); + ReactiveAssert.Throws(() => Scheduler.ScheduleAction(default, new object(), state => { })); + ReactiveAssert.Throws(() => Scheduler.Schedule(default, 1, (a, s) => { })); ReactiveAssert.Throws(() => Scheduler.Schedule(ms, default(Action))); - ReactiveAssert.Throws(() => Scheduler.Schedule(ms, 1, default(Action>))); - ReactiveAssert.Throws(() => Scheduler.Schedule(default(IScheduler), DateTimeOffset.Now, a => { })); - ReactiveAssert.Throws(() => Scheduler.Schedule(default(IScheduler), DateTimeOffset.Now, () => { })); - ReactiveAssert.Throws(() => Scheduler.Schedule(default(IScheduler), 1, DateTimeOffset.Now, (a, s) => { })); + ReactiveAssert.Throws(() => Scheduler.Schedule(ms, 1, default)); + ReactiveAssert.Throws(() => Scheduler.Schedule(default, DateTimeOffset.Now, a => { })); + ReactiveAssert.Throws(() => Scheduler.Schedule(default, DateTimeOffset.Now, () => { })); + ReactiveAssert.Throws(() => Scheduler.Schedule(default, 1, DateTimeOffset.Now, (a, s) => { })); ReactiveAssert.Throws(() => Scheduler.Schedule(ms, DateTimeOffset.Now, default(Action>))); - ReactiveAssert.Throws(() => Scheduler.Schedule(ms, 1, DateTimeOffset.Now, default(Action>))); - ReactiveAssert.Throws(() => Scheduler.Schedule(default(IScheduler), TimeSpan.Zero, a => { })); - ReactiveAssert.Throws(() => Scheduler.Schedule(default(IScheduler), TimeSpan.Zero, () => { })); - ReactiveAssert.Throws(() => Scheduler.Schedule(default(IScheduler), 1, TimeSpan.Zero, (a, s) => { })); + ReactiveAssert.Throws(() => Scheduler.Schedule(ms, 1, DateTimeOffset.Now, default)); + ReactiveAssert.Throws(() => Scheduler.Schedule(default, TimeSpan.Zero, a => { })); + ReactiveAssert.Throws(() => Scheduler.Schedule(default, TimeSpan.Zero, () => { })); + ReactiveAssert.Throws(() => Scheduler.Schedule(default, 1, TimeSpan.Zero, (a, s) => { })); ReactiveAssert.Throws(() => Scheduler.Schedule(ms, TimeSpan.Zero, default(Action>))); - ReactiveAssert.Throws(() => Scheduler.Schedule(ms, 1, TimeSpan.Zero, default(Action>))); + ReactiveAssert.Throws(() => Scheduler.Schedule(ms, 1, TimeSpan.Zero, default)); } [Fact] public void Schedulers_ArgumentChecks() { ReactiveAssert.Throws(() => Scheduler.CurrentThread.Schedule(default(Action))); - ReactiveAssert.Throws(() => Scheduler.CurrentThread.ScheduleAction(new object(), default(Action))); + ReactiveAssert.Throws(() => Scheduler.CurrentThread.ScheduleAction(new object(), default)); ReactiveAssert.Throws(() => Scheduler.CurrentThread.Schedule(TimeSpan.Zero, default(Action))); ReactiveAssert.Throws(() => Scheduler.CurrentThread.Schedule(DateTimeOffset.MaxValue, default(Action))); #if DESKTOPCLR ReactiveAssert.Throws(() => DispatcherScheduler.Instance.Schedule(default(Action))); - ReactiveAssert.Throws(() => DispatcherScheduler.Instance.ScheduleAction(new object(), default(Action))); + ReactiveAssert.Throws(() => DispatcherScheduler.Instance.ScheduleAction(new object(), default)); ReactiveAssert.Throws(() => DispatcherScheduler.Instance.Schedule(TimeSpan.Zero, default(Action))); ReactiveAssert.Throws(() => DispatcherScheduler.Instance.Schedule(DateTimeOffset.MaxValue, default(Action))); #endif ReactiveAssert.Throws(() => Scheduler.Immediate.Schedule(default(Action))); - ReactiveAssert.Throws(() => Scheduler.Immediate.ScheduleAction(new object(), default(Action))); + ReactiveAssert.Throws(() => Scheduler.Immediate.ScheduleAction(new object(), default)); ReactiveAssert.Throws(() => Scheduler.Immediate.Schedule(TimeSpan.Zero, default(Action))); ReactiveAssert.Throws(() => Scheduler.Immediate.Schedule(DateTimeOffset.MaxValue, default(Action))); ReactiveAssert.Throws(() => NewThreadScheduler.Default.Schedule(default(Action))); - ReactiveAssert.Throws(() => NewThreadScheduler.Default.ScheduleAction(new object(), default(Action))); + ReactiveAssert.Throws(() => NewThreadScheduler.Default.ScheduleAction(new object(), default)); ReactiveAssert.Throws(() => NewThreadScheduler.Default.Schedule(TimeSpan.Zero, default(Action))); ReactiveAssert.Throws(() => NewThreadScheduler.Default.Schedule(DateTimeOffset.MaxValue, default(Action))); ReactiveAssert.Throws(() => TaskPoolScheduler.Default.Schedule(default(Action))); - ReactiveAssert.Throws(() => TaskPoolScheduler.Default.ScheduleAction(new object(), default(Action))); + ReactiveAssert.Throws(() => TaskPoolScheduler.Default.ScheduleAction(new object(), default)); ReactiveAssert.Throws(() => TaskPoolScheduler.Default.Schedule(TimeSpan.Zero, default(Action))); ReactiveAssert.Throws(() => TaskPoolScheduler.Default.Schedule(DateTimeOffset.MaxValue, default(Action))); ReactiveAssert.Throws(() => DefaultScheduler.Instance.Schedule(default(Action))); - ReactiveAssert.Throws(() => DefaultScheduler.Instance.ScheduleAction(new object(), default(Action))); + ReactiveAssert.Throws(() => DefaultScheduler.Instance.ScheduleAction(new object(), default)); ReactiveAssert.Throws(() => DefaultScheduler.Instance.Schedule(TimeSpan.Zero, default(Action))); ReactiveAssert.Throws(() => DefaultScheduler.Instance.Schedule(DateTimeOffset.MaxValue, default(Action))); - ReactiveAssert.Throws(() => DefaultScheduler.Instance.SchedulePeriodic(42, TimeSpan.FromSeconds(1), default(Func))); + ReactiveAssert.Throws(() => DefaultScheduler.Instance.SchedulePeriodic(42, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => DefaultScheduler.Instance.SchedulePeriodic(42, TimeSpan.FromSeconds(-1), _ => _)); #if HAS_WINFORMS var lbl = new Label(); @@ -90,7 +90,21 @@ public void Schedulers_ArgumentChecks() #endif var ctx = new SynchronizationContext(); ReactiveAssert.Throws(() => new SynchronizationContextScheduler(ctx).Schedule(default(Action))); - ReactiveAssert.Throws(() => new SynchronizationContextScheduler(ctx).ScheduleAction(new object(), default(Action))); + + /* Unmerged change from project 'Tests.System.Reactive(netcoreapp2.0)' + Before: + ReactiveAssert.Throws(() => new SynchronizationContextScheduler(ctx).ScheduleAction(new object(), default(Action))); + After: + ReactiveAssert.Throws(() => new SynchronizationContextScheduler(ctx).ScheduleAction(new object(), default))); + */ + + /* Unmerged change from project 'Tests.System.Reactive(net46)' + Before: + ReactiveAssert.Throws(() => new SynchronizationContextScheduler(ctx).ScheduleAction(new object(), default(Action))); + After: + ReactiveAssert.Throws(() => new SynchronizationContextScheduler(ctx).ScheduleAction(new object(), default))); + */ + ReactiveAssert.Throws(() => new SynchronizationContextScheduler(ctx).ScheduleAction(new object(), default)); ReactiveAssert.Throws(() => new SynchronizationContextScheduler(ctx).Schedule(TimeSpan.Zero, default(Action))); ReactiveAssert.Throws(() => new SynchronizationContextScheduler(ctx).Schedule(DateTimeOffset.MaxValue, default(Action))); } @@ -109,7 +123,7 @@ public void Scheduler_ScheduleRecursive() { var ms = new MyScheduler(); var i = 0; - Scheduler.Schedule(ms, a => { if (++i < 10) a(); }); + Scheduler.Schedule(ms, a => { if (++i < 10) { a(); } }); Assert.Equal(10, i); } @@ -139,7 +153,7 @@ public void Scheduler_ScheduleWithTimeRecursive() var now = DateTimeOffset.Now; var i = 0; var ms = new MyScheduler(now) { Check = (a, s, t) => { Assert.True(t == TimeSpan.Zero); } }; - Scheduler.Schedule(ms, now, a => { if (++i < 10) a(now); }); + Scheduler.Schedule(ms, now, a => { if (++i < 10) { a(now); } }); Assert.True(ms.WaitCycles == 0); Assert.Equal(10, i); } @@ -161,7 +175,7 @@ public void Scheduler_ScheduleWithTimeSpanRecursive() var now = DateTimeOffset.Now; var ms = new MyScheduler(now) { Check = (a, s, t) => { Assert.True(t < TimeSpan.FromTicks(10)); } }; var i = 0; - Scheduler.Schedule(ms, TimeSpan.Zero, a => { if (++i < 10) a(TimeSpan.FromTicks(i)); }); + Scheduler.Schedule(ms, TimeSpan.Zero, a => { if (++i < 10) { a(TimeSpan.FromTicks(i)); } }); Assert.True(ms.WaitCycles == Enumerable.Range(1, 9).Sum()); Assert.Equal(10, i); } @@ -174,7 +188,9 @@ public void Scheduler_StateThreading() { lst.Add(i); if (i < 9) + { a(i + 1); + } }); Assert.True(lst.SequenceEqual(Enumerable.Range(0, 10))); @@ -231,7 +247,14 @@ private void Scheduler_Builtins_NoPlib() public void Scheduler_LongRunning_ArgumentChecking() { ReactiveAssert.Throws(() => Scheduler.ScheduleLongRunning(null, c => { })); - ReactiveAssert.Throws(() => Scheduler.ScheduleLongRunning(ThreadPoolScheduler.Instance, default(Action))); + + /* Unmerged change from project 'Tests.System.Reactive(net46)' + Before: + ReactiveAssert.Throws(() => Scheduler.ScheduleLongRunning(ThreadPoolScheduler.Instance, default(Action))); + After: + ReactiveAssert.Throws(() => Scheduler.ScheduleLongRunning(ThreadPoolScheduler.Instance, default)); + */ + ReactiveAssert.Throws(() => Scheduler.ScheduleLongRunning(ThreadPoolScheduler.Instance, default)); } [Fact] @@ -239,7 +262,7 @@ public void Scheduler_Periodic_ArgumentChecking() { ReactiveAssert.Throws(() => Scheduler.SchedulePeriodic(null, TimeSpan.FromSeconds(1), () => { })); ReactiveAssert.Throws(() => Scheduler.SchedulePeriodic(ThreadPoolScheduler.Instance, TimeSpan.FromSeconds(-1), () => { })); - ReactiveAssert.Throws(() => Scheduler.SchedulePeriodic(ThreadPoolScheduler.Instance, TimeSpan.FromSeconds(1), default(Action))); + ReactiveAssert.Throws(() => Scheduler.SchedulePeriodic(ThreadPoolScheduler.Instance, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => Scheduler.SchedulePeriodic(null, 42, TimeSpan.FromSeconds(1), _ => { })); ReactiveAssert.Throws(() => Scheduler.SchedulePeriodic(ThreadPoolScheduler.Instance, 42, TimeSpan.FromSeconds(-1), _ => { })); @@ -247,7 +270,7 @@ public void Scheduler_Periodic_ArgumentChecking() ReactiveAssert.Throws(() => Scheduler.SchedulePeriodic(null, 42, TimeSpan.FromSeconds(1), _ => _)); ReactiveAssert.Throws(() => Scheduler.SchedulePeriodic(ThreadPoolScheduler.Instance, 42, TimeSpan.FromSeconds(-1), _ => _)); - ReactiveAssert.Throws(() => Scheduler.SchedulePeriodic(ThreadPoolScheduler.Instance, 42, TimeSpan.FromSeconds(1), default(Func))); + ReactiveAssert.Throws(() => Scheduler.SchedulePeriodic(ThreadPoolScheduler.Instance, 42, TimeSpan.FromSeconds(1), default)); } #endif @@ -268,7 +291,10 @@ public void Scheduler_LongRunning1() var d = s.ScheduleLongRunning(42, (state, cancel) => { while (!cancel.IsDisposed) + { x.Set(); + } + e.Set(); }); @@ -289,7 +315,10 @@ public void Scheduler_LongRunning2() var d = s.ScheduleLongRunning(cancel => { while (!cancel.IsDisposed) + { x.Set(); + } + e.Set(); }); @@ -316,7 +345,9 @@ public void Scheduler_Periodic1() var d = ThreadPoolScheduler.Instance.SchedulePeriodic(TimeSpan.FromMilliseconds(50), () => { if (n++ == 10) + { e.Set(); + } }); e.WaitOne(); @@ -334,7 +365,9 @@ public void Scheduler_Periodic2() Assert.Equal(42, x); if (n++ == 10) + { e.Set(); + } }); e.WaitOne(); @@ -370,7 +403,9 @@ private static void Scheduler_Periodic_HostLifecycleManagement_Callback() var d = Observable.Interval(TimeSpan.FromMilliseconds(100), s).Subscribe(_ => { if (n++ == 10) + { e.Set(); + } }); hln.OnSuspending(); @@ -395,7 +430,7 @@ private static void Scheduler_Periodic_HostLifecycleManagement_Callback() } } - class PEP : IPlatformEnlightenmentProvider + private class PEP : IPlatformEnlightenmentProvider { private readonly IPlatformEnlightenmentProvider _old; private readonly IHostLifecycleNotifications _hln; @@ -410,37 +445,33 @@ public T GetService(params object[] args) where T : class { if (typeof(T) == typeof(IHostLifecycleNotifications)) { - return (T)(object)_hln; + return (T)_hln; } return _old.GetService(args); } } - class HLN : IHostLifecycleNotifications + private class HLN : IHostLifecycleNotifications { public event EventHandler Suspending; public event EventHandler Resuming; public void OnSuspending() { - var s = Suspending; - if (s != null) - s(this, null); + Suspending?.Invoke(this, null); } public void OnResuming() { - var s = Resuming; - if (s != null) - s(this, null); + Resuming?.Invoke(this, null); } } #endif #endif -#endregion + #endregion #region DisableOptimizations @@ -448,14 +479,14 @@ public void OnResuming() [Fact] public void DisableOptimizations_ArgumentChecking() { - ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(default(IScheduler))); - ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(default(IScheduler), new Type[0])); + ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(default)); + ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(default, new Type[0])); #if !WINDOWS && !NO_THREAD - ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(ThreadPoolScheduler.Instance, default(Type[]))); + ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(ThreadPoolScheduler.Instance, default)); #endif - ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(Scheduler.Default).Schedule(42, default(Func))); - ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(Scheduler.Default).Schedule(42, TimeSpan.FromSeconds(1), default(Func))); - ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(Scheduler.Default).Schedule(42, DateTimeOffset.Now, default(Func))); + ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(Scheduler.Default).Schedule(42, default)); + ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(Scheduler.Default).Schedule(42, TimeSpan.FromSeconds(1), default)); + ReactiveAssert.Throws(() => Scheduler.DisableOptimizations(Scheduler.Default).Schedule(42, DateTimeOffset.Now, default)); } [Fact] @@ -602,7 +633,7 @@ public void DisableOptimizations_UnknownService() Assert.Null(((IServiceProvider)d).GetService(typeof(bool))); } - class MyScheduler : IScheduler + private class MyScheduler : IScheduler { public MyScheduler() : this(DateTimeOffset.Now) @@ -648,12 +679,12 @@ public IDisposable Schedule(T state, DateTimeOffset dueTime, Func(() => Scheduler.Catch(default(IScheduler), _ => true)); - ReactiveAssert.Throws(() => Scheduler.Catch(Scheduler.Default, default(Func))); + ReactiveAssert.Throws(() => Scheduler.Catch(default, _ => true)); + ReactiveAssert.Throws(() => Scheduler.Catch(Scheduler.Default, default)); - ReactiveAssert.Throws(() => Scheduler.Catch(Scheduler.Default, _ => true).Schedule(42, default(Func))); - ReactiveAssert.Throws(() => Scheduler.Catch(Scheduler.Default, _ => true).Schedule(42, TimeSpan.FromSeconds(1), default(Func))); - ReactiveAssert.Throws(() => Scheduler.Catch(Scheduler.Default, _ => true).Schedule(42, DateTimeOffset.Now, default(Func))); + ReactiveAssert.Throws(() => Scheduler.Catch(Scheduler.Default, _ => true).Schedule(42, default)); + ReactiveAssert.Throws(() => Scheduler.Catch(Scheduler.Default, _ => true).Schedule(42, TimeSpan.FromSeconds(1), default)); + ReactiveAssert.Throws(() => Scheduler.Catch(Scheduler.Default, _ => true).Schedule(42, DateTimeOffset.Now, default)); } [Fact] @@ -775,8 +806,10 @@ public void Catch_Custom_LongRunning_Rethrow() [Fact] public void Catch_Custom_Periodic_Regular() { - var scheduler = new MyExceptionScheduler(_ => { }); - scheduler.PeriodicStopped = new ManualResetEvent(false); + var scheduler = new MyExceptionScheduler(_ => { }) + { + PeriodicStopped = new ManualResetEvent(false) + }; var @catch = scheduler.Catch(_ => true); var per = (ISchedulerPeriodic)((IServiceProvider)@catch).GetService(typeof(ISchedulerPeriodic)); @@ -785,7 +818,9 @@ public void Catch_Custom_Periodic_Regular() var d = per.SchedulePeriodic(0, TimeSpan.Zero, x => { if (x > 10) + { madeProgress.Set(); + } return x + 1; }); @@ -800,8 +835,10 @@ public void Catch_Custom_Periodic_Uncaught1() { var err = default(Exception); var done = new ManualResetEvent(false); - var scheduler = new MyExceptionScheduler(ex_ => { err = ex_; done.Set(); }); - scheduler.PeriodicStopped = new ManualResetEvent(false); + var scheduler = new MyExceptionScheduler(ex_ => { err = ex_; done.Set(); }) + { + PeriodicStopped = new ManualResetEvent(false) + }; var @catch = scheduler.Catch(_ => true); var per = (ISchedulerPeriodic)((IServiceProvider)@catch).GetService(typeof(ISchedulerPeriodic)); @@ -822,8 +859,10 @@ public void Catch_Custom_Periodic_Uncaught2() { var err = default(Exception); var done = new ManualResetEvent(false); - var scheduler = new MyExceptionScheduler(ex_ => { err = ex_; done.Set(); }); - scheduler.PeriodicStopped = new ManualResetEvent(false); + var scheduler = new MyExceptionScheduler(ex_ => { err = ex_; done.Set(); }) + { + PeriodicStopped = new ManualResetEvent(false) + }; var @catch = scheduler.Catch(_ => false); var per = (ISchedulerPeriodic)((IServiceProvider)@catch).GetService(typeof(ISchedulerPeriodic)); @@ -843,8 +882,10 @@ public void Catch_Custom_Periodic_Uncaught2() public void Catch_Custom_Periodic_Caught() { var err = default(Exception); - var scheduler = new MyExceptionScheduler(ex_ => err = ex_); - scheduler.PeriodicStopped = new ManualResetEvent(false); + var scheduler = new MyExceptionScheduler(ex_ => err = ex_) + { + PeriodicStopped = new ManualResetEvent(false) + }; var caught = new ManualResetEvent(false); var @catch = scheduler.Catch(_ => { caught.Set(); return true; }); @@ -860,7 +901,7 @@ public void Catch_Custom_Periodic_Caught() Assert.Null(err); } - class MyExceptionScheduler : LocalScheduler, ISchedulerLongRunning, ISchedulerPeriodic + private class MyExceptionScheduler : LocalScheduler, ISchedulerLongRunning, ISchedulerPeriodic { private readonly Action _onError; @@ -915,10 +956,13 @@ public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func< try { var s = state; - for (int i = 0; true; i++) + for (var i = 0; true; i++) { if (i > 100 /* mimic delayed cancellation */ && b.IsDisposed) + { break; + } + s = action(s); } } @@ -947,7 +991,7 @@ public void InvalidService_Null() Assert.Null(((IServiceProvider)s).GetService(typeof(IAsyncResult))); } - class MySchedulerWithoutServices : LocalScheduler + private class MySchedulerWithoutServices : LocalScheduler { public override IDisposable Schedule(TState state, TimeSpan dueTime, Func action) { @@ -964,7 +1008,7 @@ public void DetectServices_Null_1() Assert.Null(Scheduler.AsStopwatchProvider(s)); } - class MyDumbScheduler1 : IScheduler + private class MyDumbScheduler1 : IScheduler { public DateTimeOffset Now { @@ -1033,7 +1077,7 @@ public void DetectServices_Found() } } - class MyDumbScheduler2 : IScheduler, IServiceProvider + private class MyDumbScheduler2 : IScheduler, IServiceProvider { private readonly Dictionary _services; @@ -1065,13 +1109,15 @@ public IDisposable Schedule(TState state, DateTimeOffset dueTime, Func(TState state, Action action) { @@ -1079,7 +1125,7 @@ public IDisposable ScheduleLongRunning(TState state, Action(TState state, TimeSpan period, Func action) { @@ -1096,22 +1142,22 @@ public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func< } #endregion - + [Fact] public void SchedulerAsync_Yield_ArgumentChecking() { - ReactiveAssert.Throws(() => Scheduler.Yield(default(IScheduler))); - ReactiveAssert.Throws(() => Scheduler.Yield(default(IScheduler), CancellationToken.None)); + ReactiveAssert.Throws(() => Scheduler.Yield(default)); + ReactiveAssert.Throws(() => Scheduler.Yield(default, CancellationToken.None)); } [Fact] public void SchedulerAsync_Sleep_ArgumentChecking() { - ReactiveAssert.Throws(() => Scheduler.Sleep(default(IScheduler), TimeSpan.Zero)); - ReactiveAssert.Throws(() => Scheduler.Sleep(default(IScheduler), TimeSpan.Zero, CancellationToken.None)); + ReactiveAssert.Throws(() => Scheduler.Sleep(default, TimeSpan.Zero)); + ReactiveAssert.Throws(() => Scheduler.Sleep(default, TimeSpan.Zero, CancellationToken.None)); - ReactiveAssert.Throws(() => Scheduler.Sleep(default(IScheduler), DateTimeOffset.MinValue)); - ReactiveAssert.Throws(() => Scheduler.Sleep(default(IScheduler), DateTimeOffset.MinValue, CancellationToken.None)); + ReactiveAssert.Throws(() => Scheduler.Sleep(default, DateTimeOffset.MinValue)); + ReactiveAssert.Throws(() => Scheduler.Sleep(default, DateTimeOffset.MinValue, CancellationToken.None)); } [Fact] @@ -1513,7 +1559,7 @@ public void SchedulerAsync_ScheduleAsync_SyncCtx() } } - class MySyncCtx : SynchronizationContext + private class MySyncCtx : SynchronizationContext { public override void Post(SendOrPostCallback d, object state) { @@ -1522,6 +1568,6 @@ public override void Post(SendOrPostCallback d, object state) } #endif - + } } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/StopwatchTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/StopwatchTest.cs index f1be4c556b..5db76047e1 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/StopwatchTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/StopwatchTest.cs @@ -2,14 +2,11 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; using System.Reactive.Concurrency; -using System.Threading; -using Xunit; namespace ReactiveTests.Tests { - static class StopwatchTest + internal static class StopwatchTest { public static void Run(IStopwatchProvider stopwatchProvider) { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SynchronizationContextSchedulerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SynchronizationContextSchedulerTest.cs index b0597ec440..c7cd3b2543 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SynchronizationContextSchedulerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SynchronizationContextSchedulerTest.cs @@ -12,7 +12,7 @@ namespace ReactiveTests.Tests { - + public class SynchronizationContextSchedulerTest { [Fact] @@ -23,9 +23,9 @@ public void SynchronizationContext_ArgumentChecking() ReactiveAssert.Throws(() => new SynchronizationContextScheduler(null)); ReactiveAssert.Throws(() => new SynchronizationContextScheduler(null, true)); - ReactiveAssert.Throws(() => s.Schedule(42, default(Func))); - ReactiveAssert.Throws(() => s.Schedule(42, DateTimeOffset.Now, default(Func))); - ReactiveAssert.Throws(() => s.Schedule(42, TimeSpan.Zero, default(Func))); + ReactiveAssert.Throws(() => s.Schedule(42, default)); + ReactiveAssert.Throws(() => s.Schedule(42, DateTimeOffset.Now, default)); + ReactiveAssert.Throws(() => s.Schedule(42, TimeSpan.Zero, default)); } [Fact] @@ -112,7 +112,7 @@ public void SynchronizationContext_ScheduleActionDue() Assert.True(ms.Count == 1); } - class MySync : SynchronizationContext + private class MySync : SynchronizationContext { public int Count { get; private set; } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SynchronizationTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SynchronizationTest.cs index e37d7a3cd5..2582199d4a 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SynchronizationTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/SynchronizationTest.cs @@ -6,12 +6,12 @@ using System.Reactive.Concurrency; using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; +using Xunit; namespace ReactiveTests.Tests { - + public class SynchronizationTests { [Fact] @@ -40,7 +40,7 @@ public void Synchronization_Synchronize_ArgumentChecking() ReactiveAssert.Throws(() => Synchronization.Synchronize(DummyObservable.Instance, null)); } - class MySyncCtx : SynchronizationContext + private class MySyncCtx : SynchronizationContext { } } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/TaskPoolSchedulerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/TaskPoolSchedulerTest.cs index 550ecee59c..21e172c916 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/TaskPoolSchedulerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/TaskPoolSchedulerTest.cs @@ -10,17 +10,17 @@ namespace ReactiveTests.Tests { - + public class TaskPoolSchedulerTest { [Fact] public void TaskPool_ArgumentChecking() { ReactiveAssert.Throws(() => new TaskPoolScheduler(null)); - ReactiveAssert.Throws(() => TaskPoolScheduler.Default.Schedule(42, default(Func))); - ReactiveAssert.Throws(() => TaskPoolScheduler.Default.Schedule(42, DateTimeOffset.Now, default(Func))); - ReactiveAssert.Throws(() => TaskPoolScheduler.Default.Schedule(42, TimeSpan.Zero, default(Func))); - ReactiveAssert.Throws(() => TaskPoolScheduler.Default.SchedulePeriodic(42, TimeSpan.FromSeconds(1), default(Func))); + ReactiveAssert.Throws(() => TaskPoolScheduler.Default.Schedule(42, default)); + ReactiveAssert.Throws(() => TaskPoolScheduler.Default.Schedule(42, DateTimeOffset.Now, default)); + ReactiveAssert.Throws(() => TaskPoolScheduler.Default.Schedule(42, TimeSpan.Zero, default)); + ReactiveAssert.Throws(() => TaskPoolScheduler.Default.SchedulePeriodic(42, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => TaskPoolScheduler.Default.SchedulePeriodic(42, TimeSpan.FromSeconds(-1), _ => _)); } @@ -85,16 +85,25 @@ public void TaskPool_ScheduleLongRunning() var d = TaskPoolScheduler.Default.ScheduleLongRunning(42, (x, cancel) => { while (!cancel.IsDisposed) + { lock (gate) + { n++; + } + } + e.Set(); }); while (true) { lock (gate) + { if (n >= 10) + { break; + } + } Thread.Sleep(10); } @@ -124,11 +133,15 @@ public void TaskPool_Periodic() var d = TaskPoolScheduler.Default.SchedulePeriodic(TimeSpan.FromMilliseconds(25), () => { if (Interlocked.Increment(ref n) == 10) + { e.Set(); + } }); if (!e.WaitOne(10000)) + { Assert.True(false); + } d.Dispose(); } @@ -145,7 +158,9 @@ public void TaskPool_Periodic_NonReentrant() try { if (Interlocked.Increment(ref n) > 1) // Without an AsyncLock this would fail. + { fail = true; + } Thread.Sleep(100); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ThreadPoolSchedulerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ThreadPoolSchedulerTest.cs index 9c2c47a77d..e0dc635727 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ThreadPoolSchedulerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/ThreadPoolSchedulerTest.cs @@ -14,15 +14,15 @@ namespace ReactiveTests.Tests { - + public class ThreadPoolSchedulerTest { [Fact] public void Schedule_ArgumentChecking() { - ReactiveAssert.Throws(() => ThreadPoolScheduler.Instance.Schedule(42, default(Func))); - ReactiveAssert.Throws(() => ThreadPoolScheduler.Instance.Schedule(42, DateTimeOffset.Now, default(Func))); - ReactiveAssert.Throws(() => ThreadPoolScheduler.Instance.Schedule(42, TimeSpan.Zero, default(Func))); + ReactiveAssert.Throws(() => ThreadPoolScheduler.Instance.Schedule(42, default)); + ReactiveAssert.Throws(() => ThreadPoolScheduler.Instance.Schedule(42, DateTimeOffset.Now, default)); + ReactiveAssert.Throws(() => ThreadPoolScheduler.Instance.Schedule(42, TimeSpan.Zero, default)); } [Fact] @@ -60,7 +60,7 @@ public void ProperRooting_NoGC_SingleShot() var tp = ThreadPoolScheduler.Instance; var N = 100; var cd = new CountdownEvent(N); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { tp.Schedule(TimeSpan.FromMilliseconds(100 + i), () => { cd.Signal(); }); } @@ -88,7 +88,7 @@ public void ProperRooting_NoGC_Periodic() var N = 5; var e = new ManualResetEvent(false); var n = 0; - var d = tp.SchedulePeriodic(TimeSpan.FromMilliseconds(80), () => { if (Interlocked.Increment(ref n) == N) e.Set(); }); + var d = tp.SchedulePeriodic(TimeSpan.FromMilliseconds(80), () => { if (Interlocked.Increment(ref n) == N) { e.Set(); } }); Assert.True(e.WaitOne(TimeSpan.FromMinutes(1))); @@ -144,7 +144,7 @@ public void ScheduleActionCancel() [Fact] public void ScheduleLongRunning_ArgumentChecking() { - ReactiveAssert.Throws(() => ThreadPoolScheduler.Instance.ScheduleLongRunning(42, default(Action))); + ReactiveAssert.Throws(() => ThreadPoolScheduler.Instance.ScheduleLongRunning(42, default)); } [Fact] @@ -172,7 +172,9 @@ public void ScheduleLongRunningCancel() for (n = 0; !cancel.IsDisposed; n++) { if (n == 10) + { started.Set(); + } } stopped.Set(); @@ -231,7 +233,9 @@ private void Periodic_Impl(TimeSpan period) lock (gate) { if (n++ == 10) + { e.Set(); + } } lst.Add(x); @@ -248,12 +252,16 @@ private void Periodic_Impl(TimeSpan period) do { lock (gate) + { m = n; + } Thread.Sleep(50); lock (gate) + { k = n; + } } while (m != k && i++ < 10); // Wait for Dispose to reach the timer; should be almost instantaneous due to nop'ing out of the action. Assert.NotEqual(10, i); @@ -274,7 +282,9 @@ public void Periodic_NonReentrant() try { if (Interlocked.Increment(ref n) > 1) // Without an AsyncLock this would fail. + { fail = true; + } Thread.Sleep(100); @@ -302,7 +312,7 @@ public void No_ThreadPool_Starvation_Dispose() var N = Environment.ProcessorCount * 2; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var e = new ManualResetEvent(false); var f = new ManualResetEvent(false); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/VirtualSchedulerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/VirtualSchedulerTest.cs index a467890bcc..e79a01b4e4 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/VirtualSchedulerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Concurrency/VirtualSchedulerTest.cs @@ -14,10 +14,10 @@ namespace ReactiveTests.Tests { - + public class VirtualSchedulerTest { - class VirtualSchedulerTestScheduler : VirtualTimeScheduler + private class VirtualSchedulerTestScheduler : VirtualTimeScheduler { public VirtualSchedulerTestScheduler() { @@ -94,22 +94,22 @@ public void Virtual_ArgumentChecking() ReactiveAssert.Throws(() => new VirtualSchedulerTestScheduler("", null)); ReactiveAssert.Throws(() => new VirtualSchedulerTestScheduler().ScheduleRelative(0, 'a', null)); ReactiveAssert.Throws(() => new VirtualSchedulerTestScheduler().ScheduleAbsolute(0, "", null)); - ReactiveAssert.Throws(() => new VirtualSchedulerTestScheduler().Schedule(0, default(Func))); - ReactiveAssert.Throws(() => new VirtualSchedulerTestScheduler().Schedule(0, TimeSpan.Zero, default(Func))); - ReactiveAssert.Throws(() => new VirtualSchedulerTestScheduler().Schedule(0, DateTimeOffset.UtcNow, default(Func))); + ReactiveAssert.Throws(() => new VirtualSchedulerTestScheduler().Schedule(0, default)); + ReactiveAssert.Throws(() => new VirtualSchedulerTestScheduler().Schedule(0, TimeSpan.Zero, default)); + ReactiveAssert.Throws(() => new VirtualSchedulerTestScheduler().Schedule(0, DateTimeOffset.UtcNow, default)); - ReactiveAssert.Throws(() => VirtualTimeSchedulerExtensions.ScheduleAbsolute(default(VirtualSchedulerTestScheduler), "", () => {})); - ReactiveAssert.Throws(() => VirtualTimeSchedulerExtensions.ScheduleAbsolute(new VirtualSchedulerTestScheduler(), "", default(Action))); + ReactiveAssert.Throws(() => VirtualTimeSchedulerExtensions.ScheduleAbsolute(default(VirtualSchedulerTestScheduler), "", () => { })); + ReactiveAssert.Throws(() => VirtualTimeSchedulerExtensions.ScheduleAbsolute(new VirtualSchedulerTestScheduler(), "", default)); ReactiveAssert.Throws(() => VirtualTimeSchedulerExtensions.ScheduleRelative(default(VirtualSchedulerTestScheduler), 'a', () => { })); - ReactiveAssert.Throws(() => VirtualTimeSchedulerExtensions.ScheduleRelative(new VirtualSchedulerTestScheduler(), 'a', default(Action))); + ReactiveAssert.Throws(() => VirtualTimeSchedulerExtensions.ScheduleRelative(new VirtualSchedulerTestScheduler(), 'a', default)); } [Fact] public void Historical_ArgumentChecking() { - ReactiveAssert.Throws(() => new HistoricalScheduler(DateTime.Now, default(IComparer))); - ReactiveAssert.Throws(() => new HistoricalScheduler().ScheduleAbsolute(42, DateTime.Now, default(Func))); - ReactiveAssert.Throws(() => new HistoricalScheduler().ScheduleRelative(42, TimeSpan.FromSeconds(1), default(Func))); + ReactiveAssert.Throws(() => new HistoricalScheduler(DateTime.Now, default)); + ReactiveAssert.Throws(() => new HistoricalScheduler().ScheduleAbsolute(42, DateTime.Now, default)); + ReactiveAssert.Throws(() => new HistoricalScheduler().ScheduleRelative(42, TimeSpan.FromSeconds(1), default)); } #if !NO_THREAD @@ -144,7 +144,10 @@ public void Virtual_ThreadSafety() { if (Interlocked.Decrement(ref sync) != 0) { - while (Volatile.Read(ref sync) != 0) ; + while (Volatile.Read(ref sync) != 0) + { + ; + } } Task.Delay(10).Wait(); @@ -157,7 +160,10 @@ public void Virtual_ThreadSafety() { if (Interlocked.Decrement(ref sync) != 0) { - while (Volatile.Read(ref sync) != 0) ; + while (Volatile.Read(ref sync) != 0) + { + ; + } } while (watch.Elapsed < TimeSpan.FromSeconds(11)) diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ConnectableObservable.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ConnectableObservable.cs index 4b981ddcc6..88d7d73b4d 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ConnectableObservable.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ConnectableObservable.cs @@ -8,7 +8,7 @@ namespace ReactiveTests.Tests { - class ConnectableObservable : IConnectableObservable + internal class ConnectableObservable : IConnectableObservable { private IConnectableObservable _o; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ConnectableObservableTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ConnectableObservableTest.cs index 750cef89a6..21b26944b0 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ConnectableObservableTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ConnectableObservableTest.cs @@ -7,12 +7,12 @@ using System.Reactive.Linq; using System.Reactive.Subjects; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; +using Xunit; namespace ReactiveTests.Tests { - + public partial class ConnectableObservableTest : ReactiveTest { [Fact] @@ -25,7 +25,7 @@ public void ConnectableObservable_Creation() co2.Subscribe(x => y = x); Assert.NotEqual(1, y); - + co2.Connect(); Assert.Equal(1, y); } @@ -137,7 +137,7 @@ public void ConnectableObservable_DisconnectFuture() [Fact] public void ConnectableObservable_ArgumentChecking() { - ReactiveAssert.Throws(() => DummyObservable.Instance.Publish().Subscribe(default(IObserver))); + ReactiveAssert.Throws(() => DummyObservable.Instance.Publish().Subscribe(default)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/DefaultConcurrencyAbstractionLayerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/DefaultConcurrencyAbstractionLayerTest.cs index 9c8305835a..7811ec7a88 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/DefaultConcurrencyAbstractionLayerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/DefaultConcurrencyAbstractionLayerTest.cs @@ -13,7 +13,7 @@ namespace ReactiveTests.Tests { - + [Serializable] public class DefaultConcurrencyAbstractionLayerTest { @@ -115,7 +115,9 @@ public void StartPeriodicTimer() var state = (MarshalByRefCell)_domain.GetData("state"); if (n++ == 10) + { state.Value.Set(); + } }); }); @@ -151,7 +153,9 @@ public void StartPeriodicTimer_Fast() var state = (MarshalByRefCell)_domain.GetData("state"); if (n++ == 10) + { state.Value.Set(); + } }); }); @@ -261,7 +265,9 @@ public void CreateThread() var d = slr.ScheduleLongRunning(cancel => { while (!cancel.IsDisposed) + { ; + } w.Set(); }); @@ -281,9 +287,9 @@ public void CreateThread() [Fact] public void Cant_Locate_Scheduler() { - - Cant_Locate_Scheduler_NoPlib(); - + + Cant_Locate_Scheduler_NoPlib(); + } [MethodImpl(MethodImplOptions.NoInlining)] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Disposables/DisposableTests.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Disposables/DisposableTests.cs index 69c3a11be6..2cefef58ef 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Disposables/DisposableTests.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Disposables/DisposableTests.cs @@ -14,7 +14,7 @@ namespace ReactiveTests.Tests { - + public class DisposableTests { [Fact] @@ -27,7 +27,7 @@ public void AnonymousDisposable_Create() [Fact] public void AnonymousDisposable_CreateNull() { - Assert.Throws(typeof(ArgumentNullException), () => Disposable.Create(null)); + Assert.Throws(typeof(ArgumentNullException), () => Disposable.Create(null)); } [Fact] @@ -66,8 +66,10 @@ public void BooleanDisposable() [Fact] public void SingleAssignmentDisposable_SetNull() { - var d = new SingleAssignmentDisposable(); - d.Disposable = null; + var d = new SingleAssignmentDisposable + { + Disposable = null + }; } [Fact] @@ -115,8 +117,10 @@ public void SingleAssignmentDisposable_DisposeBeforeSet() [Fact] public void SingleAssignmentDisposable_SetMultipleTimes() { - var d = new SingleAssignmentDisposable(); - d.Disposable = Disposable.Empty; + var d = new SingleAssignmentDisposable + { + Disposable = Disposable.Empty + }; ReactiveAssert.Throws(() => { d.Disposable = Disposable.Empty; }); } @@ -132,7 +136,7 @@ public void CompositeDisposable_ArgumentChecking() [Fact] public void CompositeDisposable_Contains() { - var d1 = Disposable.Create(() => {} ); + var d1 = Disposable.Create(() => { }); var d2 = Disposable.Create(() => { }); var g = new CompositeDisposable(d1, d2); @@ -199,7 +203,10 @@ public void CompositeDisposable_GetEnumerator() var g = new CompositeDisposable(d1, d2); var lst = new List(); foreach (var x in g) + { lst.Add(x); + } + Assert.True(lst.SequenceEqual(new[] { d1, d2 })); } @@ -211,7 +218,10 @@ public void CompositeDisposable_GetEnumeratorNonGeneric() var g = new CompositeDisposable(d1, d2); var lst = new List(); foreach (IDisposable x in (IEnumerable)g) + { lst.Add(x); + } + Assert.True(lst.SequenceEqual(new[] { d1, d2 })); } @@ -344,7 +354,7 @@ public void CompositeDisposable_RemoveOptimizationBehavior() var N = 100; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var j = i; @@ -355,17 +365,26 @@ public void CompositeDisposable_RemoveOptimizationBehavior() var d1 = Enumerable.Range(0, N).Where(i => i % 2 == 0).ToArray(); foreach (var i in d1) + { g.Remove(m[i]); + } + Assert.True(r.SequenceEqual(d1)); var d2 = Enumerable.Range(0, N).Where(i => i % 3 == 0).ToArray(); foreach (var i in d2) + { g.Remove(m[i]); + } + Assert.True(r.SequenceEqual(d1.Concat(d2.Where(x => !d1.Any(y => x == y))))); var d3 = Enumerable.Range(0, N).Where(i => i % 5 == 0).ToArray(); foreach (var i in d3) + { g.Remove(m[i]); + } + Assert.True(r.SequenceEqual(d1.Concat(d2.Where(x => !d1.Any(y => x == y))).Concat(d3.Where(x => !d1.Any(y => x == y) && !d2.Any(y => x == y))))); g.Dispose(); @@ -546,7 +565,7 @@ public void ContextDisposable() Assert.True(disp); } - class MySync : SynchronizationContext + private class MySync : SynchronizationContext { internal bool _disposed = false; @@ -766,7 +785,7 @@ public void StableCompositeDisposable_ArgumentChecking() ReactiveAssert.Throws(() => StableCompositeDisposable.Create(null, d)); ReactiveAssert.Throws(() => StableCompositeDisposable.Create(d, null)); - ReactiveAssert.Throws(() => StableCompositeDisposable.Create(default(IDisposable[]))); + ReactiveAssert.Throws(() => StableCompositeDisposable.Create(default)); ReactiveAssert.Throws(() => StableCompositeDisposable.Create(default(IEnumerable))); ReactiveAssert.Throws(() => StableCompositeDisposable.Create(null, d, d)); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/EventPatternSourceBaseTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/EventPatternSourceBaseTest.cs index a844e5dd3c..f55c7be6a4 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/EventPatternSourceBaseTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/EventPatternSourceBaseTest.cs @@ -10,7 +10,7 @@ namespace ReactiveTests.Tests { - + public class EventPatternSourceBaseTest { [Fact] @@ -21,8 +21,10 @@ public void ArgumentChecking() ReactiveAssert.Throws(() => new MyEventPatternSource(null, (a, x) => { })); ReactiveAssert.Throws(() => new MyEventPatternSource(xs, null)); - var e = new MyEventPatternSource(xs, (a, x) => { }); - e.GetInvoke = h => (_, __) => { }; + var e = new MyEventPatternSource(xs, (a, x) => { }) + { + GetInvoke = h => (_, __) => { } + }; ReactiveAssert.Throws(() => e.OnNext += null); @@ -34,7 +36,7 @@ public void ArgumentChecking() } } - class MyEventPatternSource : EventPatternSourceBase + internal class MyEventPatternSource : EventPatternSourceBase { public MyEventPatternSource(IObservable> source, Action, EventPattern> invokeHandler) : base(source, invokeHandler) diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ImmutableListTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ImmutableListTest.cs index 5cd5b8b75c..d1fdbfcbc1 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ImmutableListTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ImmutableListTest.cs @@ -2,14 +2,14 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using Xunit; using System.Linq; using System.Reactive; +using Xunit; namespace ReactiveTests.Tests { #if SIGNED - + public class ImmutableListTest { [Fact] @@ -65,6 +65,6 @@ public void ImmutableList_Nulls() Assert.True(list.Data.SequenceEqual(new string[] { })); } - } + } #endif } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Internal/ExceptionHelperTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Internal/ExceptionHelperTest.cs index e6b0b5ba7d..4f77156261 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Internal/ExceptionHelperTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Internal/ExceptionHelperTest.cs @@ -2,16 +2,16 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. +using System; using System.Reactive; using Xunit; -using System; namespace ReactiveTests.Tests { - + public class ExceptionHelperTest { - Exception errors; + private Exception errors; [Fact] public void ExceptionHelper_TrySetException_Empty() diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Internal/HalfSerializerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Internal/HalfSerializerTest.cs index 71604d698b..eb8d973660 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Internal/HalfSerializerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Internal/HalfSerializerTest.cs @@ -2,18 +2,18 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System.Reactive; -using Xunit; using System; using System.Collections.Generic; +using System.Reactive; +using Xunit; namespace ReactiveTests.Tests { public class HalfSerializerTest { - int wip; - Exception error; - Consumer consumer = new Consumer(); + private int wip; + private Exception error; + private Consumer consumer = new Consumer(); [Fact] public void HalfSerializer_OnNext() @@ -133,7 +133,7 @@ public void HalfSerializer_OnNext_Reentrant_OnCompleted() Assert.Null(consumer.exc); } - sealed class Consumer : ISink + private sealed class Consumer : ISink { internal List items = new List(); @@ -156,11 +156,10 @@ public void ForwardOnNext(int value) } } - sealed class ReentrantConsumer : ISink + private sealed class ReentrantConsumer : ISink { - readonly HalfSerializerTest parent; - - readonly bool errorReenter; + private readonly HalfSerializerTest parent; + private readonly bool errorReenter; internal readonly Exception x = new IndexOutOfRangeException(); @@ -186,7 +185,8 @@ public void ForwardOnNext(int value) if (errorReenter) { HalfSerializer.ForwardOnError(this, x, ref parent.wip, ref parent.error); - } else + } + else { HalfSerializer.ForwardOnCompleted(this, ref parent.wip, ref parent.error); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/LicenseHeaderTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/LicenseHeaderTest.cs index 7d0f72a974..65d09c3e13 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/LicenseHeaderTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/LicenseHeaderTest.cs @@ -2,12 +2,8 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using System; -using System.Collections.Generic; using System.IO; -using System.Linq; using System.Text; -using System.Threading.Tasks; using Xunit; namespace Tests.System.Reactive.Tests @@ -18,9 +14,8 @@ namespace Tests.System.Reactive.Tests /// public class LicenseHeaderTest { - static readonly bool fixHeaders = true; - - static readonly string[] lines = { + private static readonly bool fixHeaders = true; + private static readonly string[] lines = { "// Licensed to the .NET Foundation under one or more agreements.", "// The .NET Foundation licenses this file to you under the Apache 2.0 License.", "// See the LICENSE file in the project root for more information.", @@ -47,13 +42,13 @@ public void ScanFiles() } } - int ScanPath(string path, StringBuilder error) + private int ScanPath(string path, StringBuilder error) { var count = 0; foreach (var file in Directory.EnumerateFiles(path, "*.cs", SearchOption.AllDirectories)) { // exclusions - if (file.Contains("obj/Debug") + if (file.Contains("obj/Debug") || file.Contains(@"obj\Debug") || file.Contains("AssemblyInfo.cs") || file.Contains(".Designer.cs") @@ -67,7 +62,7 @@ int ScanPath(string path, StringBuilder error) } // analysis - string content = File.ReadAllText(file); + var content = File.ReadAllText(file); if (!content.StartsWith(lines[0])) { @@ -76,8 +71,8 @@ int ScanPath(string path, StringBuilder error) if (fixHeaders) { - StringBuilder newContent = new StringBuilder(); - string separator = content.Contains("\r\n") ? "\r\n" : "\n"; + var newContent = new StringBuilder(); + var separator = content.Contains("\r\n") ? "\r\n" : "\n"; foreach (var s in lines) { @@ -86,7 +81,7 @@ int ScanPath(string path, StringBuilder error) newContent.Append(content); File.WriteAllText(file, newContent.ToString()); - } + } } } return count; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AggregateTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AggregateTest.cs index f98006546b..aab2abf9de 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AggregateTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AggregateTest.cs @@ -3,17 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -22,15 +16,15 @@ public class AggregateTest : ReactiveTest [Fact] public void Aggregate_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Aggregate(default(IObservable), 1, (x, y) => x + y)); - ReactiveAssert.Throws(() => Observable.Aggregate(DummyObservable.Instance, 1, default(Func))); + ReactiveAssert.Throws(() => Observable.Aggregate(default, 1, (x, y) => x + y)); + ReactiveAssert.Throws(() => Observable.Aggregate(DummyObservable.Instance, 1, default)); - ReactiveAssert.Throws(() => Observable.Aggregate(default(IObservable), (x, y) => x + y)); - ReactiveAssert.Throws(() => Observable.Aggregate(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.Aggregate(default, (x, y) => x + y)); + ReactiveAssert.Throws(() => Observable.Aggregate(DummyObservable.Instance, default)); - ReactiveAssert.Throws(() => Observable.Aggregate(default(IObservable), 1, (x, y) => x + y, x => x)); - ReactiveAssert.Throws(() => Observable.Aggregate(DummyObservable.Instance, 1, default(Func), x => x)); - ReactiveAssert.Throws(() => Observable.Aggregate(DummyObservable.Instance, 1, (x, y) => x + y, default(Func))); + ReactiveAssert.Throws(() => Observable.Aggregate(default, 1, (x, y) => x + y, x => x)); + ReactiveAssert.Throws(() => Observable.Aggregate(DummyObservable.Instance, 1, default, x => x)); + ReactiveAssert.Throws(() => Observable.Aggregate(DummyObservable.Instance, 1, (x, y) => x + y, default)); } [Fact] @@ -179,7 +173,7 @@ public void AggregateWithSeed_AccumulatorThrows() ); var res = scheduler.Start(() => - xs.Aggregate(0, (acc, x) => { if (x < 3) return acc + x; throw ex; }) + xs.Aggregate(0, (acc, x) => { if (x < 3) { return acc + x; } throw ex; }) ); res.Messages.AssertEqual( @@ -337,7 +331,7 @@ public void AggregateWithSeedAndResult_AccumulatorThrows() ); var res = scheduler.Start(() => - xs.Aggregate(0, (acc, x) => { if (x < 3) return acc + x; throw ex; }, x => x * 5) + xs.Aggregate(0, (acc, x) => { if (x < 3) { return acc + x; } throw ex; }, x => x * 5) ); res.Messages.AssertEqual( @@ -516,7 +510,7 @@ public void AggregateWithoutSeed_AccumulatorThrows() ); var res = scheduler.Start(() => - xs.Aggregate((acc, x) => { if (x < 3) return acc + x; throw ex; }) + xs.Aggregate((acc, x) => { if (x < 3) { return acc + x; } throw ex; }) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AllTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AllTest.cs index 4ccbe342d9..4d69335097 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AllTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AllTest.cs @@ -3,17 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -22,7 +17,7 @@ public class AllTest : ReactiveTest [Fact] public void All_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.All(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.All(DummyObservable.Instance, default)); ReactiveAssert.Throws(() => Observable.All(default(IObservable), x => true)); } @@ -245,7 +240,7 @@ public void All_PredicateThrows() ); var res = scheduler.Start(() => - xs.All(x => { if (x < 4) return true; throw ex; }) + xs.All(x => { if (x < 4) { return true; } throw ex; }) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AmbTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AmbTest.cs index 2a63ba4446..cf2788683d 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AmbTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AmbTest.cs @@ -5,18 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -643,7 +635,7 @@ public void Amb_Many_Enumerable_OnCompleted() [Fact] public void Amb_Many_Enumerable_Many_Sources() { - for (int i = 0; i < 32; i++) + for (var i = 0; i < 32; i++) { var sources = new List>(); for (var j = 0; j < i; j++) @@ -668,7 +660,7 @@ public void Amb_Many_Enumerable_Many_Sources() [Fact] public void Amb_Many_Enumerable_Many_Sources_NoStackOverflow() { - for (int i = 0; i < 100; i++) + for (var i = 0; i < 100; i++) { var sources = new List>(); for (var j = 0; j < i; j++) diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AndTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AndTest.cs index c6a472891b..6d5301344e 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AndTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AndTest.cs @@ -4,19 +4,9 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -54,7 +44,7 @@ public void And2() const int N = 2; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -79,12 +69,12 @@ public void And2Error() const int N = 2; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -119,7 +109,7 @@ public void And3() const int N = 3; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -144,12 +134,12 @@ public void And3Error() const int N = 3; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -184,7 +174,7 @@ public void And4() const int N = 4; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -209,12 +199,12 @@ public void And4Error() const int N = 4; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -249,7 +239,7 @@ public void And5() const int N = 5; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -274,12 +264,12 @@ public void And5Error() const int N = 5; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -314,7 +304,7 @@ public void And6() const int N = 6; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -339,12 +329,12 @@ public void And6Error() const int N = 6; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -379,7 +369,7 @@ public void And7() const int N = 7; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -404,12 +394,12 @@ public void And7Error() const int N = 7; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -444,7 +434,7 @@ public void And8() const int N = 8; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -469,12 +459,12 @@ public void And8Error() const int N = 8; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -509,7 +499,7 @@ public void And9() const int N = 9; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -534,12 +524,12 @@ public void And9Error() const int N = 9; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -574,7 +564,7 @@ public void And10() const int N = 10; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -599,12 +589,12 @@ public void And10Error() const int N = 10; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -639,7 +629,7 @@ public void And11() const int N = 11; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -664,12 +654,12 @@ public void And11Error() const int N = 11; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -704,7 +694,7 @@ public void And12() const int N = 12; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -729,12 +719,12 @@ public void And12Error() const int N = 12; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -769,7 +759,7 @@ public void And13() const int N = 13; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -794,12 +784,12 @@ public void And13Error() const int N = 13; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -834,7 +824,7 @@ public void And14() const int N = 14; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -859,12 +849,12 @@ public void And14Error() const int N = 14; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -899,7 +889,7 @@ public void And15() const int N = 15; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -924,12 +914,12 @@ public void And15Error() const int N = 15; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { @@ -964,7 +954,7 @@ public void And16() const int N = 16; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -989,12 +979,12 @@ public void And16Error() const int N = 16; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var scheduler = new TestScheduler(); var obs = new List>(); - for (int j = 0; j < N; j++) + for (var j = 0; j < N; j++) { if (j == i) { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AnyTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AnyTest.cs index 31cc55a972..b0231699ec 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AnyTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AnyTest.cs @@ -3,17 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -23,7 +17,7 @@ public class AnyTest : ReactiveTest public void Any_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.Any(default(IObservable))); - ReactiveAssert.Throws(() => Observable.Any(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.Any(DummyObservable.Instance, default)); ReactiveAssert.Throws(() => Observable.Any(default(IObservable), x => true)); } @@ -314,7 +308,7 @@ public void Any_Predicate_PredicateThrows() ); var res = scheduler.Start(() => - xs.Any(x => { if (x != -4) return false; throw ex; }) + xs.Any(x => { if (x != -4) { return false; } throw ex; }) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AppendTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AppendTest.cs index 902ebe6a28..a1ff09e703 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AppendTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AppendTest.cs @@ -3,12 +3,7 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; @@ -23,10 +18,10 @@ public void Append_ArgumentChecking() var scheduler = new TestScheduler(); var someObservable = Observable.Empty(); - ReactiveAssert.Throws(() => Observable.Append(default(IObservable), 1)); + ReactiveAssert.Throws(() => Observable.Append(default, 1)); - ReactiveAssert.Throws(() => Observable.Append(default(IObservable), 1, scheduler)); - ReactiveAssert.Throws(() => Observable.Append(someObservable, 1, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.Append(default, 1, scheduler)); + ReactiveAssert.Throws(() => Observable.Append(someObservable, 1, default)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AsObservableTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AsObservableTest.cs index a727bfcb2b..21751d0c93 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AsObservableTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AsObservableTest.cs @@ -3,20 +3,9 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -160,7 +149,7 @@ public void AsObservable_IsNotEager() { var scheduler = new TestScheduler(); - bool subscribed = false; + var subscribed = false; var xs = Observable.Create(obs => { subscribed = true; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AutoConnectTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AutoConnectTest.cs index 08c33580cb..6a95c28d78 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AutoConnectTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AutoConnectTest.cs @@ -5,14 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Reactive.Subjects; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -21,7 +17,7 @@ public class AutoConnectTest : ReactiveTest [Fact] public void AutoConnect_Basic() { - int called = 0; + var called = 0; var source = Observable.Defer(() => { @@ -47,7 +43,7 @@ public void AutoConnect_Basic() [Fact] public void AutoConnect_Immediately() { - int called = 0; + var called = 0; var source = Observable.Defer(() => { @@ -73,7 +69,7 @@ public void AutoConnect_Immediately() [Fact] public void AutoConnect_TwoConsumers() { - int called = 0; + var called = 0; var source = Observable.Defer(() => { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AverageTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AverageTest.cs index 010de32d04..1b17b24f5f 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AverageTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AverageTest.cs @@ -3,17 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { @@ -33,7 +27,7 @@ public void Average_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Average(default(IObservable))); ReactiveAssert.Throws(() => Observable.Average(default(IObservable))); - ReactiveAssert.Throws(() => Observable.Average(default(IObservable), _ => default(int))); + ReactiveAssert.Throws(() => Observable.Average(default(IObservable), _ => default)); ReactiveAssert.Throws(() => Observable.Average(default(IObservable), _ => default(double))); ReactiveAssert.Throws(() => Observable.Average(default(IObservable), _ => default(float))); ReactiveAssert.Throws(() => Observable.Average(default(IObservable), _ => default(decimal))); @@ -44,7 +38,7 @@ public void Average_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Average(default(IObservable), _ => default(decimal?))); ReactiveAssert.Throws(() => Observable.Average(default(IObservable), _ => default(long?))); - ReactiveAssert.Throws(() => Observable.Average(Observable.Empty(), default(Func))); + ReactiveAssert.Throws(() => Observable.Average(Observable.Empty(), default)); ReactiveAssert.Throws(() => Observable.Average(Observable.Empty(), default(Func))); ReactiveAssert.Throws(() => Observable.Average(Observable.Empty(), default(Func))); ReactiveAssert.Throws(() => Observable.Average(Observable.Empty(), default(Func))); @@ -1394,7 +1388,7 @@ public void Average_InjectOverflow_Decimal_Nullable() } #endif #if !CRIPPLED_REFLECTION || NETCOREAPP1_1 || NETCOREAPP1_0 - class OverflowInjection : IObservable + private class OverflowInjection : IObservable { private readonly IObservable _source; private readonly object _initialCount; @@ -1428,7 +1422,7 @@ public void Average_Selector_Regular_Int32() OnCompleted(240) ); - var res = scheduler.Start(() => xs.Average(x => (int)x.Length)); + var res = scheduler.Start(() => xs.Average(x => x.Length)); res.Messages.AssertEqual( OnNext(240, 2.0), diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AwaitTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AwaitTest.cs index 9f0d102468..b222922e62 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AwaitTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/AwaitTest.cs @@ -3,19 +3,13 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Threading; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Threading; -using System.Reactive.Subjects; -using System.Reactive.Disposables; namespace ReactiveTests.Tests { @@ -25,7 +19,7 @@ public class AwaitTest : ReactiveTest public void Await_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.GetAwaiter(default(IObservable))); - ReactiveAssert.Throws(() => Observable.GetAwaiter(default(IConnectableObservable))); + ReactiveAssert.Throws(() => Observable.GetAwaiter(default)); ReactiveAssert.Throws(() => Observable.GetAwaiter(Observable.Empty()).OnCompleted(null)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/BufferTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/BufferTest.cs index e709672409..f2da10b529 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/BufferTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/BufferTest.cs @@ -5,18 +5,11 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -30,7 +23,7 @@ public void Buffer_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Buffer(default(IObservable), DummyFunc>.Instance)); ReactiveAssert.Throws(() => Observable.Buffer(DummyObservable.Instance, default(Func>))); ReactiveAssert.Throws(() => Observable.Buffer(default(IObservable), DummyObservable.Instance, DummyFunc>.Instance)); - ReactiveAssert.Throws(() => Observable.Buffer(DummyObservable.Instance, default(IObservable), DummyFunc>.Instance)); + ReactiveAssert.Throws(() => Observable.Buffer(DummyObservable.Instance, default, DummyFunc>.Instance)); ReactiveAssert.Throws(() => Observable.Buffer(DummyObservable.Instance, DummyObservable.Instance, default(Func>))); ReactiveAssert.Throws(() => Observable.Buffer(default(IObservable), DummyObservable.Instance)); ReactiveAssert.Throws(() => Observable.Buffer(DummyObservable.Instance, default(IObservable))); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CaseTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CaseTest.cs index 2dc81757a7..f90d761313 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CaseTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CaseTest.cs @@ -4,20 +4,11 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; -using static System.Reactive.Linq.Observable; +using Xunit; namespace ReactiveTests.Tests { @@ -458,7 +449,7 @@ public void Case_Error() ); } - static T Throw(Exception ex) + private static T Throw(Exception ex) { throw ex; } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CastTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CastTest.cs index 98bd757e6f..0efcd2847b 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CastTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CastTest.cs @@ -3,20 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -26,7 +17,7 @@ public class CastTest : ReactiveTest [Fact] public void Cast_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Cast(default(IObservable))); + ReactiveAssert.Throws(() => Observable.Cast(default)); ReactiveAssert.Throws(() => Observable.Cast(DummyObservable.Instance).Subscribe(null)); } @@ -152,20 +143,23 @@ public void Cast_NotValid() } } - class A : IEquatable + internal class A : IEquatable { - int id; + private int _id; public A(int id) { - this.id = id; + this._id = id; } public bool Equals(A other) { if (other == null) + { return false; - return id == other.id && GetType().Equals(other.GetType()); + } + + return _id == other._id && GetType().Equals(other.GetType()); } public override bool Equals(object obj) @@ -175,11 +169,11 @@ public override bool Equals(object obj) public override int GetHashCode() { - return id; + return _id; } } - class B : A + internal class B : A { public B(int id) : base(id) @@ -187,7 +181,7 @@ public B(int id) } } - class C : A + internal class C : A { public C(int id) : base(id) @@ -195,7 +189,7 @@ public C(int id) } } - class D : B + internal class D : B { public D(int id) : base(id) @@ -203,20 +197,23 @@ public D(int id) } } - class E : IEquatable + internal class E : IEquatable { - int id; + private int _id; public E(int id) { - this.id = id; + this._id = id; } public bool Equals(E other) { if (other == null) + { return false; - return id == other.id && GetType().Equals(other.GetType()); + } + + return _id == other._id && GetType().Equals(other.GetType()); } public override bool Equals(object obj) @@ -226,7 +223,7 @@ public override bool Equals(object obj) public override int GetHashCode() { - return id; + return _id; } } } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CatchTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CatchTest.cs index 6f70595bf5..4cc98019b4 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CatchTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CatchTest.cs @@ -5,18 +5,13 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -26,10 +21,10 @@ public class CatchTest : ReactiveTest [Fact] public void Catch_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Catch((IObservable[])null)); + ReactiveAssert.Throws(() => Observable.Catch(null)); ReactiveAssert.Throws(() => Observable.Catch((IEnumerable>)null)); ReactiveAssert.Throws(() => Observable.Catch(DummyObservable.Instance, null)); - ReactiveAssert.Throws(() => Observable.Catch((IObservable)null, DummyObservable.Instance)); + ReactiveAssert.Throws(() => Observable.Catch(null, DummyObservable.Instance)); ReactiveAssert.Throws(() => Observable.Catch(null, _ => DummyObservable.Instance)); ReactiveAssert.Throws(() => Observable.Catch(DummyObservable.Instance, null)); } @@ -682,7 +677,7 @@ public void Catch_DefaultScheduler_Binary() { var evt = new ManualResetEvent(false); - int res = 0; + var res = 0; Observable.Return(1).Catch(Observable.Return(2)).Subscribe(x => { res = x; @@ -698,7 +693,7 @@ public void Catch_DefaultScheduler_Nary() { var evt = new ManualResetEvent(false); - int res = 0; + var res = 0; Observable.Catch(Observable.Return(1), Observable.Return(2), Observable.Return(3)).Subscribe(x => { res = x; @@ -716,7 +711,7 @@ public void Catch_DefaultScheduler_NaryEnumerable() IEnumerable> sources = new[] { Observable.Return(1), Observable.Return(2), Observable.Return(3) }; - int res = 0; + var res = 0; Observable.Catch(sources).Subscribe(x => { res = x; @@ -759,9 +754,13 @@ public void Catch_IteratorThrows() private IEnumerable> Catch_IteratorThrows_Source(Exception ex, bool b) { if (b) + { throw ex; + } else + { yield break; + } } [Fact] @@ -936,9 +935,7 @@ public void Catch_TailRecursive1() OnError(40, new Exception()) ); - var f = default(Func>); - f = () => Observable.Defer(() => o.Catch(f())); - + IObservable f() => Observable.Defer(() => o.Catch(f())); var res = scheduler.Start(() => f(), create, start, end); var expected = new List>>(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ChunkifyTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ChunkifyTest.cs index cea1635a87..a8c7114f1b 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ChunkifyTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ChunkifyTest.cs @@ -5,15 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CollectTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CollectTest.cs index 57b039a158..0f39087cc2 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CollectTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CollectTest.cs @@ -5,15 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { @@ -27,12 +22,12 @@ public void Collect_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Collect(default(IObservable), () => 0, (x, y) => x)); ReactiveAssert.Throws(() => Observable.Collect(someObservable, default(Func), (x, y) => x)); - ReactiveAssert.Throws(() => Observable.Collect(someObservable, () => 0, default(Func))); + ReactiveAssert.Throws(() => Observable.Collect(someObservable, () => 0, default)); ReactiveAssert.Throws(() => Observable.Collect(default(IObservable), () => 0, (x, y) => x, x => x)); ReactiveAssert.Throws(() => Observable.Collect(someObservable, default(Func), (x, y) => x, x => x)); - ReactiveAssert.Throws(() => Observable.Collect(someObservable, () => 0, default(Func), x => x)); - ReactiveAssert.Throws(() => Observable.Collect(someObservable, () => 0, (x, y) => x, default(Func))); + ReactiveAssert.Throws(() => Observable.Collect(someObservable, () => 0, default, x => x)); + ReactiveAssert.Throws(() => Observable.Collect(someObservable, () => 0, (x, y) => x, default)); } [Fact] @@ -186,7 +181,17 @@ public void Collect_SecondCollectorThrows() var ex = new Exception(); var n = 0; - var ys = xs.Collect(() => { if (n++ == 0) return 0; else throw ex; }, (x, y) => x + y); + var ys = xs.Collect(() => + { + if (n++ == 0) + { + return 0; + } + else + { + throw ex; + } + }, (x, y) => x + y); var e = default(IEnumerator); var ex_ = default(Exception); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CombineLatestTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CombineLatestTest.cs index 539a92a903..6a4e0f3894 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CombineLatestTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CombineLatestTest.cs @@ -5,21 +5,14 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { +#pragma warning disable IDE0039 // Use local function public class CombineLatestTest : ReactiveTest { @@ -211,7 +204,9 @@ public void CombineLatest_NeverN() ); foreach (var e in new[] { e0, e1, e2 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -230,7 +225,9 @@ public void CombineLatest_Never2() ); foreach (var e in new[] { e0, e1 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -250,7 +247,9 @@ public void CombineLatest_Never3() ); foreach (var e in new[] { e0, e1, e2 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -271,7 +270,9 @@ public void CombineLatest_Never4() ); foreach (var e in new[] { e0, e1, e2, e3 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -293,7 +294,9 @@ public void CombineLatest_Never5() ); foreach (var e in new[] { e0, e1, e2, e3, e4 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -316,7 +319,9 @@ public void CombineLatest_Never6() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -340,7 +345,9 @@ public void CombineLatest_Never7() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -365,7 +372,9 @@ public void CombineLatest_Never8() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -391,7 +400,9 @@ public void CombineLatest_Never9() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -418,7 +429,9 @@ public void CombineLatest_Never10() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -446,7 +459,9 @@ public void CombineLatest_Never11() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -475,7 +490,9 @@ public void CombineLatest_Never12() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -505,7 +522,9 @@ public void CombineLatest_Never13() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -536,7 +555,9 @@ public void CombineLatest_Never14() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -568,7 +589,9 @@ public void CombineLatest_Never15() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -601,7 +624,9 @@ public void CombineLatest_Never16() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } #endregion @@ -691,7 +716,9 @@ public void CombineLatest_EmptyN() var i = 0; foreach (var e in new[] { e0, e1, e2 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -712,7 +739,9 @@ public void CombineLatest_Empty2() var i = 0; foreach (var e in new[] { e0, e1 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -734,7 +763,9 @@ public void CombineLatest_Empty3() var i = 0; foreach (var e in new[] { e0, e1, e2 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -757,7 +788,9 @@ public void CombineLatest_Empty4() var i = 0; foreach (var e in new[] { e0, e1, e2, e3 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -781,7 +814,9 @@ public void CombineLatest_Empty5() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -806,7 +841,9 @@ public void CombineLatest_Empty6() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -832,7 +869,9 @@ public void CombineLatest_Empty7() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -859,7 +898,9 @@ public void CombineLatest_Empty8() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -887,7 +928,9 @@ public void CombineLatest_Empty9() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -916,7 +959,9 @@ public void CombineLatest_Empty10() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -946,7 +991,9 @@ public void CombineLatest_Empty11() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -977,7 +1024,9 @@ public void CombineLatest_Empty12() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -1009,7 +1058,9 @@ public void CombineLatest_Empty13() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -1042,7 +1093,9 @@ public void CombineLatest_Empty14() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -1076,7 +1129,9 @@ public void CombineLatest_Empty15() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -1111,7 +1166,9 @@ public void CombineLatest_Empty16() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } #endregion @@ -1989,7 +2046,9 @@ public void CombineLatest_SelectorThrowsN() var es = new[] { e0, e1, e2 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2013,7 +2072,9 @@ public void CombineLatest_SelectorThrows2() var es = new[] { e0, e1 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2038,7 +2099,9 @@ public void CombineLatest_SelectorThrows3() var es = new[] { e0, e1, e2 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2064,7 +2127,9 @@ public void CombineLatest_SelectorThrows4() var es = new[] { e0, e1, e2, e3 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2091,7 +2156,9 @@ public void CombineLatest_SelectorThrows5() var es = new[] { e0, e1, e2, e3, e4 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2119,7 +2186,9 @@ public void CombineLatest_SelectorThrows6() var es = new[] { e0, e1, e2, e3, e4, e5 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2148,7 +2217,9 @@ public void CombineLatest_SelectorThrows7() var es = new[] { e0, e1, e2, e3, e4, e5, e6 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2178,7 +2249,9 @@ public void CombineLatest_SelectorThrows8() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2209,7 +2282,9 @@ public void CombineLatest_SelectorThrows9() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2241,7 +2316,9 @@ public void CombineLatest_SelectorThrows10() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2274,7 +2351,9 @@ public void CombineLatest_SelectorThrows11() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2308,7 +2387,9 @@ public void CombineLatest_SelectorThrows12() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2343,7 +2424,9 @@ public void CombineLatest_SelectorThrows13() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2379,7 +2462,9 @@ public void CombineLatest_SelectorThrows14() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2416,7 +2501,9 @@ public void CombineLatest_SelectorThrows15() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } [Fact] @@ -2454,7 +2541,9 @@ public void CombineLatest_SelectorThrows16() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 10 * es.Length)); + } } #endregion @@ -2481,7 +2570,9 @@ public void CombineLatest_WillNeverBeAbleToCombineN() var i = 0; var es = new[] { e0, e1, e2 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2505,7 +2596,9 @@ public void CombineLatest_WillNeverBeAbleToCombine2() var i = 0; var es = new[] { e0, e1 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2530,7 +2623,9 @@ public void CombineLatest_WillNeverBeAbleToCombine3() var i = 0; var es = new[] { e0, e1, e2 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2556,7 +2651,9 @@ public void CombineLatest_WillNeverBeAbleToCombine4() var i = 0; var es = new[] { e0, e1, e2, e3 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2583,7 +2680,9 @@ public void CombineLatest_WillNeverBeAbleToCombine5() var i = 0; var es = new[] { e0, e1, e2, e3, e4 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2611,7 +2710,9 @@ public void CombineLatest_WillNeverBeAbleToCombine6() var i = 0; var es = new[] { e0, e1, e2, e3, e4, e5 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2640,7 +2741,9 @@ public void CombineLatest_WillNeverBeAbleToCombine7() var i = 0; var es = new[] { e0, e1, e2, e3, e4, e5, e6 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2670,7 +2773,9 @@ public void CombineLatest_WillNeverBeAbleToCombine8() var i = 0; var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2701,7 +2806,9 @@ public void CombineLatest_WillNeverBeAbleToCombine9() var i = 0; var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2733,7 +2840,9 @@ public void CombineLatest_WillNeverBeAbleToCombine10() var i = 0; var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2766,7 +2875,9 @@ public void CombineLatest_WillNeverBeAbleToCombine11() var i = 0; var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2800,7 +2911,9 @@ public void CombineLatest_WillNeverBeAbleToCombine12() var i = 0; var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2835,7 +2948,9 @@ public void CombineLatest_WillNeverBeAbleToCombine13() var i = 0; var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2871,7 +2986,9 @@ public void CombineLatest_WillNeverBeAbleToCombine14() var i = 0; var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2908,7 +3025,9 @@ public void CombineLatest_WillNeverBeAbleToCombine15() var i = 0; var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2946,7 +3065,9 @@ public void CombineLatest_WillNeverBeAbleToCombine16() var i = 0; var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 }; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + 50 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual(Subscribe(200, 500)); } @@ -2977,7 +3098,9 @@ public void CombineLatest_TypicalN() ); foreach (var e in new[] { e0, e1, e2 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3000,7 +3123,9 @@ public void CombineLatest_Typical2() ); foreach (var e in new[] { e0, e1 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3025,7 +3150,9 @@ public void CombineLatest_Typical3() ); foreach (var e in new[] { e0, e1, e2 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3052,7 +3179,9 @@ public void CombineLatest_Typical4() ); foreach (var e in new[] { e0, e1, e2, e3 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3081,7 +3210,9 @@ public void CombineLatest_Typical5() ); foreach (var e in new[] { e0, e1, e2, e3, e4 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3112,7 +3243,9 @@ public void CombineLatest_Typical6() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3145,7 +3278,9 @@ public void CombineLatest_Typical7() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3180,7 +3315,9 @@ public void CombineLatest_Typical8() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3217,7 +3354,9 @@ public void CombineLatest_Typical9() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3256,7 +3395,9 @@ public void CombineLatest_Typical10() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3297,7 +3438,9 @@ public void CombineLatest_Typical11() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3340,7 +3483,9 @@ public void CombineLatest_Typical12() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3385,7 +3530,9 @@ public void CombineLatest_Typical13() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3432,7 +3579,9 @@ public void CombineLatest_Typical14() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3481,7 +3630,9 @@ public void CombineLatest_Typical15() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } [Fact] @@ -3532,7 +3683,9 @@ public void CombineLatest_Typical16() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 800)); + } } #endregion @@ -3812,4 +3965,5 @@ public void CombineLatest_AtLeastOneThrows4() #endregion } +#pragma warning restore IDE0039 // Use local function } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ConcatTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ConcatTest.cs index 720ec9b760..795104e73e 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ConcatTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ConcatTest.cs @@ -4,20 +4,16 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; -using System.Diagnostics; +using Xunit; namespace ReactiveTests.Tests { @@ -29,8 +25,8 @@ public void Concat_ArgumentChecking() { var xs = DummyObservable.Instance; - ReactiveAssert.Throws(() => Observable.Concat(xs, (IObservable)null)); - ReactiveAssert.Throws(() => Observable.Concat((IObservable)null, xs)); + ReactiveAssert.Throws(() => Observable.Concat(xs, null)); + ReactiveAssert.Throws(() => Observable.Concat(null, xs)); ReactiveAssert.Throws(() => Observable.Concat((IObservable[])null)); ReactiveAssert.Throws(() => Observable.Concat((IEnumerable>)null)); ReactiveAssert.Throws(() => Observable.Concat((IObservable[])null)); @@ -44,7 +40,7 @@ public void Concat_DefaultScheduler() { var evt = new ManualResetEvent(false); - int sum = 0; + var sum = 0; Observable.Concat(Observable.Return(1), Observable.Return(2), Observable.Return(3)).Subscribe(n => { sum += n; @@ -62,7 +58,7 @@ public void Concat_IEofIO_DefaultScheduler() IEnumerable> sources = new[] { Observable.Return(1), Observable.Return(2), Observable.Return(3) }; - int sum = 0; + var sum = 0; Observable.Concat(sources).Subscribe(n => { sum += n; @@ -903,9 +899,7 @@ public void Concat_TailRecursive1() OnCompleted(40) ); - var f = default(Func>); - f = () => Observable.Defer(() => o.Concat(f())); - + IObservable f() => Observable.Defer(() => o.Concat(f())); var res = scheduler.Start(() => f(), create, start, end); var expected = new List>>(); @@ -929,9 +923,7 @@ public void Concat_TailRecursive1() [Fact] public void Concat_TailRecursive2() { - var f = default(Func>); - f = x => Observable.Defer(() => Observable.Return(x, ThreadPoolScheduler.Instance).Concat(f(x + 1))); - + IObservable f(int x) => Observable.Defer(() => Observable.Return(x, ThreadPoolScheduler.Instance).Concat(f(x + 1))); var lst = new List(); f(0).Select(x => new StackTrace().FrameCount).Take(10).ForEach(lst.Add); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ContainsTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ContainsTest.cs index 114de3d04c..68fc8218c7 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ContainsTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ContainsTest.cs @@ -5,15 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -23,8 +18,8 @@ public class ContainsTest : ReactiveTest [Fact] public void Contains_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Contains(default(IObservable), 42)); - ReactiveAssert.Throws(() => Observable.Contains(default(IObservable), 42, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.Contains(default, 42)); + ReactiveAssert.Throws(() => Observable.Contains(default, 42, EqualityComparer.Default)); ReactiveAssert.Throws(() => Observable.Contains(DummyObservable.Instance, 42, null)); } @@ -229,7 +224,7 @@ public void Contains_ComparerThrows() ); } - class ContainsComparerThrows : IEqualityComparer + private class ContainsComparerThrows : IEqualityComparer { public bool Equals(int x, int y) { @@ -300,7 +295,7 @@ public void Contains_ComparerDoesNotContainValue() ); } - class ContainsComparerMod2 : IEqualityComparer + private class ContainsComparerMod2 : IEqualityComparer { public bool Equals(int x, int y) { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CountTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CountTest.cs index 0b3b5ed55b..82e363b8bf 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CountTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CountTest.cs @@ -3,17 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -24,7 +19,7 @@ public void Count_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.Count(default(IObservable))); ReactiveAssert.Throws(() => Observable.Count(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.Count(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.Count(DummyObservable.Instance, default)); } [Fact] @@ -429,7 +424,9 @@ public void Count_Predicate_PredicateThrows() xs.Count(x => { if (x == 3) + { throw ex; + } return true; }) @@ -460,7 +457,7 @@ public void Count_Predicate_InjectOverflow() } #if !CRIPPLED_REFLECTION || NETCOREAPP1_1 || NETCOREAPP1_0 - class OverflowInjection : IObservable + internal class OverflowInjection : IObservable { private readonly IObservable _source; private readonly object _initialCount; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CreateAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CreateAsyncTest.cs index 06338544cd..8bb1d2ac2a 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CreateAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CreateAsyncTest.cs @@ -5,17 +5,14 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; namespace ReactiveTests.Tests { @@ -97,7 +94,7 @@ public void CreateAsync_NullCoalescingDisposable2() Assert.True(lst.SequenceEqual(new[] { 42 })); } - Task Producer1(IObserver results, CancellationToken token, IScheduler scheduler) + private Task Producer1(IObserver results, CancellationToken token, IScheduler scheduler) { var tcs = new TaskCompletionSource(); @@ -137,7 +134,7 @@ public void CreateAsync_Never() }); } - Task Producer2(IObserver results, CancellationToken token, IScheduler scheduler) + private Task Producer2(IObserver results, CancellationToken token, IScheduler scheduler) { var tcs = new TaskCompletionSource(); @@ -179,7 +176,7 @@ public void CreateAsync_Completed1() }); } - Task Producer3(IObserver results, CancellationToken token, IScheduler scheduler) + private Task Producer3(IObserver results, CancellationToken token, IScheduler scheduler) { var tcs = new TaskCompletionSource(); @@ -221,7 +218,7 @@ public void CreateAsync_Completed2() }); } - Task Producer4(IObserver results, CancellationToken token, IScheduler scheduler, Exception exception) + private Task Producer4(IObserver results, CancellationToken token, IScheduler scheduler, Exception exception) { var tcs = new TaskCompletionSource(); @@ -265,7 +262,7 @@ public void CreateAsync_Error1() }); } - Task Producer5(IObserver results, CancellationToken token, IScheduler scheduler, Exception exception) + private Task Producer5(IObserver results, CancellationToken token, IScheduler scheduler, Exception exception) { var tcs = new TaskCompletionSource(); @@ -309,8 +306,7 @@ public void CreateAsync_Error2() }); } - - Task Producer6(IObserver results, CancellationToken token, Exception exception) + private Task Producer6(IObserver results, CancellationToken token, Exception exception) { throw exception; } @@ -334,7 +330,7 @@ public void CreateAsync_Error3() }); } - Task Producer7(IObserver results, CancellationToken token, IScheduler scheduler) + private Task Producer7(IObserver results, CancellationToken token, IScheduler scheduler) { var tcs = new TaskCompletionSource(); @@ -376,7 +372,7 @@ public void CreateAsync_Cancel1() }); } - Task Producer8(IObserver results, CancellationToken token, IScheduler scheduler) + private Task Producer8(IObserver results, CancellationToken token, IScheduler scheduler) { var tcs = new TaskCompletionSource(); @@ -418,7 +414,7 @@ public void CreateAsync_Cancel2() }); } - Task Producer9(IObserver results, CancellationToken token, IScheduler scheduler) + private Task Producer9(IObserver results, CancellationToken token, IScheduler scheduler) { var tcs = new TaskCompletionSource(); @@ -461,7 +457,7 @@ public void CreateAsync_Cancel3() }); } - Task Producer10(IObserver results, CancellationToken token, IScheduler scheduler) + private Task Producer10(IObserver results, CancellationToken token, IScheduler scheduler) { var tcs = new TaskCompletionSource(); @@ -508,14 +504,14 @@ public void CreateAsync_Cancel4() }); } - void RunSynchronously(Action action) + private void RunSynchronously(Action action) { var t = new Task(action); t.RunSynchronously(new SynchronousScheduler()); t.Wait(); } - class SynchronousScheduler : TaskScheduler + private class SynchronousScheduler : TaskScheduler { protected override IEnumerable GetScheduledTasks() { @@ -565,7 +561,9 @@ public void CreateAsync_Task_Token() while (!ct.IsCancellationRequested) { if (i++ == 10) + { e.Set(); + } observer.OnNext(42); } @@ -623,7 +621,9 @@ public void CreateAsync_IDisposable_Token() while (!ct.IsCancellationRequested) { if (i++ == 10) + { e.Set(); + } observer.OnNext(42); } @@ -684,7 +684,9 @@ public void CreateAsync_Action_Token() while (!ct.IsCancellationRequested) { if (i++ == 10) + { e.Set(); + } observer.OnNext(42); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CreateTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CreateTest.cs index 3a3886442f..8fa23c188e 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CreateTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/CreateTest.cs @@ -5,16 +5,13 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Reactive.Disposables; +using Xunit; namespace ReactiveTests.Tests { @@ -142,22 +139,30 @@ public void Create_Dispose() scheduler.Schedule(TimeSpan.FromTicks(600), () => { if (!stopped) + { o.OnNext(3); + } }); scheduler.Schedule(TimeSpan.FromTicks(700), () => { if (!stopped) + { o.OnNext(4); + } }); scheduler.Schedule(TimeSpan.FromTicks(900), () => { if (!stopped) + { o.OnNext(5); + } }); scheduler.Schedule(TimeSpan.FromTicks(1100), () => { if (!stopped) + { o.OnNext(6); + } }); return () => { stopped = true; }; @@ -309,22 +314,30 @@ public void CreateWithDisposable_Dispose() scheduler.Schedule(TimeSpan.FromTicks(600), () => { if (!d.IsDisposed) + { o.OnNext(3); + } }); scheduler.Schedule(TimeSpan.FromTicks(700), () => { if (!d.IsDisposed) + { o.OnNext(4); + } }); scheduler.Schedule(TimeSpan.FromTicks(900), () => { if (!d.IsDisposed) + { o.OnNext(5); + } }); scheduler.Schedule(TimeSpan.FromTicks(1100), () => { if (!d.IsDisposed) + { o.OnNext(6); + } }); return d; @@ -365,11 +378,11 @@ public void CreateWithDisposable_ObserverThrows() [Fact] public void Iterate_ArgumentChecking() { - ReactiveAssert.Throws(() => ObservableEx.Create(default(Func, IEnumerable>>))); + ReactiveAssert.Throws(() => ObservableEx.Create(default)); ReactiveAssert.Throws(() => ObservableEx.Create(DummyFunc, IEnumerable>>.Instance).Subscribe(null)); } - IEnumerable> ToIterate_Complete(IObservable xs, IObservable ys, IObservable zs, IObserver observer) + private IEnumerable> ToIterate_Complete(IObservable xs, IObservable ys, IObservable zs, IObserver observer) { observer.OnNext(1); yield return xs.Select(x => new Object()); @@ -434,7 +447,7 @@ public void Iterate_Complete() ); } - IEnumerable> ToIterate_Complete_Implicit(IObservable xs, IObservable ys, IObservable zs, IObserver observer) + private IEnumerable> ToIterate_Complete_Implicit(IObservable xs, IObservable ys, IObservable zs, IObserver observer) { observer.OnNext(1); yield return xs.Select(x => new Object()); @@ -499,7 +512,7 @@ public void Iterate_Complete_Implicit() ); } - IEnumerable> ToIterate_Throw(IObservable xs, IObservable ys, IObservable zs, IObserver observer, Exception ex) + private IEnumerable> ToIterate_Throw(IObservable xs, IObservable ys, IObservable zs, IObserver observer, Exception ex) { observer.OnNext(1); yield return xs.Select(x => new Object()); @@ -510,7 +523,9 @@ IEnumerable> ToIterate_Throw(IObservable xs, IObservabl observer.OnNext(3); if (xs != null) + { throw ex; + } yield return zs.Select(x => new Object()); @@ -569,7 +584,7 @@ public void Iterate_Iterator_Throw() ); } - IEnumerable> ToIterate_Error(IObservable xs, IObservable ys, IObservable zs, IObserver observer, Exception ex) + private IEnumerable> ToIterate_Error(IObservable xs, IObservable ys, IObservable zs, IObserver observer, Exception ex) { observer.OnNext(1); yield return xs.Select(x => new Object()); @@ -637,7 +652,7 @@ public void Iterate_Iterator_Error() ); } - IEnumerable> ToIterate_Complete_Dispose(IObservable xs, IObservable ys, IObservable zs, IObserver observer) + private IEnumerable> ToIterate_Complete_Dispose(IObservable xs, IObservable ys, IObservable zs, IObserver observer) { observer.OnNext(1); yield return xs.Select(x => new Object()); @@ -712,7 +727,7 @@ public void IteratorScenario() xs.AssertEqual(new[] { 100, 1000 }.ToObservable()); } - static IEnumerable> _IteratorScenario(int x, int y, IObserver results) + private static IEnumerable> _IteratorScenario(int x, int y, IObserver results) { var xs = Observable.Range(1, x).ToListObservable(); yield return xs; @@ -728,11 +743,11 @@ static IEnumerable> _IteratorScenario(int x, int y, IObserve [Fact] public void Iterate_Void_ArgumentChecking() { - ReactiveAssert.Throws(() => ObservableEx.Create(default(Func>>))); + ReactiveAssert.Throws(() => ObservableEx.Create(default)); ReactiveAssert.Throws(() => ObservableEx.Create(DummyFunc>>.Instance).Subscribe(null)); } - IEnumerable> ToIterate_Void_Complete(IObservable xs, IObservable ys, IObservable zs) + private IEnumerable> ToIterate_Void_Complete(IObservable xs, IObservable ys, IObservable zs) { yield return xs.Select(x => new Object()); @@ -788,7 +803,7 @@ public void Iterate_Void_Complete() ); } - IEnumerable> ToIterate_Void_Complete_Implicit(IObservable xs, IObservable ys, IObservable zs) + private IEnumerable> ToIterate_Void_Complete_Implicit(IObservable xs, IObservable ys, IObservable zs) { yield return xs.Select(x => new Object()); @@ -844,14 +859,16 @@ public void Iterate_Void_Complete_Implicit() ); } - IEnumerable> ToIterate_Void_Throw(IObservable xs, IObservable ys, IObservable zs, Exception ex) + private IEnumerable> ToIterate_Void_Throw(IObservable xs, IObservable ys, IObservable zs, Exception ex) { yield return xs.Select(x => new Object()); yield return ys.Select(x => new Object()); if (xs != null) + { throw ex; + } yield return zs.Select(x => new Object()); } @@ -904,7 +921,7 @@ public void Iterate_Void_Iterator_Throw() ); } - IEnumerable> ToIterate_Void_Complete_Dispose(IObservable xs, IObservable ys, IObservable zs) + private IEnumerable> ToIterate_Void_Complete_Dispose(IObservable xs, IObservable ys, IObservable zs) { yield return xs.Select(x => new Object()); @@ -977,7 +994,7 @@ public void Iterate_Void_Func_Throw() Assert.IsType(notification.Exception); } - static IEnumerable> _IteratorScenario_Void(int x, int y) + private static IEnumerable> _IteratorScenario_Void(int x, int y) { var xs = Observable.Range(1, x).ToListObservable(); yield return xs; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DefaultIfEmptyTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DefaultIfEmptyTest.cs index 93f035b2d4..c11361611e 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DefaultIfEmptyTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DefaultIfEmptyTest.cs @@ -3,20 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -27,7 +17,7 @@ public class DefaultIfEmptyTest : ReactiveTest public void DefaultIfEmpty_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.DefaultIfEmpty(default(IObservable))); - ReactiveAssert.Throws(() => Observable.DefaultIfEmpty(default(IObservable), 42)); + ReactiveAssert.Throws(() => Observable.DefaultIfEmpty(default, 42)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DeferAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DeferAsyncTest.cs index e9d0e882be..d5702592bb 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DeferAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DeferAsyncTest.cs @@ -3,20 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -54,7 +46,7 @@ public void DeferAsync_WithCancel_Simple() public void DeferAsync_WithCancel_Cancel() { var N = 10;// 0000; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var e = new ManualResetEvent(false); var called = false; @@ -64,7 +56,9 @@ public void DeferAsync_WithCancel_Cancel() e.Set(); while (!ct.IsCancellationRequested) + { ; + } return Observable.Defer(() => { called = true; return Observable.Return(42); }); })); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DeferTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DeferTest.cs index 083ac459c6..acd9619a95 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DeferTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DeferTest.cs @@ -3,20 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DelaySubscriptionTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DelaySubscriptionTest.cs index bc64d264fc..33fc972245 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DelaySubscriptionTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DelaySubscriptionTest.cs @@ -5,18 +5,11 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -28,11 +21,11 @@ public void DelaySubscription_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.DelaySubscription(default(IObservable), DateTimeOffset.Now)); ReactiveAssert.Throws(() => Observable.DelaySubscription(default(IObservable), DateTimeOffset.Now, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Observable.DelaySubscription(DummyObservable.Instance, DateTimeOffset.Now, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.DelaySubscription(DummyObservable.Instance, DateTimeOffset.Now, default)); ReactiveAssert.Throws(() => Observable.DelaySubscription(default(IObservable), TimeSpan.Zero)); ReactiveAssert.Throws(() => Observable.DelaySubscription(default(IObservable), TimeSpan.Zero, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Observable.DelaySubscription(DummyObservable.Instance, TimeSpan.Zero, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.DelaySubscription(DummyObservable.Instance, TimeSpan.Zero, default)); ReactiveAssert.Throws(() => Observable.DelaySubscription(DummyObservable.Instance, TimeSpan.FromSeconds(-1))); ReactiveAssert.Throws(() => Observable.DelaySubscription(DummyObservable.Instance, TimeSpan.FromSeconds(-1), Scheduler.Immediate)); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DelayTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DelayTest.cs index 0c734f2e41..79f97a0509 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DelayTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DelayTest.cs @@ -5,18 +5,16 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -722,9 +720,13 @@ public void Delay_CrossingMessages() { lst.Add(x); if (x < 9) + { s.OnNext(x + 1); + } else + { s.OnCompleted(); + } }, () => { evt.Set(); @@ -744,8 +746,8 @@ public void Delay_Duration_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Delay(default(IObservable), x => someObservable)); ReactiveAssert.Throws(() => Observable.Delay(someObservable, default(Func>))); ReactiveAssert.Throws(() => Observable.Delay(default(IObservable), someObservable, x => someObservable)); - ReactiveAssert.Throws(() => Observable.Delay(someObservable, default(IObservable), x => someObservable)); - ReactiveAssert.Throws(() => Observable.Delay(someObservable, someObservable, default(Func>))); + ReactiveAssert.Throws(() => Observable.Delay(someObservable, default, x => someObservable)); + ReactiveAssert.Throws(() => Observable.Delay(someObservable, someObservable, default)); } [Fact] @@ -1196,7 +1198,9 @@ public void Delay_Duration_SelectorThrows1() xs.Delay(x => { if (x == 4) + { throw ex; + } return ys; }) @@ -1384,7 +1388,9 @@ public void Delay_Duration_SelectorThrows2() ); } else + { throw ex; + } }) ); @@ -1702,7 +1708,7 @@ public void Delay_ErrorHandling1() Assert.False(called); } - class ImpulseScheduler : IScheduler + private class ImpulseScheduler : IScheduler { public DateTimeOffset Now { @@ -1761,7 +1767,7 @@ public void Delay_LongRunning_CancelEarly() e.WaitOne(); } - class MyLongRunning1 : LocalScheduler, ISchedulerLongRunning + private class MyLongRunning1 : LocalScheduler, ISchedulerLongRunning { private ManualResetEvent _start; private ManualResetEvent _stop; @@ -1807,7 +1813,7 @@ public void Delay_LongRunning_CancelLate() e.WaitOne(); } - class MyLongRunning2 : LocalScheduler, ISchedulerLongRunning + private class MyLongRunning2 : LocalScheduler, ISchedulerLongRunning { private ManualResetEvent _start; private ManualResetEvent _stop; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DematerializeTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DematerializeTest.cs index 215e2ff31d..14023c219e 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DematerializeTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DematerializeTest.cs @@ -3,20 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DistinctTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DistinctTest.cs index 411def14b8..ba80bc4d39 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DistinctTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DistinctTest.cs @@ -5,18 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -27,12 +19,12 @@ public class DistinctTest : ReactiveTest public void Distinct_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.Distinct(default(IObservable))); - ReactiveAssert.Throws(() => Observable.Distinct(default(IObservable), EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.Distinct(default, EqualityComparer.Default)); ReactiveAssert.Throws(() => Observable.Distinct(DummyObservable.Instance, default(EqualityComparer))); ReactiveAssert.Throws(() => Observable.Distinct(default(IObservable), x => x)); ReactiveAssert.Throws(() => Observable.Distinct(DummyObservable.Instance, default(Func))); ReactiveAssert.Throws(() => Observable.Distinct(default(IObservable), x => x, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Observable.Distinct(DummyObservable.Instance, default(Func), EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.Distinct(DummyObservable.Instance, default, EqualityComparer.Default)); ReactiveAssert.Throws(() => Observable.Distinct(DummyObservable.Instance, x => x, default(EqualityComparer))); } @@ -160,7 +152,7 @@ public void Distinct_CustomComparer_SomeDuplicates() ); } - class ModComparer : IEqualityComparer + private class ModComparer : IEqualityComparer { private readonly int _mod; @@ -321,7 +313,7 @@ public void Distinct_KeySelector_Throws() var ex = new Exception(); var res = scheduler.Start(() => - xs.Distinct(x => { if (x == 0) throw ex; return x / 2; }) + xs.Distinct(x => { if (x == 0) { throw ex; } return x / 2; }) ); res.Messages.AssertEqual( @@ -367,7 +359,7 @@ public void Distinct_CustomComparer_Throws() ); } - class ThrowComparer : IEqualityComparer + private class ThrowComparer : IEqualityComparer { private readonly int _err; private readonly Exception _ex; @@ -386,7 +378,9 @@ public bool Equals(int x, int y) public int GetHashCode(int obj) { if (obj == _err) + { throw _ex; + } return EqualityComparer.Default.GetHashCode(obj); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DistinctUntilChangedTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DistinctUntilChangedTest.cs index eb1ac168f6..2dcb553df8 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DistinctUntilChangedTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DistinctUntilChangedTest.cs @@ -4,19 +4,9 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -307,9 +297,9 @@ public void DistinctUntilChanged_KeySelector_Div2() ); } - class FuncComparer : IEqualityComparer + private class FuncComparer : IEqualityComparer { - private Func _equals; + private readonly Func _equals; public FuncComparer(Func equals) { @@ -373,9 +363,9 @@ public void DistinctUntilChanged_ComparerThrows() ); } - class ThrowComparer : IEqualityComparer + private class ThrowComparer : IEqualityComparer { - private Exception _ex; + private readonly Exception _ex; public ThrowComparer(Exception ex) { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DoTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DoTest.cs index 77c975fcc1..f94ea83e51 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DoTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DoTest.cs @@ -3,20 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -31,14 +21,14 @@ public void Do_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Do(someObservable, (Action)null)); ReactiveAssert.Throws(() => Observable.Do(null, _ => { })); ReactiveAssert.Throws(() => Observable.Do(someObservable, x => { }, (Action)null)); - ReactiveAssert.Throws(() => Observable.Do(someObservable, (Action)null, () => { })); + ReactiveAssert.Throws(() => Observable.Do(someObservable, null, () => { })); ReactiveAssert.Throws(() => Observable.Do(null, x => { }, () => { })); ReactiveAssert.Throws(() => Observable.Do(someObservable, x => { }, (Action)null)); - ReactiveAssert.Throws(() => Observable.Do(someObservable, (Action)null, (Exception _) => { })); + ReactiveAssert.Throws(() => Observable.Do(someObservable, null, (Exception _) => { })); ReactiveAssert.Throws(() => Observable.Do(null, x => { }, (Exception _) => { })); ReactiveAssert.Throws(() => Observable.Do(someObservable, x => { }, (Exception _) => { }, null)); - ReactiveAssert.Throws(() => Observable.Do(someObservable, x => { }, (Action)null, () => { })); - ReactiveAssert.Throws(() => Observable.Do(someObservable, (Action)null, (Exception _) => { }, () => { })); + ReactiveAssert.Throws(() => Observable.Do(someObservable, x => { }, null, () => { })); + ReactiveAssert.Throws(() => Observable.Do(someObservable, null, (Exception _) => { }, () => { })); ReactiveAssert.Throws(() => Observable.Do(null, x => { }, (Exception _) => { }, () => { })); ReactiveAssert.Throws(() => Observable.Do(null, Observer.Create(i => { }))); ReactiveAssert.Throws(() => Observable.Do(someObservable, default(IObserver))); @@ -58,8 +48,8 @@ public void Do_ShouldSeeAllValues() OnCompleted(250) ); - int i = 0; - int sum = 2 + 3 + 4 + 5; + var i = 0; + var sum = 2 + 3 + 4 + 5; var res = scheduler.Start(() => xs.Do(x => { i++; sum -= x; }) ); @@ -94,7 +84,7 @@ public void Do_PlainAction() OnCompleted(250) ); - int i = 0; + var i = 0; var res = scheduler.Start(() => xs.Do(_ => { i++; }) ); @@ -128,9 +118,9 @@ public void Do_NextCompleted() OnCompleted(250) ); - int i = 0; - int sum = 2 + 3 + 4 + 5; - bool completed = false; + var i = 0; + var sum = 2 + 3 + 4 + 5; + var completed = false; var res = scheduler.Start(() => xs.Do(x => { i++; sum -= x; }, () => { completed = true; }) ); @@ -159,8 +149,8 @@ public void Do_NextCompleted_Never() var xs = scheduler.CreateHotObservable(); - int i = 0; - bool completed = false; + var i = 0; + var completed = false; var res = scheduler.Start(() => xs.Do(x => { i++; }, () => { completed = true; }) ); @@ -192,9 +182,9 @@ public void Do_NextError() OnError(250, ex) ); - int i = 0; - int sum = 2 + 3 + 4 + 5; - bool sawError = false; + var i = 0; + var sum = 2 + 3 + 4 + 5; + var sawError = false; var res = scheduler.Start(() => xs.Do(x => { i++; sum -= x; }, e => { sawError = e == ex; }) ); @@ -230,9 +220,9 @@ public void Do_NextErrorNot() OnCompleted(250) ); - int i = 0; - int sum = 2 + 3 + 4 + 5; - bool sawError = false; + var i = 0; + var sum = 2 + 3 + 4 + 5; + var sawError = false; var res = scheduler.Start(() => xs.Do(x => { i++; sum -= x; }, _ => { sawError = true; }) ); @@ -268,10 +258,10 @@ public void Do_NextErrorCompleted() OnCompleted(250) ); - int i = 0; - int sum = 2 + 3 + 4 + 5; - bool sawError = false; - bool hasCompleted = false; + var i = 0; + var sum = 2 + 3 + 4 + 5; + var sawError = false; + var hasCompleted = false; var res = scheduler.Start(() => xs.Do(x => { i++; sum -= x; }, e => { sawError = true; }, () => { hasCompleted = true; }) ); @@ -310,10 +300,10 @@ public void Do_NextErrorCompletedError() OnError(250, ex) ); - int i = 0; - int sum = 2 + 3 + 4 + 5; - bool sawError = false; - bool hasCompleted = false; + var i = 0; + var sum = 2 + 3 + 4 + 5; + var sawError = false; + var hasCompleted = false; var res = scheduler.Start(() => xs.Do(x => { i++; sum -= x; }, e => { sawError = e == ex; }, () => { hasCompleted = true; }) ); @@ -343,9 +333,9 @@ public void Do_NextErrorCompletedNever() var xs = scheduler.CreateHotObservable(); - int i = 0; - bool sawError = false; - bool hasCompleted = false; + var i = 0; + var sawError = false; + var hasCompleted = false; var res = scheduler.Start(() => xs.Do(x => { i++; }, e => { sawError = true; }, () => { hasCompleted = true; }) ); @@ -378,10 +368,10 @@ public void Do_Observer_SomeDataWithError() OnError(250, ex) ); - int i = 0; - int sum = 2 + 3 + 4 + 5; - bool sawError = false; - bool hasCompleted = false; + var i = 0; + var sum = 2 + 3 + 4 + 5; + var sawError = false; + var hasCompleted = false; var res = scheduler.Start(() => xs.Do(Observer.Create(x => { i++; sum -= x; }, e => { sawError = e == ex; }, () => { hasCompleted = true; })) ); @@ -418,10 +408,10 @@ public void Do_Observer_SomeDataWithoutError() OnCompleted(250) ); - int i = 0; - int sum = 2 + 3 + 4 + 5; - bool sawError = false; - bool hasCompleted = false; + var i = 0; + var sum = 2 + 3 + 4 + 5; + var sawError = false; + var hasCompleted = false; var res = scheduler.Start(() => xs.Do(Observer.Create(x => { i++; sum -= x; }, e => { sawError = true; }, () => { hasCompleted = true; })) ); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DoWhileTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DoWhileTest.cs index f4e0b93aa9..24c23feb84 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DoWhileTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/DoWhileTest.cs @@ -3,20 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -151,7 +141,7 @@ public void DoWhile_SometimesTrue() OnCompleted(250) ); - int n = 0; + var n = 0; var results = scheduler.Start(() => Observable.DoWhile(xs, () => ++n < 3)); @@ -191,7 +181,7 @@ public void DoWhile_SometimesThrows() OnCompleted(250) ); - int n = 0; + var n = 0; var ex = new Exception(); @@ -220,7 +210,7 @@ public void DoWhile_SometimesThrows() ); } - static T Throw(Exception ex) + private static T Throw(Exception ex) { throw ex; } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ElementAtOrDefaultTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ElementAtOrDefaultTest.cs index 26a749205b..e50331f27d 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ElementAtOrDefaultTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ElementAtOrDefaultTest.cs @@ -3,17 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ElementAtTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ElementAtTest.cs index 3341286773..19d3fb9840 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ElementAtTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ElementAtTest.cs @@ -3,17 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/EmptyTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/EmptyTest.cs index 937262a4fb..0812788756 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/EmptyTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/EmptyTest.cs @@ -3,20 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ExpandTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ExpandTest.cs index 48c27d3148..7dcb4ed54b 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ExpandTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ExpandTest.cs @@ -3,20 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FinallyTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FinallyTest.cs index 35e15aedf7..b4e9beff34 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FinallyTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FinallyTest.cs @@ -3,20 +3,9 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -37,7 +26,7 @@ public void Finally_Never() { var scheduler = new TestScheduler(); - bool invoked = false; + var invoked = false; var res = scheduler.Start(() => Observable.Never().Finally(() => { invoked = true; }) ); @@ -51,7 +40,7 @@ public void Finally_Never() [Fact] public void Finally_OnlyCalledOnce_Never() { - int invokeCount = 0; + var invokeCount = 0; var someObservable = Observable.Never().Finally(() => { invokeCount++; }); var d = someObservable.Subscribe(); d.Dispose(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstAsyncTest.cs index f55e84fe99..13725524e9 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstAsyncTest.cs @@ -3,17 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -24,7 +17,7 @@ public void FirstAsync_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.FirstAsync(default(IObservable))); ReactiveAssert.Throws(() => Observable.FirstAsync(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.FirstAsync(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.FirstAsync(DummyObservable.Instance, default)); } [Fact] @@ -224,7 +217,7 @@ public void FirstAsync_PredicateThrows() ); var res = scheduler.Start(() => - xs.FirstAsync(x => { if (x < 4) return false; throw ex; }) + xs.FirstAsync(x => { if (x < 4) { return false; } throw ex; }) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstOrDefaultAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstOrDefaultAsyncTest.cs index a59902637c..ec95cc16fa 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstOrDefaultAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstOrDefaultAsyncTest.cs @@ -3,17 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -24,7 +17,7 @@ public void FirstOrDefaultAsync_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.FirstOrDefaultAsync(default(IObservable))); ReactiveAssert.Throws(() => Observable.FirstOrDefaultAsync(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.FirstOrDefaultAsync(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.FirstOrDefaultAsync(DummyObservable.Instance, default)); } [Fact] @@ -230,7 +223,7 @@ public void FirstOrDefaultAsync_PredicateThrows() ); var res = scheduler.Start(() => - xs.FirstOrDefaultAsync(x => { if (x < 4) return false; throw ex; }) + xs.FirstOrDefaultAsync(x => { if (x < 4) { return false; } throw ex; }) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstOrDefaultTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstOrDefaultTest.cs index e242e0893e..c650d82c88 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstOrDefaultTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstOrDefaultTest.cs @@ -3,19 +3,14 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; +using Xunit; namespace ReactiveTests.Tests { @@ -27,19 +22,19 @@ public void FirstOrDefault_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.FirstOrDefault(default(IObservable))); ReactiveAssert.Throws(() => Observable.FirstOrDefault(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.FirstOrDefault(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.FirstOrDefault(DummyObservable.Instance, default)); } [Fact] public void FirstOrDefault_Empty() { - Assert.Equal(default(int), Observable.Empty().FirstOrDefault()); + Assert.Equal(default, Observable.Empty().FirstOrDefault()); } [Fact] public void FirstOrDefaultPredicate_Empty() { - Assert.Equal(default(int), Observable.Empty().FirstOrDefault(_ => true)); + Assert.Equal(default, Observable.Empty().FirstOrDefault(_ => true)); } [Fact] @@ -101,7 +96,7 @@ public void FirstOrDefault_NoDoubleSet() } #endif - class O : IObservable + private class O : IObservable { private readonly ManualResetEvent _event = new ManualResetEvent(false); private IObserver _observer; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstTest.cs index 03e162b03b..e9d193cf02 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FirstTest.cs @@ -3,17 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -25,7 +19,7 @@ public void First_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.First(default(IObservable))); ReactiveAssert.Throws(() => Observable.First(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.First(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.First(DummyObservable.Instance, default)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForEachAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForEachAsyncTest.cs index c01332cf0f..605d22ef3b 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForEachAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForEachAsyncTest.cs @@ -4,19 +4,13 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -170,7 +164,10 @@ public void ForEachAsync_Throw() scheduler.ScheduleAbsolute(150, () => task = xs.ForEachAsync(x => { if (scheduler.Clock > 400) + { throw exception; + } + list.Add(new Recorded(scheduler.Clock, x)); }, cts.Token)); @@ -316,7 +313,7 @@ public void ForEachAsync_Default_Cancel() { var N = 10; - for (int n = 0; n < N; n++) + for (var n = 0; n < N; n++) { var cts = new CancellationTokenSource(); var done = false; @@ -335,7 +332,9 @@ public void ForEachAsync_Default_Cancel() x => { lock (lst) + { lst.Add(x); + } }, cts.Token ); @@ -343,17 +342,25 @@ public void ForEachAsync_Default_Cancel() while (true) { lock (lst) + { if (lst.Count >= 10) + { break; + } + } } cts.Cancel(); while (!t.IsCompleted) + { ; + } - for (int i = 0; i < 10; i++) + for (var i = 0; i < 10; i++) + { Assert.Equal(42, lst[i]); + } Assert.True(done); Assert.True(t.IsCanceled); @@ -365,7 +372,7 @@ public void ForEachAsync_Index_Cancel() { var N = 10; - for (int n = 0; n < N; n++) + for (var n = 0; n < N; n++) { var cts = new CancellationTokenSource(); var done = false; @@ -384,7 +391,9 @@ public void ForEachAsync_Index_Cancel() (x, i) => { lock (lst) + { lst.Add(x * i); + } }, cts.Token ); @@ -392,17 +401,25 @@ public void ForEachAsync_Index_Cancel() while (true) { lock (lst) + { if (lst.Count >= 10) + { break; + } + } } cts.Cancel(); while (!t.IsCompleted) + { ; + } - for (int i = 0; i < 10; i++) + for (var i = 0; i < 10; i++) + { Assert.Equal(i * 42, lst[i]); + } Assert.True(done); Assert.True(t.IsCanceled); @@ -553,7 +570,10 @@ public void ForEachAsync_SubscribeThrows() var xs = Observable.Create(observer => { if (x == 42) + { throw ex; + } + return Disposable.Empty; }); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForEachTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForEachTest.cs index 111e62e798..11132a79ea 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForEachTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForEachTest.cs @@ -5,15 +5,9 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForTest.cs index ece3dc5727..8983f4cedb 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForTest.cs @@ -4,19 +4,10 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -55,7 +46,7 @@ public void For_Basic() ); } - IEnumerable For_Error_Core(Exception ex) + private IEnumerable For_Error_Core(Exception ex) { yield return 1; yield return 2; @@ -118,7 +109,7 @@ public void For_SelectorThrows() ); } - static T Throw(Exception ex) + private static T Throw(Exception ex) { throw ex; } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForkJoinTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForkJoinTest.cs index 98979d3de1..d900c2f3f5 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForkJoinTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ForkJoinTest.cs @@ -5,18 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromAsyncPatternTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromAsyncPatternTest.cs index 1bd87b1d66..9a4e717ecc 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromAsyncPatternTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromAsyncPatternTest.cs @@ -3,29 +3,25 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { +#pragma warning disable IDE0039 // Use local function public class FromAsyncPatternTest : ReactiveTest { - private Task doneTask; + private readonly Task _doneTask; public FromAsyncPatternTest() { var tcs = new TaskCompletionSource(); tcs.SetResult(42); - doneTask = tcs.Task; + _doneTask = tcs.Task; } [Fact] @@ -62,36 +58,36 @@ public void FromAsyncPattern_ArgumentChecking() ReactiveAssert.Throws(() => Observable.FromAsyncPattern(null, iar => { })); ReactiveAssert.Throws(() => Observable.FromAsyncPattern(null, iar => 0)); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, m, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, m, cb, o) => null, default(Func))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, m, n, cb, o) => null, default(Action))); - ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, m, n, cb, o) => null, default(Func))); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, m, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, m, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, m, n, cb, o) => null, default)); + ReactiveAssert.Throws(() => Observable.FromAsyncPattern((a, b, c, d, e, f, g, h, i, j, k, l, m, n, cb, o) => null, default)); } [Fact] @@ -1165,7 +1161,7 @@ public void FromAsyncPattern14_ErrorBegin() Assert.True(res.SequenceEqual(new Notification[] { Notification.CreateOnError(ex) })); } - class Result : IAsyncResult + private class Result : IAsyncResult { public object AsyncState { @@ -1189,4 +1185,5 @@ public bool IsCompleted } } +#pragma warning restore IDE0039 // Use local function } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromAsyncTest.cs index 5f1a7d32ab..7ab97e08a7 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromAsyncTest.cs @@ -3,29 +3,26 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Threading; namespace ReactiveTests.Tests { public class FromAsyncTest : ReactiveTest { - private Task doneTask; + private readonly Task _doneTask; public FromAsyncTest() { var tcs = new TaskCompletionSource(); tcs.SetResult(42); - doneTask = tcs.Task; + _doneTask = tcs.Task; } #region Func @@ -39,9 +36,9 @@ public void FromAsync_Func_ArgumentChecking() ReactiveAssert.Throws(() => Observable.FromAsync(default(Func>))); ReactiveAssert.Throws(() => Observable.FromAsync(default(Func>), s)); - ReactiveAssert.Throws(() => Observable.FromAsync(() => doneTask, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromAsync(() => _doneTask, default)); ReactiveAssert.Throws(() => Observable.FromAsync(default(Func>), s)); - ReactiveAssert.Throws(() => Observable.FromAsync(ct => doneTask, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromAsync(ct => _doneTask, default)); } [Fact] @@ -146,7 +143,9 @@ public void FromAsync_FuncWithCancel_Cancel() { e.Set(); while (true) + { ct.ThrowIfCancellationRequested(); + } } finally { @@ -161,7 +160,9 @@ public void FromAsync_FuncWithCancel_Cancel() f.WaitOne(); while (!t.IsCompleted) + { ; + } } #if DESKTOPCLR @@ -229,9 +230,9 @@ public void FromAsync_Action_ArgumentChecking() ReactiveAssert.Throws(() => Observable.FromAsync(default(Func))); ReactiveAssert.Throws(() => Observable.FromAsync(default(Func), s)); - ReactiveAssert.Throws(() => Observable.FromAsync(() => (Task)doneTask, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromAsync(() => (Task)_doneTask, default)); ReactiveAssert.Throws(() => Observable.FromAsync(default(Func), s)); - ReactiveAssert.Throws(() => Observable.FromAsync(ct => (Task)doneTask, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromAsync(ct => (Task)_doneTask, default)); } [Fact] @@ -332,7 +333,9 @@ public void FromAsync_ActionWithCancel_Cancel() { e.Set(); while (true) + { ct.ThrowIfCancellationRequested(); + } } finally { @@ -347,7 +350,9 @@ public void FromAsync_ActionWithCancel_Cancel() f.WaitOne(); while (!t.IsCompleted) + { ; + } } #if DESKTOPCLR diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromEventPatternTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromEventPatternTest.cs index 74ac3ea38e..95c7d50aad 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromEventPatternTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromEventPatternTest.cs @@ -4,21 +4,16 @@ using System; using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; -using Microsoft.Reactive.Testing; -using Xunit; -using ReactiveTests.Dummies; using System.Reflection; using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; -using System.ComponentModel; -using System.Diagnostics; +using Microsoft.Reactive.Testing; +using Xunit; namespace ReactiveTests.Tests { @@ -35,7 +30,7 @@ public void FromEventPattern_Conversion_ArgumentChecking() ReactiveAssert.Throws(() => Observable.FromEventPattern(null, h => { }, Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, null, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, h => { }, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, h => { }, default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(null, h => { }, h => { })); ReactiveAssert.Throws(() => Observable.FromEventPattern(h => new EventHandler(h), null, h => { })); @@ -44,7 +39,7 @@ public void FromEventPattern_Conversion_ArgumentChecking() ReactiveAssert.Throws(() => Observable.FromEventPattern(null, h => { }, h => { }, Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(h => new EventHandler(h), null, h => { }, Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(h => new EventHandler(h), h => { }, null, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(h => new EventHandler(h), h => { }, h => { }, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEventPattern(h => new EventHandler(h), h => { }, h => { }, default)); } [Fact] @@ -190,15 +185,15 @@ public void FromEventPattern_AddRemove_ArgumentChecking() ReactiveAssert.Throws(() => Observable.FromEventPattern(null, h => { }, Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, null, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, h => { }, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, h => { }, default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(null, h => { }, Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, null, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, h => { }, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, h => { }, default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(null, h => { }, Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, null, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, h => { }, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEventPattern(h => { }, h => { }, default)); } [Fact] @@ -241,7 +236,7 @@ public void FromEventPattern_Reflection_Instance_ArgumentChecking() ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), null)); ReactiveAssert.Throws(() => Observable.FromEventPattern(default(object), "foo", Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), null, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "foo", default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "foo", default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E1")); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E5")); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E6")); @@ -251,7 +246,7 @@ public void FromEventPattern_Reflection_Instance_ArgumentChecking() ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), null)); ReactiveAssert.Throws(() => Observable.FromEventPattern(default(object), "foo", Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), null, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "foo", default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "foo", default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E1")); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E2")); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E3")); @@ -264,7 +259,7 @@ public void FromEventPattern_Reflection_Instance_ArgumentChecking() ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), null)); ReactiveAssert.Throws(() => Observable.FromEventPattern(default(object), "foo", Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), null, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "foo", default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "foo", default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E1")); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E2")); ReactiveAssert.Throws(() => Observable.FromEventPattern(new FromEventPattern_ArgCheck(), "E3")); @@ -394,7 +389,7 @@ public void FromEventPattern_Reflection_Instance_E1() scheduler.ScheduleAbsolute(1050, () => fe.M1(6)); var results = scheduler.Start(() => - Observable.FromEventPattern(fe, "E1").Select(evt => new { Sender = (object)evt.Sender, EventArgs = (object)evt.EventArgs }) + Observable.FromEventPattern(fe, "E1").Select(evt => new { Sender = evt.Sender, EventArgs = (object)evt.EventArgs }) ); results.Messages.AssertEqual( @@ -419,7 +414,7 @@ public void FromEventPattern_Reflection_Instance_E2() scheduler.ScheduleAbsolute(1050, () => fe.M2(6)); var results = scheduler.Start(() => - Observable.FromEventPattern(fe, "E2").Select(evt => new { Sender = (object)evt.Sender, EventArgs = (object)evt.EventArgs }) + Observable.FromEventPattern(fe, "E2").Select(evt => new { Sender = evt.Sender, EventArgs = (object)evt.EventArgs }) ); results.Messages.AssertEqual( @@ -444,7 +439,7 @@ public void FromEventPattern_Reflection_Instance_E2_WithSender() scheduler.ScheduleAbsolute(1050, () => fe.M2(6)); var results = scheduler.Start(() => - Observable.FromEventPattern(fe, "E2").Select(evt => new { Sender = (object)evt.Sender, EventArgs = (object)evt.EventArgs }) + Observable.FromEventPattern(fe, "E2").Select(evt => new { Sender = evt.Sender, EventArgs = (object)evt.EventArgs }) ); results.Messages.AssertEqual( @@ -469,7 +464,7 @@ public void FromEventPattern_Reflection_Instance_E3() scheduler.ScheduleAbsolute(1050, () => fe.M3(6)); var results = scheduler.Start(() => - Observable.FromEventPattern(fe, "E3").Select(evt => new { Sender = (object)evt.Sender, EventArgs = (object)evt.EventArgs }) + Observable.FromEventPattern(fe, "E3").Select(evt => new { Sender = evt.Sender, EventArgs = (object)evt.EventArgs }) ); results.Messages.AssertEqual( @@ -519,25 +514,25 @@ public void FromEventPattern_Reflection_Instance_MissingAccessors() [Fact] public void FromEventPattern_Reflection_Static_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.FromEventPattern(default(Type), "foo")); + ReactiveAssert.Throws(() => Observable.FromEventPattern(default, "foo")); ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), null)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(default(Type), "foo", Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEventPattern(default, "foo", Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), null, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), "foo", default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), "foo", default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), "foo")); - ReactiveAssert.Throws(() => Observable.FromEventPattern(default(Type), "foo")); + ReactiveAssert.Throws(() => Observable.FromEventPattern(default, "foo")); ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), null)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(default(Type), "foo", Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEventPattern(default, "foo", Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), null, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), "foo", default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), "foo", default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), "foo")); - ReactiveAssert.Throws(() => Observable.FromEventPattern(default(Type), "foo")); + ReactiveAssert.Throws(() => Observable.FromEventPattern(default, "foo")); ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), null)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(default(Type), "foo", Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEventPattern(default, "foo", Scheduler.Default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), null, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), "foo", default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), "foo", default)); ReactiveAssert.Throws(() => Observable.FromEventPattern(typeof(FromEventPattern_ArgCheck), "foo")); } @@ -554,7 +549,7 @@ public void FromEventPattern_Reflection_Static_E6() scheduler.ScheduleAbsolute(1050, () => FromEventPattern.M6(6)); var results = scheduler.Start(() => - Observable.FromEventPattern(typeof(FromEventPattern), "E6").Select(evt => new { Sender = (object)evt.Sender, EventArgs = (object)evt.EventArgs }) + Observable.FromEventPattern(typeof(FromEventPattern), "E6").Select(evt => new { Sender = evt.Sender, EventArgs = (object)evt.EventArgs }) ); results.Messages.AssertEqual( @@ -577,7 +572,7 @@ public void FromEventPattern_Reflection_Static_E6_WithSender() scheduler.ScheduleAbsolute(1050, () => FromEventPattern.M6(6)); var results = scheduler.Start(() => - Observable.FromEventPattern(typeof(FromEventPattern), "E6").Select(evt => new { Sender = (object)evt.Sender, EventArgs = (object)evt.EventArgs }) + Observable.FromEventPattern(typeof(FromEventPattern), "E6").Select(evt => new { Sender = evt.Sender, EventArgs = (object)evt.EventArgs }) ); results.Messages.AssertEqual( @@ -600,7 +595,7 @@ public void FromEventPattern_Reflection_Static_NonGeneric_E6() scheduler.ScheduleAbsolute(1050, () => FromEventPattern.M6(6)); var results = scheduler.Start(() => - Observable.FromEventPattern(typeof(FromEventPattern), "E6").Select(evt => new { Sender = (object)evt.Sender, EventArgs = (object)evt.EventArgs }) + Observable.FromEventPattern(typeof(FromEventPattern), "E6").Select(evt => new { Sender = evt.Sender, EventArgs = evt.EventArgs }) ); results.Messages.AssertEqual( @@ -769,9 +764,15 @@ public override string ToString() public bool Equals(TestEventArgs other) { if (other == this) + { return true; + } + if (other == null) + { return false; + } + return other.Id == Id; } @@ -792,36 +793,28 @@ public override int GetHashCode() public void M1(int i) { - var e = E1; - if (e != null) - e(this, new TestEventArgs { Id = i }); + E1?.Invoke(this, new TestEventArgs { Id = i }); } public event EventHandler E2; public void M2(int i) { - var e = E2; - if (e != null) - e(this, new TestEventArgs { Id = i }); + E2?.Invoke(this, new TestEventArgs { Id = i }); } public event Action E3; public void M3(int i) { - var e = E3; - if (e != null) - e(this, new TestEventArgs { Id = i }); + E3?.Invoke(this, new TestEventArgs { Id = i }); } public event Action E4; public void M4(int i) { - var e = E4; - if (e != null) - e(i); + E4?.Invoke(i); } public event TestEventHandler AddThrows @@ -839,18 +832,14 @@ public event TestEventHandler RemoveThrows public event EventHandler E5; public void M5(int i) { - var e = E5; - if (e != null) - e(this, new FromEventPattern.TestEventArgs { Id = i }); + E5?.Invoke(this, new FromEventPattern.TestEventArgs { Id = i }); } public static event EventHandler E6; public static void M6(int i) { - var e = E6; - if (e != null) - e(null, new TestEventArgs { Id = i }); + E6?.Invoke(null, new TestEventArgs { Id = i }); } } @@ -862,33 +851,25 @@ public class FromEvent public void OnA() { - var a = A; - if (a != null) - a(); + A?.Invoke(); } public event Action B; public void OnB(int x) { - var b = B; - if (b != null) - b(x); + B?.Invoke(x); } public event MyAction C; public void OnC(int x) { - var c = C; - if (c != null) - c(x); + C?.Invoke(x); } } - - - class FromEventPattern_ArgCheck + internal class FromEventPattern_ArgCheck { #pragma warning disable 67 public event Action E1; @@ -910,20 +891,16 @@ public class FromEventPattern_VarianceCheck public void OnE2(CancelEventArgs args) { - var e = E2; - if (e != null) - e(this, args); + E2?.Invoke(this, args); } public void OnE3(string sender) { - var e = E3; - if (e != null) - e(sender, EventArgs.Empty); + E3?.Invoke(sender, EventArgs.Empty); } } - class MyEventObject + internal class MyEventObject { public static Action Add; public static Action Remove; @@ -941,19 +918,17 @@ public static event EventHandler S } } - class MyEventSource + internal class MyEventSource { public event EventHandler Bar; public void OnBar(int value) { - var bar = Bar; - if (bar != null) - bar(this, new MyEventArgs(value)); + Bar?.Invoke(this, new MyEventArgs(value)); } } - class MyEventArgs : EventArgs + internal class MyEventArgs : EventArgs { public MyEventArgs(int value) { @@ -963,7 +938,7 @@ public MyEventArgs(int value) public int Value { get; private set; } } - class MyEventSyncCtx : SynchronizationContext + internal class MyEventSyncCtx : SynchronizationContext { public int PostCount { get; private set; } @@ -983,9 +958,9 @@ public override void Post(SendOrPostCallback d, object state) } } - class MyEventScheduler : LocalScheduler + internal class MyEventScheduler : LocalScheduler { - private Action _schedule; + private readonly Action _schedule; public MyEventScheduler(Action schedule) { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromEventTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromEventTest.cs index 7ef23f2c2e..eb1fc3d73e 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromEventTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/FromEventTest.cs @@ -5,18 +5,11 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -26,35 +19,35 @@ public class FromEventTest : ReactiveTest [Fact] public void FromEvent_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.FromEvent, int>(default(Func, Action>), h => { }, h => { })); - ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => h, default(Action>), h => { })); - ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => h, h => { }, default(Action>))); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(default, h => { }, h => { })); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => h, default, h => { })); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => h, h => { }, default)); - ReactiveAssert.Throws(() => Observable.FromEvent, int>(default(Action>), h => { })); - ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => { }, default(Action>))); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(default, h => { })); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => { }, default)); - ReactiveAssert.Throws(() => Observable.FromEvent(default(Action>), h => { })); - ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, default(Action>))); + ReactiveAssert.Throws(() => Observable.FromEvent(default, h => { })); + ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, default)); - ReactiveAssert.Throws(() => Observable.FromEvent(default(Action), h => { })); - ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, default(Action))); + ReactiveAssert.Throws(() => Observable.FromEvent(default, h => { })); + ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, default)); - ReactiveAssert.Throws(() => Observable.FromEvent, int>(default(Func, Action>), h => { }, h => { }, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => h, default(Action>), h => { }, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => h, h => { }, default(Action>), Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => h, h => { }, h => { }, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(default, h => { }, h => { }, Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => h, default, h => { }, Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => h, h => { }, default, Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => h, h => { }, h => { }, default)); - ReactiveAssert.Throws(() => Observable.FromEvent, int>(default(Action>), h => { }, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => { }, default(Action>), Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => { }, h => { }, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(default, h => { }, Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => { }, default, Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEvent, int>(h => { }, h => { }, default)); - ReactiveAssert.Throws(() => Observable.FromEvent(default(Action>), h => { }, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, default(Action>), Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, h => { }, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEvent(default, h => { }, Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, default, Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, h => { }, default)); - ReactiveAssert.Throws(() => Observable.FromEvent(default(Action), h => { }, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, default(Action), Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, h => { }, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.FromEvent(default, h => { }, Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, default, Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.FromEvent(h => { }, h => { }, default)); } [Fact] @@ -280,9 +273,9 @@ public void FromEvent_SynchronizationContext() var s = new Thread(() => { - beforeSubscribeNull = object.ReferenceEquals(SynchronizationContext.Current, null); + beforeSubscribeNull = SynchronizationContext.Current is null; d = xs.Subscribe(e => res.Add(e.EventArgs.Value)); - afterSubscribeNull = object.ReferenceEquals(SynchronizationContext.Current, null); + afterSubscribeNull = SynchronizationContext.Current is null; }); s.Start(); @@ -300,9 +293,9 @@ public void FromEvent_SynchronizationContext() var u = new Thread(() => { - beforeDisposeNull = object.ReferenceEquals(SynchronizationContext.Current, null); + beforeDisposeNull = SynchronizationContext.Current is null; d.Dispose(); - afterDisposeNull = object.ReferenceEquals(SynchronizationContext.Current, null); + afterDisposeNull = SynchronizationContext.Current is null; }); u.Start(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GenerateTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GenerateTest.cs index 7d94168aee..b575d5d728 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GenerateTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GenerateTest.cs @@ -5,19 +5,13 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Runtime.CompilerServices; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; -using System.Runtime.CompilerServices; +using Xunit; namespace ReactiveTests.Tests { @@ -29,9 +23,9 @@ public class GenerateTest : ReactiveTest public void Generate_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, (IScheduler)null)); - ReactiveAssert.Throws(() => Observable.Generate(0, (Func)null, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, null, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, (Func)null, DummyScheduler.Instance)); - ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, (Func)null, DummyFunc.Instance, DummyScheduler.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, null, DummyFunc.Instance, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance).Subscribe(null)); } @@ -121,9 +115,9 @@ public void Generate_Dispose() [Fact] public void Generate_DefaultScheduler_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Generate(0, (Func)null, DummyFunc.Instance, DummyFunc.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, null, DummyFunc.Instance, DummyFunc.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, (Func)null)); - ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, (Func)null, DummyFunc.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, null, DummyFunc.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance).Subscribe(null)); } @@ -169,7 +163,9 @@ public void Generate_LongRunning2() start.WaitOne(); while (lst.Count < 100) + { ; + } d.Dispose(); end.WaitOne(); @@ -185,7 +181,7 @@ public void Generate_LongRunning_Throw() var s = new TestLongRunningScheduler(x => start = x, x => end = x); var ex = new Exception(); - var xs = Observable.Generate(0, x => { if (x < 100) return true; throw ex; }, x => x + 1, x => x, s); + var xs = Observable.Generate(0, x => { if (x < 100) { return true; } throw ex; }, x => x + 1, x => x, s); var lst = new List(); var e = default(Exception); @@ -207,10 +203,10 @@ public void Generate_LongRunning_Throw() [Fact] public void Generate_TimeSpan_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, (IScheduler)null)); - ReactiveAssert.Throws(() => Observable.Generate(0, (Func)null, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, null)); + ReactiveAssert.Throws(() => Observable.Generate(0, null, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, (Func)null, DummyFunc.Instance, DummyScheduler.Instance)); - ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, (Func)null, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, null, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, (Func)null, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance).Subscribe(null)); } @@ -318,9 +314,9 @@ public void Generate_TimeSpan_Dispose() [Fact] public void Generate_TimeSpan_DefaultScheduler_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Generate(0, (Func)null, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, null, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, (Func)null, DummyFunc.Instance)); - ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, (Func)null, DummyFunc.Instance, DummyFunc.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, null, DummyFunc.Instance, DummyFunc.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, (Func)null)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance).Subscribe(null)); } @@ -334,10 +330,10 @@ public void Generate_TimeSpan_DefaultScheduler() [Fact] public void Generate_DateTimeOffset_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, (IScheduler)null)); - ReactiveAssert.Throws(() => Observable.Generate(0, (Func)null, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, null)); + ReactiveAssert.Throws(() => Observable.Generate(0, null, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, (Func)null, DummyFunc.Instance, DummyScheduler.Instance)); - ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, (Func)null, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, null, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, (Func)null, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyScheduler.Instance).Subscribe(null)); } @@ -445,9 +441,9 @@ public void Generate_DateTimeOffset_Dispose() [Fact] public void Generate_DateTimeOffset_DefaultScheduler_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Generate(0, (Func)null, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, null, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, (Func)null, DummyFunc.Instance)); - ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, (Func)null, DummyFunc.Instance, DummyFunc.Instance)); + ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, null, DummyFunc.Instance, DummyFunc.Instance)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, (Func)null)); ReactiveAssert.Throws(() => Observable.Generate(0, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc.Instance).Subscribe(null)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GetEnumeratorTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GetEnumeratorTest.cs index e70e0cb684..23d36c2fb8 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GetEnumeratorTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GetEnumeratorTest.cs @@ -5,16 +5,11 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Reactive.Disposables; namespace ReactiveTests.Tests { @@ -54,7 +49,10 @@ public void GetEnumerator_Regular1() var b = res.MoveNext(); hasNext.Add(b); if (b) + { vals.Add(new Tuple(scheduler.Clock, res.Current)); + } + return Disposable.Empty; }); } @@ -103,7 +101,10 @@ public void GetEnumerator_Regular2() var b = res.MoveNext(); hasNext.Add(b); if (b) + { vals.Add(new Tuple(scheduler.Clock, res.Current)); + } + return Disposable.Empty; }); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupByTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupByTest.cs index c7b97095b9..a778ab69c9 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupByTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupByTest.cs @@ -5,18 +5,12 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Text; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -28,7 +22,7 @@ public class GroupByTest : ReactiveTest public void GroupBy_ArgumentChecking() { ReactiveAssert.Throws(() => ((IObservable)null).GroupBy(DummyFunc.Instance, DummyFunc.Instance, EqualityComparer.Default)); - ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy((Func)null, DummyFunc.Instance, EqualityComparer.Default)); + ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(null, DummyFunc.Instance, EqualityComparer.Default)); ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, (Func)null, EqualityComparer.Default)); ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, DummyFunc.Instance, null)); ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, DummyFunc.Instance, EqualityComparer.Default).Subscribe(null)); @@ -47,8 +41,8 @@ public void GroupBy_KeyEle_ArgumentChecking() public void GroupBy_KeyComparer_ArgumentChecking() { ReactiveAssert.Throws(() => ((IObservable)null).GroupBy(DummyFunc.Instance, EqualityComparer.Default)); - ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy((Func)null, EqualityComparer.Default)); - ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, (IEqualityComparer)null)); + ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(null, EqualityComparer.Default)); + ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, null)); ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, EqualityComparer.Default).Subscribe(null)); } @@ -343,7 +337,10 @@ public void GroupBy_Outer_KeyThrow() { keyInvoked++; if (keyInvoked == 10) + { throw ex; + } + return x.Trim(); }, x => @@ -415,7 +412,10 @@ public void GroupBy_Outer_EleThrow() { eleInvoked++; if (eleInvoked == 10) + { throw ex; + } + return Reverse(x); }, comparer @@ -612,7 +612,9 @@ public void GroupBy_Inner_Complete() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -694,7 +696,9 @@ public void GroupBy_Inner_Complete_All() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -784,7 +788,9 @@ public void GroupBy_Inner_Error() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -866,7 +872,9 @@ public void GroupBy_Inner_Dispose() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -939,7 +947,10 @@ public void GroupBy_Inner_KeyThrow() { keyInvoked++; if (keyInvoked == 6) + { throw ex; + } + return x.Trim(); }, x => Reverse(x), comparer)); @@ -955,7 +966,9 @@ public void GroupBy_Inner_KeyThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -1026,7 +1039,10 @@ public void GroupBy_Inner_EleThrow() { eleInvoked++; if (eleInvoked == 6) + { throw ex; + } + return Reverse(x); }, comparer)); @@ -1042,7 +1058,9 @@ public void GroupBy_Inner_EleThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -1123,7 +1141,9 @@ public void GroupBy_Inner_Comparer_EqualsThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -1206,7 +1226,9 @@ public void GroupBy_Inner_Comparer_GetHashCodeThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -1291,7 +1313,9 @@ public void GroupBy_Outer_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => outerSubscription.Dispose()); @@ -1376,7 +1400,9 @@ public void GroupBy_Inner_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => innerSubscriptions["foo"].Dispose()); @@ -1465,7 +1491,9 @@ public void GroupBy_Inner_Multiple_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => innerSubscriptions["foo"].Dispose()); @@ -1702,12 +1730,14 @@ public void GroupBy_NullKeys_Error() ); } - static string Reverse(string s) + private static string Reverse(string s) { var sb = new StringBuilder(); for (var i = s.Length - 1; i >= 0; i--) + { sb.Append(s[i]); + } return sb.ToString(); } @@ -1722,7 +1752,7 @@ static string Reverse(string s) public void GroupBy_Capacity_ArgumentChecking() { ReactiveAssert.Throws(() => ((IObservable)null).GroupBy(DummyFunc.Instance, DummyFunc.Instance, _groupByCapacity, EqualityComparer.Default)); - ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy((Func)null, DummyFunc.Instance, _groupByCapacity, EqualityComparer.Default)); + ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(null, DummyFunc.Instance, _groupByCapacity, EqualityComparer.Default)); ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, (Func)null, _groupByCapacity, EqualityComparer.Default)); ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, DummyFunc.Instance, _groupByCapacity, null)); ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, DummyFunc.Instance, _groupByCapacity, EqualityComparer.Default).Subscribe(null)); @@ -1745,8 +1775,8 @@ public void GroupBy_Capacity_KeyEle_ArgumentChecking() public void GroupBy_Capacity_KeyComparer_ArgumentChecking() { ReactiveAssert.Throws(() => ((IObservable)null).GroupBy(DummyFunc.Instance, _groupByCapacity, EqualityComparer.Default)); - ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy((Func)null, _groupByCapacity, EqualityComparer.Default)); - ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, _groupByCapacity, (IEqualityComparer)null)); + ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(null, _groupByCapacity, EqualityComparer.Default)); + ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, _groupByCapacity, null)); ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, _groupByCapacity, EqualityComparer.Default).Subscribe(null)); ReactiveAssert.Throws(() => DummyObservable.Instance.GroupBy(DummyFunc.Instance, -1, EqualityComparer.Default)); @@ -2047,7 +2077,10 @@ public void GroupBy_Capacity_Outer_KeyThrow() { keyInvoked++; if (keyInvoked == 10) + { throw ex; + } + return x.Trim(); }, x => @@ -2120,7 +2153,10 @@ public void GroupBy_Capacity_Outer_EleThrow() { eleInvoked++; if (eleInvoked == 10) + { throw ex; + } + return Reverse(x); }, _groupByCapacity, @@ -2320,7 +2356,9 @@ public void GroupBy_Capacity_Inner_Complete() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2402,7 +2440,9 @@ public void GroupBy_Capacity_Inner_Complete_All() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2492,7 +2532,9 @@ public void GroupBy_Capacity_Inner_Error() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2574,7 +2616,9 @@ public void GroupBy_Capacity_Inner_Dispose() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2647,7 +2691,10 @@ public void GroupBy_Capacity_Inner_KeyThrow() { keyInvoked++; if (keyInvoked == 6) + { throw ex; + } + return x.Trim(); }, x => Reverse(x), _groupByCapacity, comparer)); @@ -2663,7 +2710,9 @@ public void GroupBy_Capacity_Inner_KeyThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2734,7 +2783,10 @@ public void GroupBy_Capacity_Inner_EleThrow() { eleInvoked++; if (eleInvoked == 6) + { throw ex; + } + return Reverse(x); }, _groupByCapacity, comparer)); @@ -2750,7 +2802,9 @@ public void GroupBy_Capacity_Inner_EleThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2831,7 +2885,9 @@ public void GroupBy_Capacity_Inner_Comparer_EqualsThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2914,7 +2970,9 @@ public void GroupBy_Capacity_Inner_Comparer_GetHashCodeThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2999,7 +3057,9 @@ public void GroupBy_Capacity_Outer_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => outerSubscription.Dispose()); @@ -3084,7 +3144,9 @@ public void GroupBy_Capacity_Inner_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => innerSubscriptions["foo"].Dispose()); @@ -3173,7 +3235,9 @@ public void GroupBy_Capacity_Inner_Multiple_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => innerSubscriptions["foo"].Dispose()); @@ -3414,11 +3478,11 @@ public void GroupBy_Capacity_NullKeys_Error() } - class GroupByComparer : IEqualityComparer + internal class GroupByComparer : IEqualityComparer { - TestScheduler scheduler; - int equalsThrowsAfter; - ushort getHashCodeThrowsAfter; + private TestScheduler scheduler; + private readonly int equalsThrowsAfter; + private readonly ushort getHashCodeThrowsAfter; public Exception HashCodeException = new Exception(); public Exception EqualsException = new Exception(); @@ -3438,7 +3502,9 @@ public GroupByComparer(TestScheduler scheduler) public bool Equals(string x, string y) { if (scheduler.Clock > equalsThrowsAfter) + { throw EqualsException; + } return x.Equals(y, StringComparison.OrdinalIgnoreCase); } @@ -3446,7 +3512,9 @@ public bool Equals(string x, string y) public int GetHashCode(string obj) { if (scheduler.Clock > getHashCodeThrowsAfter) + { throw HashCodeException; + } return StringComparer.OrdinalIgnoreCase.GetHashCode(obj); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupByUntilTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupByUntilTest.cs index 123a26b46d..b917f1121b 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupByUntilTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupByUntilTest.cs @@ -5,18 +5,13 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Text; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -27,24 +22,24 @@ public class GroupByUntilTest : ReactiveTest [Fact] public void GroupByUntil_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.GroupByUntil(default(IObservable), DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default(Func), DummyFunc.Instance, DummyFunc, IObservable>.Instance, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default(Func), DummyFunc, IObservable>.Instance, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(default, DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default, DummyFunc.Instance, DummyFunc, IObservable>.Instance, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default, DummyFunc, IObservable>.Instance, EqualityComparer.Default)); ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, DummyFunc.Instance, default(Func, IObservable>), EqualityComparer.Default)); ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, default(IEqualityComparer))); - ReactiveAssert.Throws(() => Observable.GroupByUntil(default(IObservable), DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default(Func), DummyFunc.Instance, DummyFunc, IObservable>.Instance)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default(Func), DummyFunc, IObservable>.Instance)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(default, DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default, DummyFunc.Instance, DummyFunc, IObservable>.Instance)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default, DummyFunc, IObservable>.Instance)); ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, DummyFunc.Instance, default(Func, IObservable>))); - ReactiveAssert.Throws(() => Observable.GroupByUntil(default(IObservable), DummyFunc.Instance, DummyFunc, IObservable>.Instance, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default(Func), DummyFunc, IObservable>.Instance, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(default, DummyFunc.Instance, DummyFunc, IObservable>.Instance, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default, DummyFunc, IObservable>.Instance, EqualityComparer.Default)); ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default(Func, IObservable>), EqualityComparer.Default)); ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, default(IEqualityComparer))); - ReactiveAssert.Throws(() => Observable.GroupByUntil(default(IObservable), DummyFunc.Instance, DummyFunc, IObservable>.Instance)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default(Func), DummyFunc, IObservable>.Instance)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(default, DummyFunc.Instance, DummyFunc, IObservable>.Instance)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default, DummyFunc, IObservable>.Instance)); ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default(Func, IObservable>))); } @@ -343,7 +338,10 @@ public void GroupByUntil_Outer_KeyThrow() { keyInvoked++; if (keyInvoked == 10) + { throw ex; + } + return x.Trim(); }, x => @@ -417,7 +415,10 @@ public void GroupByUntil_Outer_EleThrow() { eleInvoked++; if (eleInvoked == 10) + { throw ex; + } + return Reverse(x); }, g => g.Skip(2), @@ -618,7 +619,9 @@ public void GroupByUntil_Inner_Complete() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -702,7 +705,9 @@ public void GroupByUntil_Inner_Complete_All() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -796,7 +801,9 @@ public void GroupByUntil_Inner_Error() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -880,7 +887,9 @@ public void GroupByUntil_Inner_Dispose() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -953,7 +962,10 @@ public void GroupByUntil_Inner_KeyThrow() { keyInvoked++; if (keyInvoked == 6) + { throw ex; + } + return x.Trim(); }, x => Reverse(x), g => g.Skip(2), comparer)); @@ -969,7 +981,9 @@ public void GroupByUntil_Inner_KeyThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -1039,7 +1053,10 @@ public void GroupByUntil_Inner_EleThrow() { eleInvoked++; if (eleInvoked == 6) + { throw ex; + } + return Reverse(x); }, g => g.Skip(2), comparer)); @@ -1055,7 +1072,9 @@ public void GroupByUntil_Inner_EleThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -1136,7 +1155,9 @@ public void GroupByUntil_Inner_Comparer_EqualsThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -1219,7 +1240,9 @@ public void GroupByUntil_Inner_Comparer_GetHashCodeThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -1304,7 +1327,9 @@ public void GroupByUntil_Outer_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => outerSubscription.Dispose()); @@ -1387,7 +1412,9 @@ public void GroupByUntil_Inner_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => innerSubscriptions["foo"].Dispose()); @@ -1483,7 +1510,9 @@ public void GroupByUntil_Inner_Multiple_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => innerSubscriptions["foo"].Dispose()); @@ -1794,7 +1823,7 @@ public void GroupByUntil_NullKeys_Simple_Expire1() ); var n = 0; - var res = scheduler.Start(() => xs.GroupByUntil(x => x[0] == 'b' ? null : x.ToUpper(), g => { if (g.Key == null) n++; return Observable.Timer(TimeSpan.FromTicks(50), scheduler); }).SelectMany(g => g, (g, x) => (g.Key ?? "(null)") + x)); + var res = scheduler.Start(() => xs.GroupByUntil(x => x[0] == 'b' ? null : x.ToUpper(), g => { if (g.Key == null) { n++; } return Observable.Timer(TimeSpan.FromTicks(50), scheduler); }).SelectMany(g => g, (g, x) => (g.Key ?? "(null)") + x)); Assert.Equal(2, n); @@ -1825,7 +1854,7 @@ public void GroupByUntil_NullKeys_Simple_Expire2() ); var n = 0; - var res = scheduler.Start(() => xs.GroupByUntil(x => x[0] == 'b' ? null : x.ToUpper(), g => { if (g.Key == null) n++; return Observable.Timer(TimeSpan.FromTicks(50), scheduler).IgnoreElements(); }).SelectMany(g => g, (g, x) => (g.Key ?? "(null)") + x)); + var res = scheduler.Start(() => xs.GroupByUntil(x => x[0] == 'b' ? null : x.ToUpper(), g => { if (g.Key == null) { n++; } return Observable.Timer(TimeSpan.FromTicks(50), scheduler).IgnoreElements(); }).SelectMany(g => g, (g, x) => (g.Key ?? "(null)") + x)); Assert.Equal(2, n); @@ -1885,24 +1914,24 @@ public void GroupByUntil_NullKeys_Error() [Fact] public void GroupByUntil_Capacity_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.GroupByUntil(default(IObservable), DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default(Func), DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default(Func), DummyFunc, IObservable>.Instance, _groupByUntilCapacity, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(default, DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, EqualityComparer.Default)); ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, DummyFunc.Instance, default(Func, IObservable>), _groupByUntilCapacity, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, default(IEqualityComparer))); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, default)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(default(IObservable), DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default(Func), DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default(Func), DummyFunc, IObservable>.Instance, _groupByUntilCapacity)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(default, DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default, DummyFunc, IObservable>.Instance, _groupByUntilCapacity)); ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, DummyFunc.Instance, default(Func, IObservable>), _groupByUntilCapacity)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(default(IObservable), DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default(Func), DummyFunc, IObservable>.Instance, _groupByUntilCapacity, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(default, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, EqualityComparer.Default)); ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default(Func, IObservable>), _groupByUntilCapacity, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, default(IEqualityComparer))); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity, default)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(default(IObservable), DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity)); - ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default(Func), DummyFunc, IObservable>.Instance, _groupByUntilCapacity)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(default, DummyFunc.Instance, DummyFunc, IObservable>.Instance, _groupByUntilCapacity)); + ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, default, DummyFunc, IObservable>.Instance, _groupByUntilCapacity)); ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, default(Func, IObservable>), _groupByUntilCapacity)); ReactiveAssert.Throws(() => Observable.GroupByUntil(DummyObservable.Instance, DummyFunc.Instance, DummyFunc.Instance, DummyFunc, IObservable>.Instance, -1, EqualityComparer.Default)); @@ -2210,7 +2239,10 @@ public void GroupByUntil_Capacity_Outer_KeyThrow() { keyInvoked++; if (keyInvoked == 10) + { throw ex; + } + return x.Trim(); }, x => @@ -2285,7 +2317,10 @@ public void GroupByUntil_Capacity_Outer_EleThrow() { eleInvoked++; if (eleInvoked == 10) + { throw ex; + } + return Reverse(x); }, g => g.Skip(2), @@ -2489,7 +2524,9 @@ public void GroupByUntil_Capacity_Inner_Complete() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2573,7 +2610,9 @@ public void GroupByUntil_Capacity_Inner_Complete_All() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2667,7 +2706,9 @@ public void GroupByUntil_Capacity_Inner_Error() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2751,7 +2792,9 @@ public void GroupByUntil_Capacity_Inner_Dispose() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2824,7 +2867,10 @@ public void GroupByUntil_Capacity_Inner_KeyThrow() { keyInvoked++; if (keyInvoked == 6) + { throw ex; + } + return x.Trim(); }, x => Reverse(x), g => g.Skip(2), _groupByUntilCapacity, comparer)); @@ -2840,7 +2886,9 @@ public void GroupByUntil_Capacity_Inner_KeyThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -2910,7 +2958,10 @@ public void GroupByUntil_Capacity_Inner_EleThrow() { eleInvoked++; if (eleInvoked == 6) + { throw ex; + } + return Reverse(x); }, g => g.Skip(2), _groupByUntilCapacity, comparer)); @@ -2926,7 +2977,9 @@ public void GroupByUntil_Capacity_Inner_EleThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -3007,7 +3060,9 @@ public void GroupByUntil_Capacity_Inner_Comparer_EqualsThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -3090,7 +3145,9 @@ public void GroupByUntil_Capacity_Inner_Comparer_GetHashCodeThrow() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.Start(); @@ -3175,7 +3232,9 @@ public void GroupByUntil_Capacity_Outer_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => outerSubscription.Dispose()); @@ -3258,7 +3317,9 @@ public void GroupByUntil_Capacity_Inner_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => innerSubscriptions["foo"].Dispose()); @@ -3354,7 +3415,9 @@ public void GroupByUntil_Capacity_Inner_Multiple_Independence() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions.Values) + { d.Dispose(); + } }); scheduler.ScheduleAbsolute(320, () => innerSubscriptions["foo"].Dispose()); @@ -3666,7 +3729,7 @@ public void GroupByUntil_Capacity_NullKeys_Simple_Expire1() ); var n = 0; - var res = scheduler.Start(() => xs.GroupByUntil(x => x[0] == 'b' ? null : x.ToUpper(), g => { if (g.Key == null) n++; return Observable.Timer(TimeSpan.FromTicks(50), scheduler); }, _groupByUntilCapacity).SelectMany(g => g, (g, x) => (g.Key ?? "(null)") + x)); + var res = scheduler.Start(() => xs.GroupByUntil(x => x[0] == 'b' ? null : x.ToUpper(), g => { if (g.Key == null) { n++; } return Observable.Timer(TimeSpan.FromTicks(50), scheduler); }, _groupByUntilCapacity).SelectMany(g => g, (g, x) => (g.Key ?? "(null)") + x)); Assert.Equal(2, n); @@ -3697,7 +3760,7 @@ public void GroupByUntil_Capacity_NullKeys_Simple_Expire2() ); var n = 0; - var res = scheduler.Start(() => xs.GroupByUntil(x => x[0] == 'b' ? null : x.ToUpper(), g => { if (g.Key == null) n++; return Observable.Timer(TimeSpan.FromTicks(50), scheduler).IgnoreElements(); }, _groupByUntilCapacity).SelectMany(g => g, (g, x) => (g.Key ?? "(null)") + x)); + var res = scheduler.Start(() => xs.GroupByUntil(x => x[0] == 'b' ? null : x.ToUpper(), g => { if (g.Key == null) { n++; } return Observable.Timer(TimeSpan.FromTicks(50), scheduler).IgnoreElements(); }, _groupByUntilCapacity).SelectMany(g => g, (g, x) => (g.Key ?? "(null)") + x)); Assert.Equal(2, n); @@ -3750,12 +3813,14 @@ public void GroupByUntil_Capacity_NullKeys_Error() #endregion - static string Reverse(string s) + private static string Reverse(string s) { var sb = new StringBuilder(); for (var i = s.Length - 1; i >= 0; i--) + { sb.Append(s[i]); + } return sb.ToString(); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupJoinTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupJoinTest.cs index 43c8301a07..25204cedf8 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupJoinTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/GroupJoinTest.cs @@ -5,18 +5,11 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -1017,7 +1010,7 @@ public void GroupJoinOp_Error_V() var ysd = new List>(); var res = scheduler.Start(() => - xs.GroupJoin(ys, x => { if (x.Value >= 0) throw ex; return Observable.Empty(); }, y => NewTimer(ysd, y.Interval, scheduler), (x, yy) => yy.Select(y => x.Value + y.Value)).Merge() + xs.GroupJoin(ys, x => { if (x.Value >= 0) { throw ex; } return Observable.Empty(); }, y => NewTimer(ysd, y.Interval, scheduler), (x, yy) => yy.Select(y => x.Value + y.Value)).Merge() ); res.Messages.AssertEqual( @@ -1073,7 +1066,7 @@ public void GroupJoinOp_Error_VI() var xsd = new List>(); var res = scheduler.Start(() => - xs.GroupJoin(ys, x => NewTimer(xsd, x.Interval, scheduler), y => { if (y.Value.Length >= 0) throw ex; return Observable.Empty(); }, (x, yy) => yy.Select(y => x.Value + y.Value)).Merge() + xs.GroupJoin(ys, x => NewTimer(xsd, x.Interval, scheduler), y => { if (y.Value.Length >= 0) { throw ex; } return Observable.Empty(); }, (x, yy) => yy.Select(y => x.Value + y.Value)).Merge() ); res.Messages.AssertEqual( @@ -1130,7 +1123,7 @@ public void GroupJoinOp_Error_VII() var ysd = new List>(); var res = scheduler.Start(() => - xs.GroupJoin(ys, x => NewTimer(xsd, x.Interval, scheduler), y => NewTimer(ysd, y.Interval, scheduler), (x, yy) => { if (x.Value >= 0) throw ex; return yy.Select(y => x.Value + y.Value); }).Merge() + xs.GroupJoin(ys, x => NewTimer(xsd, x.Interval, scheduler), y => NewTimer(ysd, y.Interval, scheduler), (x, yy) => { if (x.Value >= 0) { throw ex; } return yy.Select(y => x.Value + y.Value); }).Merge() ); res.Messages.AssertEqual( @@ -1190,7 +1183,7 @@ public void GroupJoinOp_Error_VIII() var ysd = new List>(); var res = scheduler.Start(() => - xs.GroupJoin(ys, x => NewTimer(xsd, x.Interval, scheduler), y => NewTimer(ysd, y.Interval, scheduler), (x, yy) => { if (x.Value >= 0) throw ex; return yy.Select(y => x.Value + y.Value); }).Merge() + xs.GroupJoin(ys, x => NewTimer(xsd, x.Interval, scheduler), y => NewTimer(ysd, y.Interval, scheduler), (x, yy) => { if (x.Value >= 0) { throw ex; } return yy.Select(y => x.Value + y.Value); }).Merge() ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IfTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IfTest.cs index f4925ff9dd..d8f626f892 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IfTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IfTest.cs @@ -3,20 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -305,7 +296,7 @@ public void If_Default_Scheduler() ); } - static T Throw(Exception ex) + private static T Throw(Exception ex) { throw ex; } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IgnoreElementsTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IgnoreElementsTest.cs index 76e08a229a..a179640d15 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IgnoreElementsTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IgnoreElementsTest.cs @@ -3,20 +3,9 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IntervalTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IntervalTest.cs index 76e3dc95c1..e5ba75cc4c 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IntervalTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IntervalTest.cs @@ -3,20 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IsEmptyTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IsEmptyTest.cs index 5e7cad1d0c..be57288eb8 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IsEmptyTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/IsEmptyTest.cs @@ -3,17 +3,9 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/JoinTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/JoinTest.cs index 85bf74a505..92152343b7 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/JoinTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/JoinTest.cs @@ -5,18 +5,11 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -904,7 +897,7 @@ public void JoinOp_Error_V() var ysd = new List>(); var res = scheduler.Start(() => - xs.Join(ys, x => { if (x.Value >= 0) throw ex; return Observable.Empty(); }, y => NewTimer(ysd, y.Interval, scheduler), (x, y) => x.Value + y.Value) + xs.Join(ys, x => { if (x.Value >= 0) { throw ex; } return Observable.Empty(); }, y => NewTimer(ysd, y.Interval, scheduler), (x, y) => x.Value + y.Value) ); res.Messages.AssertEqual( @@ -960,7 +953,7 @@ public void JoinOp_Error_VI() var xsd = new List>(); var res = scheduler.Start(() => - xs.Join(ys, x => NewTimer(xsd, x.Interval, scheduler), y => { if (y.Value.Length >= 0) throw ex; return Observable.Empty(); }, (x, y) => x.Value + y.Value) + xs.Join(ys, x => NewTimer(xsd, x.Interval, scheduler), y => { if (y.Value.Length >= 0) { throw ex; } return Observable.Empty(); }, (x, y) => x.Value + y.Value) ); res.Messages.AssertEqual( @@ -1017,7 +1010,7 @@ public void JoinOp_Error_VII() var ysd = new List>(); var res = scheduler.Start(() => - xs.Join(ys, x => NewTimer(xsd, x.Interval, scheduler), y => NewTimer(ysd, y.Interval, scheduler), (x, y) => { if (x.Value >= 0) throw ex; return x.Value + y.Value; }) + xs.Join(ys, x => NewTimer(xsd, x.Interval, scheduler), y => NewTimer(ysd, y.Interval, scheduler), (x, y) => { if (x.Value >= 0) { throw ex; } return x.Value + y.Value; }) ); res.Messages.AssertEqual( @@ -1075,7 +1068,7 @@ public void JoinOp_Error_VIII() var ysd = new List>(); var res = scheduler.Start(() => - xs.Join(ys, x => NewTimer(xsd, x.Interval, scheduler), y => NewTimer(ysd, y.Interval, scheduler), (x, y) => { if (x.Value >= 0) throw ex; return x.Value + y.Value; }) + xs.Join(ys, x => NewTimer(xsd, x.Interval, scheduler), y => NewTimer(ysd, y.Interval, scheduler), (x, y) => { if (x.Value >= 0) { throw ex; } return x.Value + y.Value; }) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastAsyncTest.cs index 89319c4c6c..8aab0a274a 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastAsyncTest.cs @@ -3,17 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -25,7 +18,7 @@ public void LastAsync_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.LastAsync(default(IObservable))); ReactiveAssert.Throws(() => Observable.LastAsync(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.LastAsync(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.LastAsync(DummyObservable.Instance, default)); } [Fact] @@ -224,7 +217,7 @@ public void LastAsync_PredicateThrows() ); var res = scheduler.Start(() => - xs.LastAsync(x => { if (x < 4) return x % 2 == 1; throw ex; }) + xs.LastAsync(x => { if (x < 4) { return x % 2 == 1; } throw ex; }) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastOrDefaultAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastOrDefaultAsyncTest.cs index 963591234a..f92a8c1036 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastOrDefaultAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastOrDefaultAsyncTest.cs @@ -3,17 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -25,7 +18,7 @@ public void LastOrDefaultAsync_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.LastOrDefaultAsync(default(IObservable))); ReactiveAssert.Throws(() => Observable.LastOrDefaultAsync(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.LastOrDefaultAsync(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.LastOrDefaultAsync(DummyObservable.Instance, default)); } [Fact] @@ -226,7 +219,7 @@ public void LastOrDefaultAsync_PredicateThrows() ); var res = scheduler.Start(() => - xs.LastOrDefaultAsync(x => { if (x < 4) return x % 2 == 1; throw ex; }) + xs.LastOrDefaultAsync(x => { if (x < 4) { return x % 2 == 1; } throw ex; }) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastOrDefaultTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastOrDefaultTest.cs index b14c3b3a68..8e4ebaa4c4 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastOrDefaultTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastOrDefaultTest.cs @@ -3,17 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -25,19 +19,19 @@ public void LastOrDefault_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.LastOrDefault(default(IObservable))); ReactiveAssert.Throws(() => Observable.LastOrDefault(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.LastOrDefault(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.LastOrDefault(DummyObservable.Instance, default)); } [Fact] public void LastOrDefault_Empty() { - Assert.Equal(default(int), Observable.Empty().LastOrDefault()); + Assert.Equal(default, Observable.Empty().LastOrDefault()); } [Fact] public void LastOrDefaultPredicate_Empty() { - Assert.Equal(default(int), Observable.Empty().LastOrDefault(_ => true)); + Assert.Equal(default, Observable.Empty().LastOrDefault(_ => true)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastTest.cs index e405229db7..e07740b7fa 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LastTest.cs @@ -3,17 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -25,7 +19,7 @@ public void Last_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.Last(default(IObservable))); ReactiveAssert.Throws(() => Observable.Last(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.Last(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.Last(DummyObservable.Instance, default)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LatestTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LatestTest.cs index c8c666e051..fe69d6e965 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LatestTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LatestTest.cs @@ -3,19 +3,14 @@ // See the LICENSE file in the project root for more information. using System; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; +using System.Collections; +using System.Collections.Generic; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Collections; -using System.Collections.Generic; -using System.Threading; namespace ReactiveTests.Tests { @@ -60,7 +55,7 @@ public void Latest1() Assert.Equal(1, res.Current); evt.Set(); - Assert.True(((IEnumerator)res).MoveNext()); + Assert.True(res.MoveNext()); Assert.Equal(2, ((IEnumerator)res).Current); evt.Set(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LetTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LetTest.cs index 0dc04dd75d..74e868b5bb 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LetTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LetTest.cs @@ -3,20 +3,9 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -36,7 +25,7 @@ public void Let_ArgumentChecking() [Fact] public void Let_CallsFunctionImmediately() { - bool called = false; + var called = false; Observable.Empty().Let(x => { called = true; return x; }); Assert.True(called); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LongCountTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LongCountTest.cs index 5fd4918d6e..6cd4a45866 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LongCountTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/LongCountTest.cs @@ -3,17 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -25,7 +20,7 @@ public void LongCount_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.LongCount(default(IObservable))); ReactiveAssert.Throws(() => Observable.LongCount(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.LongCount(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.LongCount(DummyObservable.Instance, default)); } [Fact] @@ -430,7 +425,9 @@ public void LongCount_Predicate_PredicateThrows() xs.LongCount(x => { if (x == 3) + { throw ex; + } return true; }) diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ManySelectTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ManySelectTest.cs index a2010d5389..91965a0f2a 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ManySelectTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ManySelectTest.cs @@ -3,23 +3,15 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { +#pragma warning disable IDE0039 // Use local function public class ManySelectTest : ReactiveTest { @@ -130,4 +122,5 @@ public void ManySelect_Error() } } +#pragma warning restore IDE0039 // Use local function } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaterializeTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaterializeTest.cs index b50e850f1c..d1fc3f99d0 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaterializeTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaterializeTest.cs @@ -3,20 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaxByTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaxByTest.cs index f63fd42f5a..04c9e300be 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaxByTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaxByTest.cs @@ -5,15 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -27,7 +22,7 @@ public void MaxBy_ArgumentChecking() ReactiveAssert.Throws(() => Observable.MaxBy(default(IObservable), x => x)); ReactiveAssert.Throws(() => Observable.MaxBy(DummyObservable.Instance, default(Func))); ReactiveAssert.Throws(() => Observable.MaxBy(default(IObservable), x => x, Comparer.Default)); - ReactiveAssert.Throws(() => Observable.MaxBy(DummyObservable.Instance, default(Func), Comparer.Default)); + ReactiveAssert.Throws(() => Observable.MaxBy(DummyObservable.Instance, default, Comparer.Default)); ReactiveAssert.Throws(() => Observable.MaxBy(DummyObservable.Instance, x => x, null)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaxTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaxTest.cs index 013b60b741..4e482ee370 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaxTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MaxTest.cs @@ -5,15 +5,9 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { @@ -33,7 +27,7 @@ public void Max_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Max(default(IObservable))); ReactiveAssert.Throws(() => Observable.Max(default(IObservable))); - ReactiveAssert.Throws(() => Observable.Max(default(IObservable), _ => default(int))); + ReactiveAssert.Throws(() => Observable.Max(default(IObservable), _ => default)); ReactiveAssert.Throws(() => Observable.Max(default(IObservable), _ => default(double))); ReactiveAssert.Throws(() => Observable.Max(default(IObservable), _ => default(float))); ReactiveAssert.Throws(() => Observable.Max(default(IObservable), _ => default(decimal))); @@ -57,15 +51,15 @@ public void Max_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Max(default(IObservable))); - ReactiveAssert.Throws(() => Observable.Max(default(IObservable), Comparer.Default)); + ReactiveAssert.Throws(() => Observable.Max(default, Comparer.Default)); ReactiveAssert.Throws(() => Observable.Max(Observable.Empty(), default(IComparer))); ReactiveAssert.Throws(() => Observable.Max(default(IObservable), _ => "")); ReactiveAssert.Throws(() => Observable.Max(Observable.Empty(), default(Func))); ReactiveAssert.Throws(() => Observable.Max(default(IObservable), _ => "", Comparer.Default)); - ReactiveAssert.Throws(() => Observable.Max(Observable.Empty(), default(Func), Comparer.Default)); - ReactiveAssert.Throws(() => Observable.Max(Observable.Empty(), _ => "", default(IComparer))); + ReactiveAssert.Throws(() => Observable.Max(Observable.Empty(), default, Comparer.Default)); + ReactiveAssert.Throws(() => Observable.Max(Observable.Empty(), _ => "", default)); } [Fact] @@ -2118,7 +2112,7 @@ public void Max_Selector_Regular_Int32() OnCompleted(240) ); - var res = scheduler.Start(() => xs.Max(x => (int)x.Length)); + var res = scheduler.Start(() => xs.Max(x => x.Length)); res.Messages.AssertEqual( OnNext(240, 3), @@ -2393,7 +2387,7 @@ public void MaxOfT_Selector_Regular_Comparer() Subscribe(200, 240) ); } - + } internal class ReverseComparer : IComparer @@ -2413,7 +2407,7 @@ public int Compare(T x, T y) internal class ThrowingComparer : IComparer { - private Exception _ex; + private readonly Exception _ex; public ThrowingComparer(Exception ex) { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MergeTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MergeTest.cs index 72c9434d2b..2eb560ce46 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MergeTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MergeTest.cs @@ -5,18 +5,15 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -35,7 +32,7 @@ public void Merge_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Merge((IObservable[])null)); ReactiveAssert.Throws(() => Observable.Merge((IEnumerable>)null)); ReactiveAssert.Throws(() => ((IObservable)null).Merge(xs, DummyScheduler.Instance)); - ReactiveAssert.Throws(() => xs.Merge(default(IObservable), DummyScheduler.Instance)); + ReactiveAssert.Throws(() => xs.Merge(default, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Merge((IEnumerable>)null, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Merge(new IObservable[0], default(IScheduler))); ReactiveAssert.Throws(() => Observable.Merge((IObservable>)null)); @@ -668,13 +665,13 @@ public void Merge_LotsMore() var inputs = new List>>>(); const int N = 10; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var lst = new List>> { OnNext(150, 1) }; inputs.Add(lst); - ushort start = (ushort)(301 + i); - for (int j = 0; j < i; j++) + var start = (ushort)(301 + i); + for (var j = 0; j < i; j++) { var onNext = OnNext(start += (ushort)(j * 5), j + i + 2); lst.Add(onNext); @@ -707,7 +704,7 @@ orderby n.Time descending ); Assert.True(resOnNext.Count + 1 == res.Messages.Count, "length"); - for (int i = 0; i < resOnNext.Count; i++) + for (var i = 0; i < resOnNext.Count; i++) { var msg = res.Messages[i]; Assert.True(msg.Time == resOnNext[i].Time); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MinByTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MinByTest.cs index 45a787826a..6da73d1fb3 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MinByTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MinByTest.cs @@ -5,15 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -26,7 +21,7 @@ public void MinBy_ArgumentChecking() ReactiveAssert.Throws(() => Observable.MinBy(default(IObservable), x => x)); ReactiveAssert.Throws(() => Observable.MinBy(DummyObservable.Instance, default(Func))); ReactiveAssert.Throws(() => Observable.MinBy(default(IObservable), x => x, Comparer.Default)); - ReactiveAssert.Throws(() => Observable.MinBy(DummyObservable.Instance, default(Func), Comparer.Default)); + ReactiveAssert.Throws(() => Observable.MinBy(DummyObservable.Instance, default, Comparer.Default)); ReactiveAssert.Throws(() => Observable.MinBy(DummyObservable.Instance, x => x, null)); } @@ -375,7 +370,7 @@ public void MinBy_ComparerThrows() ); } - class ReverseComparer : IComparer + private class ReverseComparer : IComparer { private IComparer _comparer; @@ -390,9 +385,9 @@ public int Compare(T x, T y) } } - class ThrowingComparer : IComparer + private class ThrowingComparer : IComparer { - private Exception _ex; + private readonly Exception _ex; public ThrowingComparer(Exception ex) { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MinTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MinTest.cs index 7ca8076120..06d0d85253 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MinTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MinTest.cs @@ -5,15 +5,9 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { @@ -34,7 +28,7 @@ public void Min_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Min(default(IObservable))); ReactiveAssert.Throws(() => Observable.Min(default(IObservable))); - ReactiveAssert.Throws(() => Observable.Min(default(IObservable), _ => default(int))); + ReactiveAssert.Throws(() => Observable.Min(default(IObservable), _ => default)); ReactiveAssert.Throws(() => Observable.Min(default(IObservable), _ => default(double))); ReactiveAssert.Throws(() => Observable.Min(default(IObservable), _ => default(float))); ReactiveAssert.Throws(() => Observable.Min(default(IObservable), _ => default(decimal))); @@ -58,15 +52,15 @@ public void Min_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Min(default(IObservable))); - ReactiveAssert.Throws(() => Observable.Min(default(IObservable), Comparer.Default)); + ReactiveAssert.Throws(() => Observable.Min(default, Comparer.Default)); ReactiveAssert.Throws(() => Observable.Min(Observable.Empty(), default(IComparer))); ReactiveAssert.Throws(() => Observable.Min(default(IObservable), _ => "")); ReactiveAssert.Throws(() => Observable.Min(Observable.Empty(), default(Func))); ReactiveAssert.Throws(() => Observable.Min(default(IObservable), _ => "", Comparer.Default)); - ReactiveAssert.Throws(() => Observable.Min(Observable.Empty(), default(Func), Comparer.Default)); - ReactiveAssert.Throws(() => Observable.Min(Observable.Empty(), _ => "", default(IComparer))); + ReactiveAssert.Throws(() => Observable.Min(Observable.Empty(), default, Comparer.Default)); + ReactiveAssert.Throws(() => Observable.Min(Observable.Empty(), _ => "", default)); } [Fact] @@ -2119,7 +2113,7 @@ public void Min_Selector_Regular_Int32() OnCompleted(240) ); - var res = scheduler.Start(() => xs.Min(x => (int)x.Length)); + var res = scheduler.Start(() => xs.Min(x => x.Length)); res.Messages.AssertEqual( OnNext(240, 1), diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MostRecentTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MostRecentTest.cs index 0b0ce02895..432f4421d4 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MostRecentTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MostRecentTest.cs @@ -3,19 +3,14 @@ // See the LICENSE file in the project root for more information. using System; +using System.Collections; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Collections; namespace ReactiveTests.Tests { @@ -25,7 +20,7 @@ public class MostRecentTest : ReactiveTest [Fact] public void MostRecent_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.MostRecent(default(IObservable), 1)); + ReactiveAssert.Throws(() => Observable.MostRecent(default, 1)); } [Fact] @@ -58,7 +53,7 @@ public void MostRecent1() Assert.True(res.MoveNext()); Assert.Equal(42, res.Current); - for (int i = 1; i <= 2; i++) + for (var i = 1; i <= 2; i++) { evt.Set(); nxt.WaitOne(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MulticastTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MulticastTest.cs index f8929f6889..80b56ac3d0 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MulticastTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/MulticastTest.cs @@ -3,18 +3,13 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Reactive.Subjects; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/NeverTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/NeverTest.cs index 9d9f27b7c6..360724f0ef 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/NeverTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/NeverTest.cs @@ -3,20 +3,9 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/NextTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/NextTest.cs index 28b2bece2e..d8009be1ce 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/NextTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/NextTest.cs @@ -3,19 +3,16 @@ // See the LICENSE file in the project root for more information. using System; +using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Collections; namespace ReactiveTests.Tests { @@ -49,7 +46,7 @@ public void Next1() var res = src.Next().GetEnumerator(); - Action release = () => Task.Run(async () => + void release() => Task.Run(async () => { await Task.Delay(250); evt.Set(); @@ -157,7 +154,7 @@ public void Next_Error() var res = src.Next().GetEnumerator(); - Action release = () => new Thread(() => + void release() => new Thread(() => { Thread.Sleep(250); evt.Set(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ObserveOnTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ObserveOnTest.cs index d287f57608..e4dda4fd70 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ObserveOnTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ObserveOnTest.cs @@ -5,18 +5,14 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -54,7 +50,7 @@ public void ObserveOn_ArgumentChecking() ReactiveAssert.Throws(() => DispatcherObservable.ObserveOn(someObservable, default(Dispatcher))); ReactiveAssert.Throws(() => DispatcherObservable.ObserveOnDispatcher(default(IObservable))); #endif - ReactiveAssert.Throws(() => Observable.ObserveOn(default(IObservable), new SynchronizationContext())); + ReactiveAssert.Throws(() => Observable.ObserveOn(default, new SynchronizationContext())); ReactiveAssert.Throws(() => Observable.ObserveOn(someObservable, default(SynchronizationContext))); } @@ -384,7 +380,9 @@ public void ObserveOn_Scheduler_OnNextThrows() x => { if (x == 5) + { throw new Exception(); + } } ); @@ -392,7 +390,7 @@ public void ObserveOn_Scheduler_OnNextThrows() Assert.NotNull(scheduler._exception); } - class MyScheduler : IScheduler + private class MyScheduler : IScheduler { internal Exception _exception; private ManualResetEvent _evt; @@ -501,10 +499,12 @@ public void ObserveOn_LongRunning_TimeVariance() started.WaitOne(); Thread.Sleep(100); // Try to enter the dispatcher event wait state - for (int i = 0; i < 1000; i++) + for (var i = 0; i < 1000; i++) { if (i % 100 == 0) + { Thread.Sleep(10); + } s.OnNext(i); } @@ -595,7 +595,7 @@ public void ObserveOn_LongRunning_OnNextThrows() var end = new ManualResetEvent(false); var running = new ManualResetEvent(false); - var d = s.ObserveOn(scheduler).Subscribe(x => { lst.Add(x); running.Set(); if (x == 3) throw new Exception(); }); + var d = s.ObserveOn(scheduler).Subscribe(x => { lst.Add(x); running.Set(); if (x == 3) { throw new Exception(); } }); s.OnNext(0); started.WaitOne(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/OfTypeTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/OfTypeTest.cs index eb4fe27072..5985d33fa2 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/OfTypeTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/OfTypeTest.cs @@ -3,20 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -26,7 +17,7 @@ public class OfTypeTest : ReactiveTest [Fact] public void OfType_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.OfType(default(IObservable))); + ReactiveAssert.Throws(() => Observable.OfType(default)); ReactiveAssert.Throws(() => Observable.OfType(DummyObservable.Instance).Subscribe(null)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/OnErrorResumeNextTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/OnErrorResumeNextTest.cs index e2ba6e00d0..c01ac1a79d 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/OnErrorResumeNextTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/OnErrorResumeNextTest.cs @@ -5,18 +5,12 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -28,10 +22,10 @@ public void OnErrorResumeNext_ArgumentChecking() { var xs = DummyObservable.Instance; - ReactiveAssert.Throws(() => Observable.OnErrorResumeNext((IObservable[])null)); + ReactiveAssert.Throws(() => Observable.OnErrorResumeNext(null)); ReactiveAssert.Throws(() => Observable.OnErrorResumeNext((IEnumerable>)null)); - ReactiveAssert.Throws(() => Observable.OnErrorResumeNext((IObservable)null, xs)); - ReactiveAssert.Throws(() => Observable.OnErrorResumeNext(xs, (IObservable)null)); + ReactiveAssert.Throws(() => Observable.OnErrorResumeNext(null, xs)); + ReactiveAssert.Throws(() => Observable.OnErrorResumeNext(xs, null)); ReactiveAssert.Throws(() => Observable.OnErrorResumeNext(null, xs)); ReactiveAssert.Throws(() => Observable.OnErrorResumeNext(xs, null)); } @@ -420,7 +414,7 @@ public void OnErrorResumeNext_DefaultScheduler_Binary() { var evt = new ManualResetEvent(false); - int sum = 0; + var sum = 0; Observable.Return(1).OnErrorResumeNext(Observable.Return(2)).Subscribe(x => { sum += x; @@ -435,7 +429,7 @@ public void OnErrorResumeNext_DefaultScheduler_Nary() { var evt = new ManualResetEvent(false); - int sum = 0; + var sum = 0; Observable.OnErrorResumeNext(Observable.Return(1), Observable.Return(2), Observable.Return(3)).Subscribe(x => { sum += x; @@ -452,7 +446,7 @@ public void OnErrorResumeNext_DefaultScheduler_NaryEnumerable() IEnumerable> sources = new[] { Observable.Return(1), Observable.Return(2), Observable.Return(3) }; - int sum = 0; + var sum = 0; Observable.OnErrorResumeNext(sources).Subscribe(x => { sum += x; @@ -653,9 +647,7 @@ public void OnErrorResumeNext_TailRecursive1() OnError(40, new Exception()) ); - var f = default(Func>); - f = () => Observable.Defer(() => o.OnErrorResumeNext(f())); - + IObservable f() => Observable.Defer(() => o.OnErrorResumeNext(f())); var res = scheduler.Start(() => f(), create, start, end); var expected = new List>>(); @@ -726,9 +718,13 @@ public void OnErrorResumeNext_TailRecursive3() private IEnumerable> Catch_IteratorThrows_Source(Exception ex, bool b) { if (b) + { throw ex; + } else + { yield break; + } } } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PrependTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PrependTest.cs index 4bbde01477..15142014bf 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PrependTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PrependTest.cs @@ -3,20 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -29,10 +19,10 @@ public void Prepend_ArgumentChecking() var scheduler = new TestScheduler(); var someObservable = Observable.Empty(); - ReactiveAssert.Throws(() => Observable.Prepend(default(IObservable), 1)); + ReactiveAssert.Throws(() => Observable.Prepend(default, 1)); - ReactiveAssert.Throws(() => Observable.Prepend(default(IObservable), 1, scheduler)); - ReactiveAssert.Throws(() => Observable.Prepend(someObservable, 1, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.Prepend(default, 1, scheduler)); + ReactiveAssert.Throws(() => Observable.Prepend(someObservable, 1, default)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PublishLastTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PublishLastTest.cs index dc64990e36..9339209a1d 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PublishLastTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PublishLastTest.cs @@ -3,18 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Reactive.Subjects; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PublishTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PublishTest.cs index 9f0f9c59b0..41afe69e15 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PublishTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/PublishTest.cs @@ -3,18 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Reactive.Subjects; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -451,8 +445,8 @@ public void PublishWithInitialValue_ArgumentChecking() { var someObservable = Observable.Empty(); - ReactiveAssert.Throws(() => Observable.Publish(default(IObservable), 1)); - ReactiveAssert.Throws(() => Observable.Publish(default(IObservable), x => x, 1)); + ReactiveAssert.Throws(() => Observable.Publish(default, 1)); + ReactiveAssert.Throws(() => Observable.Publish(default, x => x, 1)); ReactiveAssert.Throws(() => Observable.Publish(someObservable, default(Func, IObservable>), 1)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RangeTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RangeTest.cs index dc4bc2461d..25662acdac 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RangeTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RangeTest.cs @@ -5,19 +5,13 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Runtime.CompilerServices; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; -using System.Runtime.CompilerServices; +using Xunit; namespace ReactiveTests.Tests { @@ -122,8 +116,10 @@ public void Range_Default_ArgumentChecking() [Fact] public void Range_Default() { - for (int i = 0; i < 100; i++) + for (var i = 0; i < 100; i++) + { Observable.Range(100, 100).AssertEqual(Observable.Range(100, 100, DefaultScheduler.Instance)); + } } #if !NO_PERF @@ -162,7 +158,9 @@ public void Range_LongRunning2() start.WaitOne(); while (lst.Count < 100) + { ; + } d.Dispose(); end.WaitOne(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RefCountTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RefCountTest.cs index 5b4cac9c46..b2e58971a1 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RefCountTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RefCountTest.cs @@ -3,17 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RepeatTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RepeatTest.cs index d0f1a794b6..22b167b23c 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RepeatTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RepeatTest.cs @@ -5,19 +5,13 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Runtime.CompilerServices; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; -using System.Runtime.CompilerServices; +using Xunit; namespace ReactiveTests.Tests { @@ -27,7 +21,7 @@ public class RepeatTest : ReactiveTest [Fact] public void Repeat_Value_Count_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Repeat(1, 0, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.Repeat(1, 0, default)); ReactiveAssert.Throws(() => Observable.Repeat(1, -1, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Repeat(1, 1, DummyScheduler.Instance).Subscribe(null)); } @@ -127,7 +121,7 @@ public void Repeat_Value_Count_Default() [Fact] public void Repeat_Value_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Repeat(1, (IScheduler)null)); + ReactiveAssert.Throws(() => Observable.Repeat(1, null)); ReactiveAssert.Throws(() => Observable.Repeat(DummyScheduler.Instance, 1).Subscribe(null)); } @@ -199,7 +193,9 @@ public void Repeat_Count_LongRunning2() start.WaitOne(); while (lst.Count < 100) + { ; + } d.Dispose(); end.WaitOne(); @@ -223,7 +219,9 @@ public void Repeat_Inf_LongRunning() start.WaitOne(); while (lst.Count < 100) + { ; + } d.Dispose(); end.WaitOne(); @@ -368,7 +366,7 @@ public void Repeat_Observable_Throws() [Fact] public void Repeat_Observable_Default_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Repeat((IObservable)null)); + ReactiveAssert.Throws(() => Observable.Repeat(null)); ReactiveAssert.Throws(() => DummyObservable.Instance.Repeat().Subscribe(null)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RepeatWhenTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RepeatWhenTest.cs index ecc992e6e8..682296eec5 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RepeatWhenTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RepeatWhenTest.cs @@ -3,21 +3,13 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Reactive.Subjects; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; -using System.Runtime.CompilerServices; +using Xunit; namespace ReactiveTests.Tests { @@ -102,7 +94,7 @@ public void RepeatWhen_Handler_Completed() Subscribe(200, 210) ); } - + [Fact] public void RepeatWhen_Disposed() { @@ -131,8 +123,8 @@ public void RepeatWhen_Handler_Completed_Disposes_Main() var errors = 0; main.RepeatWhen(v => inner).Subscribe( - onNext: v => items++, - onError: e => errors++, + onNext: v => items++, + onError: e => errors++, onCompleted: () => end++); Assert.True(main.HasObservers); @@ -508,8 +500,9 @@ public void RepeatWhen_Observable_Repeat_Delayed() xs.RepeatWhen(v => { int[] count = { 0 }; - return v.SelectMany(w => { - int c = ++count[0]; + return v.SelectMany(w => + { + var c = ++count[0]; if (c == 3) { return Observable.Throw(ex); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ReplayTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ReplayTest.cs index ef47effd74..7f196ee7be 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ReplayTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ReplayTest.cs @@ -3,18 +3,13 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Reactive.Subjects; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -31,7 +26,7 @@ public void Replay_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Replay(default(IObservable), x => x)); ReactiveAssert.Throws(() => Observable.Replay(someObservable, null)); ReactiveAssert.Throws(() => Observable.Replay(null, DummyScheduler.Instance)); - ReactiveAssert.Throws(() => Observable.Replay(DummyObservable.Instance, (IScheduler)null)); + ReactiveAssert.Throws(() => Observable.Replay(DummyObservable.Instance, null)); ReactiveAssert.Throws(() => Observable.Replay(null, DummyFunc, IObservable>.Instance, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Replay(DummyObservable.Instance, null, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Replay(DummyObservable.Instance, DummyFunc, IObservable>.Instance, null)); @@ -42,11 +37,11 @@ public void Replay_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Replay(someObservable, x => x, TimeSpan.FromSeconds(-1))); ReactiveAssert.Throws(() => Observable.Replay(default(IObservable), TimeSpan.FromSeconds(1), scheduler)); ReactiveAssert.Throws(() => Observable.Replay(someObservable, TimeSpan.FromSeconds(-1), scheduler)); - ReactiveAssert.Throws(() => Observable.Replay(someObservable, TimeSpan.FromSeconds(1), default(IScheduler))); + ReactiveAssert.Throws(() => Observable.Replay(someObservable, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => Observable.Replay(default(IObservable), x => x, TimeSpan.FromSeconds(1), scheduler)); ReactiveAssert.Throws(() => Observable.Replay(someObservable, null, TimeSpan.FromSeconds(1), scheduler)); ReactiveAssert.Throws(() => Observable.Replay(someObservable, x => x, TimeSpan.FromSeconds(-1), scheduler)); - ReactiveAssert.Throws(() => Observable.Replay(someObservable, x => x, TimeSpan.FromSeconds(1), default(IScheduler))); + ReactiveAssert.Throws(() => Observable.Replay(someObservable, x => x, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => Observable.Replay(default(IObservable), 1, scheduler)); ReactiveAssert.Throws(() => Observable.Replay(someObservable, -2, scheduler)); ReactiveAssert.Throws(() => Observable.Replay(someObservable, 1, default(IScheduler))); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RetryTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RetryTest.cs index 78f091934f..91c526da55 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RetryTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RetryTest.cs @@ -3,20 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -177,7 +168,7 @@ public void Retry_Observable_Throws4() [Fact] public void Retry_Observable_Default_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Retry((IObservable)null)); + ReactiveAssert.Throws(() => Observable.Retry(null)); ReactiveAssert.Throws(() => DummyObservable.Instance.Retry().Subscribe(null)); } @@ -348,7 +339,7 @@ public void Retry_Observable_RetryCount_Throws() [Fact] public void Retry_Observable_RetryCount_Default_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Retry(default(IObservable), 0)); + ReactiveAssert.Throws(() => Observable.Retry(default, 0)); ReactiveAssert.Throws(() => DummyObservable.Instance.Retry(-1)); ReactiveAssert.Throws(() => DummyObservable.Instance.Retry(0).Subscribe(null)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RetryWhenTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RetryWhenTest.cs index bfde4443fd..09014822d5 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RetryWhenTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RetryWhenTest.cs @@ -3,14 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; +using Xunit; namespace ReactiveTests.Tests { @@ -148,8 +145,9 @@ public void RetryWhen_Observable_RetryCount_Basic() xs.RetryWhen(v => { int[] count = { 0 }; - return v.SelectMany(w => { - int c = ++count[0]; + return v.SelectMany(w => + { + var c = ++count[0]; if (c == 3) { return Observable.Throw(w); @@ -197,8 +195,9 @@ public void RetryWhen_Observable_RetryCount_Delayed() xs.RetryWhen(v => { int[] count = { 0 }; - return v.SelectMany(w => { - int c = ++count[0]; + return v.SelectMany(w => + { + var c = ++count[0]; if (c == 3) { return Observable.Throw(w); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ReturnTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ReturnTest.cs index e686c1e33f..f917d0ded5 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ReturnTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ReturnTest.cs @@ -3,20 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RunAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RunAsyncTest.cs index 871e13b05f..3da2a7c557 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RunAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/RunAsyncTest.cs @@ -3,20 +3,13 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Threading; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Subjects; -using System.Reactive.Disposables; namespace ReactiveTests.Tests { @@ -28,7 +21,7 @@ public void RunAsync_ArgumentChecking() var ct = CancellationToken.None; ReactiveAssert.Throws(() => Observable.RunAsync(default(IObservable), ct)); - ReactiveAssert.Throws(() => Observable.RunAsync(default(IConnectableObservable), ct)); + ReactiveAssert.Throws(() => Observable.RunAsync(default, ct)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SampleTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SampleTest.cs index d8fc13a054..c322c6aaca 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SampleTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SampleTest.cs @@ -3,20 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ScanTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ScanTest.cs index 6b79ed38ef..ca4a3283c7 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ScanTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ScanTest.cs @@ -3,20 +3,9 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -178,7 +167,7 @@ public void Scan_Seed_AccumulatorThrows() var ex = new Exception(); var seed = 1; var res = scheduler.Start(() => - xs.Scan(seed, (acc, x) => { if (x == 4) throw ex; return acc + x; }) + xs.Scan(seed, (acc, x) => { if (x == 4) { throw ex; } return acc + x; }) ); res.Messages.AssertEqual( @@ -330,7 +319,7 @@ public void Scan_NoSeed_AccumulatorThrows() var ex = new Exception(); var res = scheduler.Start(() => - xs.Scan((acc, x) => { if (x == 4) throw ex; return acc + x; }) + xs.Scan((acc, x) => { if (x == 4) { throw ex; } return acc + x; }) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SelectManyTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SelectManyTest.cs index 7274ac411b..c35d9f1ce1 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SelectManyTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SelectManyTest.cs @@ -5,18 +5,13 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -929,7 +924,10 @@ public void SelectMany_Throw() { invoked++; if (invoked == 3) + { throw ex; + } + return x; }) ); @@ -1545,7 +1543,10 @@ public void SelectManyWithIndex_Throw() { invoked++; if (invoked == 3) + { throw ex; + } + return x; }) ); @@ -1892,7 +1893,9 @@ public void SelectMany_Enumerable_SelectorThrows() { invoked++; if (invoked == 3) + { throw ex; + } return Enumerable.Repeat(x, x); }) @@ -1943,7 +1946,9 @@ public void SelectMany_Enumerable_ResultSelectorThrows() (x, y) => { if (x == 3) + { throw ex; + } return x + y; } @@ -2029,7 +2034,9 @@ public void SelectMany_Enumerable_SelectorThrows_ResultSelector() { invoked++; if (invoked == 3) + { throw ex; + } return Enumerable.Repeat(x, x); }, @@ -2054,10 +2061,10 @@ public void SelectMany_Enumerable_SelectorThrows_ResultSelector() Assert.Equal(3, invoked); } - class CurrentThrowsEnumerable : IEnumerable + private class CurrentThrowsEnumerable : IEnumerable { - IEnumerable e; - Exception ex; + private IEnumerable e; + private readonly Exception ex; public CurrentThrowsEnumerable(IEnumerable e, Exception ex) { @@ -2075,10 +2082,10 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() return GetEnumerator(); } - class Enumerator : IEnumerator + private class Enumerator : IEnumerator { - IEnumerator e; - Exception ex; + private IEnumerator e; + private readonly Exception ex; public Enumerator(IEnumerator e, Exception ex) { @@ -2169,10 +2176,10 @@ public void SelectMany_Enumerable_CurrentThrows_ResultSelector() ); } - class MoveNextThrowsEnumerable : IEnumerable + private class MoveNextThrowsEnumerable : IEnumerable { - IEnumerable e; - Exception ex; + private IEnumerable e; + private readonly Exception ex; public MoveNextThrowsEnumerable(IEnumerable e, Exception ex) { @@ -2190,10 +2197,10 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() return GetEnumerator(); } - class Enumerator : IEnumerator + private class Enumerator : IEnumerator { - IEnumerator e; - Exception ex; + private IEnumerator e; + private readonly Exception ex; public Enumerator(IEnumerator e, Exception ex) { @@ -2656,7 +2663,9 @@ public void SelectManyWithIndex_Enumerable_SelectorThrows() { invoked++; if (invoked == 3) + { throw ex; + } return Enumerable.Repeat(x, x); }) @@ -2707,7 +2716,9 @@ public void SelectManyWithIndex_Enumerable_ResultSelectorThrows() (x, _, y, __) => { if (x == 3) + { throw ex; + } return x + y; } @@ -2793,7 +2804,9 @@ public void SelectManyWithIndex_Enumerable_SelectorThrows_ResultSelector() { invoked++; if (invoked == 3) + { throw ex; + } return Enumerable.Repeat(x, x); }, @@ -3166,7 +3179,7 @@ from y in Observable.Interval(TimeSpan.FromTicks(1), scheduler).Take(x) ); } - static T Throw(Exception ex) + private static T Throw(Exception ex) { throw ex; } @@ -5046,7 +5059,7 @@ public void SelectMany_Task_ArgumentChecking() ReactiveAssert.Throws(() => Observable.SelectMany(default(IObservable), x => t)); ReactiveAssert.Throws(() => Observable.SelectMany(DummyObservable.Instance, default(Func>))); - ReactiveAssert.Throws(() => Observable.SelectMany(default(IObservable), (int x, CancellationToken ct) => t)); + ReactiveAssert.Throws(() => Observable.SelectMany(default, (int x, CancellationToken ct) => t)); ReactiveAssert.Throws(() => Observable.SelectMany(DummyObservable.Instance, default(Func>))); ReactiveAssert.Throws(() => Observable.SelectMany(default(IObservable), x => t, (x, y) => x)); @@ -5080,14 +5093,19 @@ public void SelectMany_Task_TaskThrows() var res = Observable.Range(0, 10).SelectMany(x => Task.Factory.StartNew(() => { if (x > 5) + { throw ex; + } + return x + 1; })).ToEnumerable(); ReactiveAssert.Throws(ex, () => { foreach (var x in res) + { ; + } }); } @@ -5099,14 +5117,19 @@ public void SelectMany_Task_SelectorThrows() var res = Observable.Range(0, 10).SelectMany(x => { if (x > 5) + { throw ex; + } + return Task.Factory.StartNew(() => x + 1); }).ToEnumerable(); ReactiveAssert.Throws(ex, () => { foreach (var x in res) + { ; + } }); } @@ -5132,14 +5155,19 @@ public void SelectMany_Task_ResultSelectorThrows() var res = Observable.Range(0, 10).SelectMany(x => Task.Factory.StartNew(() => x + 1), (x, y) => { if (x > 5) + { throw ex; + } + return x + y; }).ToEnumerable(); ReactiveAssert.Throws(ex, () => { foreach (var x in res) + { ; + } }); } @@ -5500,7 +5528,9 @@ public void SelectMany_TaskWithCompletionSource_Simple_Cancellation_AfterSelecto var res = Observable.SelectMany(xs, (x, token) => { if (x == 2) + { throw ex; + } var tcs = tcss[x]; @@ -5891,7 +5921,9 @@ public void SelectMany_TaskWithCompletionSource_WithResultSelector_Cancellation_ var res = Observable.SelectMany(xs, (x, token) => { if (x == 2) + { throw ex; + } var tcs = tcss[x]; @@ -5993,14 +6025,19 @@ public void SelectManyWithIndex_Task_TaskThrows() var res = Observable.Range(0, 10).SelectMany((int x, int _) => Task.Factory.StartNew(() => { if (x > 5) + { throw ex; + } + return x + 1; })).ToEnumerable(); ReactiveAssert.Throws(ex, () => { foreach (var x in res) + { ; + } }); } @@ -6012,14 +6049,19 @@ public void SelectManyWithIndex_Task_SelectorThrows() var res = Observable.Range(0, 10).SelectMany((int x, int _) => { if (x > 5) + { throw ex; + } + return Task.Factory.StartNew(() => x + 1); }).ToEnumerable(); ReactiveAssert.Throws(ex, () => { foreach (var x in res) + { ; + } }); } @@ -6045,14 +6087,19 @@ public void SelectManyWithIndex_Task_ResultSelectorThrows() var res = Observable.Range(0, 10).SelectMany((x, _) => Task.Factory.StartNew(() => x + 1), (x, _, y) => { if (x > 5) + { throw ex; + } + return x + y; }).ToEnumerable(); ReactiveAssert.Throws(ex, () => { foreach (var x in res) + { ; + } }); } @@ -6413,7 +6460,9 @@ public void SelectManyWithIndex_TaskWithCompletionSource_Simple_Cancellation_Aft var res = Observable.SelectMany(xs, (x, _, token) => { if (x == 2) + { throw ex; + } var tcs = tcss[x]; @@ -6804,7 +6853,9 @@ public void SelectManyWithIndex_TaskWithCompletionSource_WithResultSelector_Canc var res = Observable.SelectMany(xs, (x, _, token) => { if (x == 2) + { throw ex; + } var tcs = tcss[x]; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SelectTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SelectTest.cs index 50d086ca03..8bd80d52e7 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SelectTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SelectTest.cs @@ -3,20 +3,13 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -79,7 +72,10 @@ public void Select_DisposeInsideSelector() { invoked++; if (scheduler.Clock > 400) + { d.Dispose(); + } + return x; }).Subscribe(res); @@ -248,7 +244,10 @@ public void Select_SelectorThrows() { invoked++; if (invoked == 3) + { throw ex; + } + return x + 1; }) ); @@ -322,7 +321,10 @@ public void SelectWithIndex_DisposeInsideSelector() { invoked++; if (scheduler.Clock > 400) + { d.Dispose(); + } + return x + index * 10; }).Subscribe(res); @@ -490,7 +492,10 @@ public void SelectWithIndex_SelectorThrows() { invoked++; if (invoked == 3) + { throw ex; + } + return (x + 1) + (index * 10); }) ); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SequenceEqualTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SequenceEqualTest.cs index 674867316e..6983db9306 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SequenceEqualTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SequenceEqualTest.cs @@ -5,15 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -23,17 +18,17 @@ public class SequenceEqualTest : ReactiveTest [Fact] public void SequenceEqual_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.SequenceEqual(default(IObservable), DummyObservable.Instance)); + ReactiveAssert.Throws(() => Observable.SequenceEqual(default, DummyObservable.Instance)); ReactiveAssert.Throws(() => Observable.SequenceEqual(DummyObservable.Instance, default(IObservable))); - ReactiveAssert.Throws(() => Observable.SequenceEqual(default(IObservable), DummyObservable.Instance, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.SequenceEqual(default, DummyObservable.Instance, EqualityComparer.Default)); ReactiveAssert.Throws(() => Observable.SequenceEqual(DummyObservable.Instance, default(IObservable), EqualityComparer.Default)); - ReactiveAssert.Throws(() => Observable.SequenceEqual(DummyObservable.Instance, DummyObservable.Instance, default(IEqualityComparer))); + ReactiveAssert.Throws(() => Observable.SequenceEqual(DummyObservable.Instance, DummyObservable.Instance, default)); - ReactiveAssert.Throws(() => Observable.SequenceEqual(default(IObservable), new[] { 42 })); + ReactiveAssert.Throws(() => Observable.SequenceEqual(default, new[] { 42 })); ReactiveAssert.Throws(() => Observable.SequenceEqual(DummyObservable.Instance, default(IEnumerable))); - ReactiveAssert.Throws(() => Observable.SequenceEqual(default(IObservable), new[] { 42 }, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Observable.SequenceEqual(default, new[] { 42 }, EqualityComparer.Default)); ReactiveAssert.Throws(() => Observable.SequenceEqual(DummyObservable.Instance, default(IEnumerable), EqualityComparer.Default)); - ReactiveAssert.Throws(() => Observable.SequenceEqual(DummyObservable.Instance, new[] { 42 }, default(IEqualityComparer))); + ReactiveAssert.Throws(() => Observable.SequenceEqual(DummyObservable.Instance, new[] { 42 }, default)); } [Fact] @@ -562,9 +557,9 @@ public void SequenceEqual_Observable_ComparerThrows_Sym() ); } - class ThrowComparer : IEqualityComparer + private class ThrowComparer : IEqualityComparer { - private Exception _ex; + private readonly Exception _ex; public ThrowComparer(Exception ex) { @@ -840,7 +835,7 @@ public void SequenceEqual_Enumerable_Comparer_NotEqual() ); } - class OddEvenComparer : IEqualityComparer + private class OddEvenComparer : IEqualityComparer { public bool Equals(int x, int y) { @@ -884,10 +879,10 @@ public void SequenceEqual_Enumerable_Comparer_Throws() ); } - class ThrowingComparer : IEqualityComparer + private class ThrowingComparer : IEqualityComparer { - private int _x; - private Exception _ex; + private readonly int _x; + private readonly Exception _ex; public ThrowingComparer(int x, Exception ex) { @@ -898,7 +893,9 @@ public ThrowingComparer(int x, Exception ex) public bool Equals(int x, int y) { if (x == _x) + { throw _ex; + } return x == y; } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleAsyncTest.cs index cf2f08c719..f8b9dfed0a 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleAsyncTest.cs @@ -3,17 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -25,7 +18,7 @@ public void SingleAsync_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.SingleAsync(default(IObservable))); ReactiveAssert.Throws(() => Observable.SingleAsync(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.SingleAsync(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.SingleAsync(DummyObservable.Instance, default)); } [Fact] @@ -248,7 +241,7 @@ public void SingleAsync_PredicateThrows() ); var res = scheduler.Start(() => - xs.SingleAsync(x => { if (x < 4) return false; throw ex; }) + xs.SingleAsync(x => { if (x < 4) { return false; } throw ex; }) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleOrDefaultAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleOrDefaultAsyncTest.cs index 1a2310a98a..21aab7d6f2 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleOrDefaultAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleOrDefaultAsyncTest.cs @@ -3,17 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -25,7 +18,7 @@ public void SingleOrDefaultAsync_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.SingleOrDefaultAsync(default(IObservable))); ReactiveAssert.Throws(() => Observable.SingleOrDefaultAsync(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.SingleOrDefaultAsync(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.SingleOrDefaultAsync(DummyObservable.Instance, default)); } [Fact] @@ -284,7 +277,7 @@ public void SingleOrDefaultAsync_PredicateThrows() ); var res = scheduler.Start(() => - xs.SingleOrDefaultAsync(x => { if (x < 4) return false; throw ex; }) + xs.SingleOrDefaultAsync(x => { if (x < 4) { return false; } throw ex; }) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleOrDefaultTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleOrDefaultTest.cs index cea5593ce0..9723ee68e2 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleOrDefaultTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleOrDefaultTest.cs @@ -3,17 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -25,19 +19,19 @@ public void SingleOrDefault_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.SingleOrDefault(default(IObservable))); ReactiveAssert.Throws(() => Observable.SingleOrDefault(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.SingleOrDefault(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.SingleOrDefault(DummyObservable.Instance, default)); } [Fact] public void SingleOrDefault_Empty() { - Assert.Equal(default(int), Observable.Empty().SingleOrDefault()); + Assert.Equal(default, Observable.Empty().SingleOrDefault()); } [Fact] public void SingleOrDefaultPredicate_Empty() { - Assert.Equal(default(int), Observable.Empty().SingleOrDefault(_ => true)); + Assert.Equal(default, Observable.Empty().SingleOrDefault(_ => true)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleTest.cs index 40cb829fe4..efbaaed78e 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SingleTest.cs @@ -3,17 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -25,7 +19,7 @@ public void Single_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.Single(default(IObservable))); ReactiveAssert.Throws(() => Observable.Single(default(IObservable), _ => true)); - ReactiveAssert.Throws(() => Observable.Single(DummyObservable.Instance, default(Func))); + ReactiveAssert.Throws(() => Observable.Single(DummyObservable.Instance, default)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipLastTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipLastTest.cs index 175c5aee28..d4795d4f1c 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipLastTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipLastTest.cs @@ -5,18 +5,12 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -384,7 +378,7 @@ public void SkipLast_Timed_ArgumentChecking() ReactiveAssert.Throws(() => Observable.SkipLast(xs, TimeSpan.FromSeconds(-1))); ReactiveAssert.Throws(() => Observable.SkipLast(default(IObservable), TimeSpan.FromSeconds(1), Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.SkipLast(xs, TimeSpan.FromSeconds(1), default(IScheduler))); + ReactiveAssert.Throws(() => Observable.SkipLast(xs, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => Observable.SkipLast(xs, TimeSpan.FromSeconds(-1), Scheduler.Default)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipTest.cs index 3853f60309..fe38184c21 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipTest.cs @@ -5,18 +5,12 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -497,7 +491,7 @@ public void Skip_Timed_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Skip(xs, TimeSpan.FromSeconds(-1))); ReactiveAssert.Throws(() => Observable.Skip(default(IObservable), TimeSpan.FromSeconds(1), Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.Skip(xs, TimeSpan.FromSeconds(1), default(IScheduler))); + ReactiveAssert.Throws(() => Observable.Skip(xs, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => Observable.Skip(xs, TimeSpan.FromSeconds(-1), Scheduler.Default)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipUntilTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipUntilTest.cs index 44486e3cb5..17822fad9e 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipUntilTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipUntilTest.cs @@ -4,19 +4,12 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -378,7 +371,7 @@ public void SkipUntil_HasCompletedCausesDisposal() { var scheduler = new TestScheduler(); - bool disposed = false; + var disposed = false; var l = scheduler.CreateHotObservable( OnNext(150, 1), @@ -455,7 +448,7 @@ public void SkipUntil_Timed_ArgumentChecking() ReactiveAssert.Throws(() => Observable.SkipUntil(default(IObservable), DateTimeOffset.Now)); ReactiveAssert.Throws(() => Observable.SkipUntil(default(IObservable), DateTimeOffset.Now, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.SkipUntil(xs, DateTimeOffset.Now, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.SkipUntil(xs, DateTimeOffset.Now, default)); } [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipWhileTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipWhileTest.cs index 3b6b540133..5d1634907b 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipWhileTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SkipWhileTest.cs @@ -3,20 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -375,7 +366,10 @@ public void SkipWhile_Throw() { invoked++; if (invoked == 3) + { throw ex; + } + return IsPrime(x); }) ); @@ -486,7 +480,7 @@ public void SkipWhile_Index_SelectorThrows() ); var res = scheduler.Start(() => - xs.SkipWhile((x, i) => { if (i < 5) return true; throw ex; }) + xs.SkipWhile((x, i) => { if (i < 5) { return true; } throw ex; }) ); res.Messages.AssertEqual( @@ -498,15 +492,21 @@ public void SkipWhile_Index_SelectorThrows() ); } - static bool IsPrime(int i) + private static bool IsPrime(int i) { if (i <= 1) + { return false; + } var max = (int)Math.Sqrt(i); for (var j = 2; j <= max; ++j) + { if (i % j == 0) + { return false; + } + } return true; } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartAsyncTest.cs index 95dc579ac5..b9250681d6 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartAsyncTest.cs @@ -3,25 +3,21 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; namespace ReactiveTests.Tests { public class StartAsyncTest : ReactiveTest { - private Task doneTask; + private readonly Task doneTask; public StartAsyncTest() { @@ -43,8 +39,8 @@ public void StartAsync_Func_ArgumentChecking() ReactiveAssert.Throws(() => Observable.StartAsync(default(Func>), s)); ReactiveAssert.Throws(() => Observable.StartAsync(default(Func>), s)); - ReactiveAssert.Throws(() => Observable.StartAsync(() => doneTask, default(IScheduler))); - ReactiveAssert.Throws(() => Observable.StartAsync(ct => doneTask, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.StartAsync(() => doneTask, default)); + ReactiveAssert.Throws(() => Observable.StartAsync(ct => doneTask, default)); } [Fact] @@ -144,7 +140,7 @@ public void StartAsync_FuncWithCancel_Cancel() { var N = 10; - for (int n = 0; n < N; n++) + for (var n = 0; n < N; n++) { var e = new ManualResetEvent(false); var f = new ManualResetEvent(false); @@ -157,7 +153,9 @@ public void StartAsync_FuncWithCancel_Cancel() { e.Set(); while (true) + { ct.ThrowIfCancellationRequested(); + } } finally { @@ -173,7 +171,9 @@ public void StartAsync_FuncWithCancel_Cancel() f.WaitOne(); while (!t.IsCompleted) + { ; + } ReactiveAssert.Throws(() => xs.Single()); } @@ -245,8 +245,8 @@ public void StartAsync_Action_ArgumentChecking() ReactiveAssert.Throws(() => Observable.StartAsync(default(Func), s)); ReactiveAssert.Throws(() => Observable.StartAsync(default(Func), s)); - ReactiveAssert.Throws(() => Observable.StartAsync(() => (Task)doneTask, default(IScheduler))); - ReactiveAssert.Throws(() => Observable.StartAsync(ct => (Task)doneTask, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.StartAsync(() => (Task)doneTask, default)); + ReactiveAssert.Throws(() => Observable.StartAsync(ct => (Task)doneTask, default)); } [Fact] @@ -338,7 +338,7 @@ public void StartAsync_ActionWithCancel_Cancel() { var N = 10; - for (int n = 0; n < N; n++) + for (var n = 0; n < N; n++) { var e = new ManualResetEvent(false); var f = new ManualResetEvent(false); @@ -351,7 +351,9 @@ public void StartAsync_ActionWithCancel_Cancel() { e.Set(); while (true) + { ct.ThrowIfCancellationRequested(); + } } finally { @@ -367,7 +369,9 @@ public void StartAsync_ActionWithCancel_Cancel() f.WaitOne(); while (!t.IsCompleted) + { ; + } ReactiveAssert.Throws(() => xs.Single()); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartTest.cs index f931a72071..3ee23180ad 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartTest.cs @@ -3,17 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { @@ -24,7 +18,7 @@ public class StartTest : ReactiveTest public void Start_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.Start(null)); - ReactiveAssert.Throws(() => Observable.Start((Func)null)); + ReactiveAssert.Throws(() => Observable.Start(null)); var someScheduler = new TestScheduler(); ReactiveAssert.Throws(() => Observable.Start(null, someScheduler)); @@ -37,7 +31,7 @@ public void Start_ArgumentChecking() [Fact] public void Start_Action() { - bool done = false; + var done = false; Assert.True(Observable.Start(() => { done = true; }).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(done, "done"); } @@ -47,7 +41,7 @@ public void Start_Action2() { var scheduler = new TestScheduler(); - bool done = false; + var done = false; var res = scheduler.Start(() => Observable.Start(() => { done = true; }, scheduler) diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartWithTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartWithTest.cs index 95cbf77866..1d8e5a1096 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartWithTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/StartWithTest.cs @@ -4,19 +4,10 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -31,18 +22,18 @@ public void StartWith_ArgumentChecking() var scheduler = new TestScheduler(); var someObservable = Observable.Empty(); - ReactiveAssert.Throws(() => Observable.StartWith(default(IObservable), 1)); + ReactiveAssert.Throws(() => Observable.StartWith(default, 1)); ReactiveAssert.Throws(() => Observable.StartWith(someObservable, default(int[]))); ReactiveAssert.Throws(() => Observable.StartWith(default(IObservable), values)); ReactiveAssert.Throws(() => Observable.StartWith(someObservable, default(IEnumerable))); - ReactiveAssert.Throws(() => Observable.StartWith(default(IObservable), scheduler, 1)); + ReactiveAssert.Throws(() => Observable.StartWith(default, scheduler, 1)); ReactiveAssert.Throws(() => Observable.StartWith(someObservable, default(IScheduler), 1)); - ReactiveAssert.Throws(() => Observable.StartWith(someObservable, scheduler, default(int[]))); + ReactiveAssert.Throws(() => Observable.StartWith(someObservable, scheduler, default)); ReactiveAssert.Throws(() => Observable.StartWith(default(IObservable), scheduler, values)); - ReactiveAssert.Throws(() => Observable.StartWith(someObservable, default(IScheduler), values)); + ReactiveAssert.Throws(() => Observable.StartWith(someObservable, default, values)); ReactiveAssert.Throws(() => Observable.StartWith(someObservable, scheduler, default(IEnumerable))); } @@ -103,7 +94,7 @@ public void StartWith_Enumerable() OnCompleted(250) ); - List data = new List(new[] { 1, 2, 3 }); + var data = new List(new[] { 1, 2, 3 }); var res = scheduler.Start(() => xs.StartWith(data) ); @@ -128,7 +119,7 @@ public void StartWith_Enumerable_Scheduler() OnCompleted(250) ); - List data = new List(new[] { 1, 2, 3 }); + var data = new List(new[] { 1, 2, 3 }); var res = scheduler.Start(() => xs.StartWith(scheduler, data) ); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SubscribeOnTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SubscribeOnTest.cs index 2050a5d9a3..1c675f72af 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SubscribeOnTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SubscribeOnTest.cs @@ -3,18 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; +using Xunit; namespace ReactiveTests.Tests { @@ -51,7 +45,7 @@ public void SubscribeOn_ArgumentChecking() ReactiveAssert.Throws(() => DispatcherObservable.SubscribeOn(someObservable, default(Dispatcher))); ReactiveAssert.Throws(() => DispatcherObservable.SubscribeOnDispatcher(default(IObservable))); #endif - ReactiveAssert.Throws(() => Observable.SubscribeOn(default(IObservable), new SynchronizationContext())); + ReactiveAssert.Throws(() => Observable.SubscribeOn(default, new SynchronizationContext())); ReactiveAssert.Throws(() => Observable.SubscribeOn(someObservable, default(SynchronizationContext))); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SubscribeTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SubscribeTest.cs index 2490c361de..fc134326de 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SubscribeTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SubscribeTest.cs @@ -4,17 +4,13 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; +using Xunit; namespace ReactiveTests.Tests { @@ -24,12 +20,12 @@ public class SubscribeTest : ReactiveTest [Fact] public void SubscribeToEnumerable_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Subscribe((IEnumerable)null, DummyObserver.Instance)); - ReactiveAssert.Throws(() => Observable.Subscribe(DummyEnumerable.Instance, (IObserver)null)); + ReactiveAssert.Throws(() => Observable.Subscribe(null, DummyObserver.Instance)); + ReactiveAssert.Throws(() => Observable.Subscribe(DummyEnumerable.Instance, null)); - ReactiveAssert.Throws(() => Observable.Subscribe((IEnumerable)null, DummyObserver.Instance, DummyScheduler.Instance)); + ReactiveAssert.Throws(() => Observable.Subscribe(null, DummyObserver.Instance, DummyScheduler.Instance)); ReactiveAssert.Throws(() => Observable.Subscribe(DummyEnumerable.Instance, DummyObserver.Instance, null)); - ReactiveAssert.Throws(() => Observable.Subscribe(DummyEnumerable.Instance, (IObserver)null, DummyScheduler.Instance)); + ReactiveAssert.Throws(() => Observable.Subscribe(DummyEnumerable.Instance, null, DummyScheduler.Instance)); ReactiveAssert.Throws(() => NullEnumeratorEnumerable.Instance.Subscribe(Observer.Create(x => { }), Scheduler.CurrentThread)); } @@ -125,7 +121,7 @@ public void SubscribeToEnumerable_Error() [Fact] public void SubscribeToEnumerable_DefaultScheduler() { - for (int i = 0; i < 100; i++) + for (var i = 0; i < 100; i++) { var scheduler = new TestScheduler(); @@ -148,7 +144,7 @@ public void SubscribeToEnumerable_DefaultScheduler() } } - IEnumerable Enumerable_Finite() + private IEnumerable Enumerable_Finite() { yield return 1; yield return 2; @@ -158,13 +154,15 @@ IEnumerable Enumerable_Finite() yield break; } - IEnumerable Enumerable_Infinite() + private IEnumerable Enumerable_Infinite() { while (true) + { yield return 1; + } } - IEnumerable Enumerable_Error(Exception exception) + private IEnumerable Enumerable_Error(Exception exception) { yield return 1; yield return 2; @@ -179,22 +177,22 @@ public void Subscribe_ArgumentChecking() { var someObservable = Observable.Empty(); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default(IObservable))); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default)); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default(IObservable), _ => { })); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default, _ => { })); ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default(Action))); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default(IObservable), _ => { }, () => { })); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default(Action), () => { })); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default, _ => { }, () => { })); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default, () => { })); ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, _ => { }, default(Action))); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default(IObservable), _ => { }, (Exception _) => { })); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default(Action), (Exception _) => { })); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default, _ => { }, (Exception _) => { })); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default, (Exception _) => { })); ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, _ => { }, default(Action))); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default(IObservable), _ => { }, (Exception _) => { }, () => { })); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default(Action), (Exception _) => { }, () => { })); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, _ => { }, default(Action), () => { })); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default, _ => { }, (Exception _) => { }, () => { })); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default, (Exception _) => { }, () => { })); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, _ => { }, default, () => { })); ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, _ => { }, (Exception _) => { }, default(Action))); } @@ -223,7 +221,7 @@ public void Subscribe_None_Empty() [Fact] public void Subscribe_OnNext_Return() { - int _x = -1; + var _x = -1; Observable.Return(42, Scheduler.Immediate).Subscribe((int x) => { _x = x; }); Assert.Equal(42, _x); } @@ -247,8 +245,8 @@ public void Subscribe_OnNext_Empty() [Fact] public void Subscribe_OnNextOnCompleted_Return() { - bool finished = false; - int _x = -1; + var finished = false; + var _x = -1; Observable.Return(42, Scheduler.Immediate).Subscribe((int x) => { _x = x; }, () => { finished = true; }); Assert.Equal(42, _x); Assert.True(finished); @@ -267,7 +265,7 @@ public void Subscribe_OnNextOnCompleted_Throw() [Fact] public void Subscribe_OnNextOnCompleted_Empty() { - bool finished = false; + var finished = false; Observable.Empty(Scheduler.Immediate).Subscribe((int _) => { Assert.True(false); }, () => { finished = true; }); Assert.True(finished); } @@ -283,26 +281,26 @@ public void Subscribe_CT_ArgumentChecking() var someObserver = Observer.Create(_ => { }); var ct = CancellationToken.None; - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default(IObservable), someObserver, ct)); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default, someObserver, ct)); ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default(IObserver), ct)); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default(IObservable), ct)); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default, ct)); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default(IObservable), _ => { }, ct)); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default, _ => { }, ct)); ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default(Action), ct)); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default(IObservable), _ => { }, () => { }, ct)); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default(Action), () => { }, ct)); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default, _ => { }, () => { }, ct)); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default, () => { }, ct)); ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, _ => { }, default(Action), ct)); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default(IObservable), _ => { }, (Exception _) => { }, ct)); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default(Action), (Exception _) => { }, ct)); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default, _ => { }, (Exception _) => { }, ct)); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default, (Exception _) => { }, ct)); ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, _ => { }, default(Action), ct)); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default(IObservable), _ => { }, (Exception _) => { }, () => { }, ct)); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default(Action), (Exception _) => { }, () => { }, ct)); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, _ => { }, default(Action), () => { }, ct)); - ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, _ => { }, (Exception _) => { }, default(Action), ct)); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(default, _ => { }, (Exception _) => { }, () => { }, ct)); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, default, (Exception _) => { }, () => { }, ct)); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, _ => { }, default, () => { }, ct)); + ReactiveAssert.Throws(() => ObservableExtensions.Subscribe(someObservable, _ => { }, (Exception _) => { }, default, ct)); } [Fact] @@ -529,7 +527,9 @@ public void Subscribe_CT_CancelDuringCallback() n++; if (x == 2) + { cts.Cancel(); + } }, cts.Token)); scheduler.Start(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SumTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SumTest.cs index cc82af1e98..a72da91332 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SumTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SumTest.cs @@ -3,17 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { @@ -33,7 +26,7 @@ public void Sum_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Sum(default(IObservable))); ReactiveAssert.Throws(() => Observable.Sum(default(IObservable))); - ReactiveAssert.Throws(() => Observable.Sum(default(IObservable), _ => default(int))); + ReactiveAssert.Throws(() => Observable.Sum(default(IObservable), _ => default)); ReactiveAssert.Throws(() => Observable.Sum(default(IObservable), _ => default(double))); ReactiveAssert.Throws(() => Observable.Sum(default(IObservable), _ => default(float))); ReactiveAssert.Throws(() => Observable.Sum(default(IObservable), _ => default(decimal))); @@ -44,7 +37,7 @@ public void Sum_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Sum(default(IObservable), _ => default(decimal?))); ReactiveAssert.Throws(() => Observable.Sum(default(IObservable), _ => default(long?))); - ReactiveAssert.Throws(() => Observable.Sum(Observable.Empty(), default(Func))); + ReactiveAssert.Throws(() => Observable.Sum(Observable.Empty(), default)); ReactiveAssert.Throws(() => Observable.Sum(Observable.Empty(), default(Func))); ReactiveAssert.Throws(() => Observable.Sum(Observable.Empty(), default(Func))); ReactiveAssert.Throws(() => Observable.Sum(Observable.Empty(), default(Func))); @@ -1408,7 +1401,7 @@ public void Sum_Selector_Regular_Int32() OnCompleted(240) ); - var res = scheduler.Start(() => xs.Sum(x => (int)x.Length)); + var res = scheduler.Start(() => xs.Sum(x => x.Length)); res.Messages.AssertEqual( OnNext(240, 6), diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SwitchTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SwitchTest.cs index 544de2d7a1..d15fb61139 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SwitchTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SwitchTest.cs @@ -3,20 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SynchronizeTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SynchronizeTest.cs index 24bc8d301e..73edc6a898 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SynchronizeTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/SynchronizeTest.cs @@ -3,18 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; namespace ReactiveTests.Tests { @@ -25,9 +19,9 @@ public void Synchronize_ArgumentChecking() { var someObservable = Observable.Empty(); - ReactiveAssert.Throws(() => Observable.Synchronize(default(IObservable))); + ReactiveAssert.Throws(() => Observable.Synchronize(default)); - ReactiveAssert.Throws(() => Observable.Synchronize(default(IObservable), new object())); + ReactiveAssert.Throws(() => Observable.Synchronize(default, new object())); ReactiveAssert.Throws(() => Observable.Synchronize(someObservable, null)); } @@ -35,8 +29,8 @@ public void Synchronize_ArgumentChecking() [Fact] public void Synchronize_Range() { - int i = 0; - bool outsideLock = true; + var i = 0; + var outsideLock = true; var gate = new object(); lock (gate) @@ -53,7 +47,7 @@ public void Synchronize_Range() Thread.Sleep(10); lock (gate) { - int start = i; + var start = i; Thread.Sleep(100); Assert.Equal(start, i); } @@ -66,7 +60,7 @@ public void Synchronize_Throw() var ex = new Exception(); var resLock = new object(); var e = default(Exception); - bool outsideLock = true; + var outsideLock = true; var gate = new object(); lock (gate) @@ -83,7 +77,9 @@ public void Synchronize_Throw() lock (resLock) { if (e != null) + { break; + } } } @@ -97,7 +93,7 @@ public void Synchronize_BadObservable() { var t1 = new Thread(() => { - for (int i = 0; i < 100; i++) + for (var i = 0; i < 100; i++) { obs.OnNext(i); } @@ -107,7 +103,7 @@ public void Synchronize_BadObservable() { t1.Start(); - for (int i = 100; i < 200; i++) + for (var i = 100; i < 200; i++) { obs.OnNext(i); } @@ -121,7 +117,7 @@ public void Synchronize_BadObservable() var evt = new ManualResetEvent(false); - int sum = 0; + var sum = 0; o.Synchronize().Subscribe(x => sum += x, () => { evt.Set(); }); evt.WaitOne(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeLastBufferTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeLastBufferTest.cs index 8399607891..021f096860 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeLastBufferTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeLastBufferTest.cs @@ -5,18 +5,12 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -327,7 +321,7 @@ public void TakeLastBuffer_Timed_ArgumentChecking() ReactiveAssert.Throws(() => Observable.TakeLastBuffer(xs, TimeSpan.FromSeconds(-1))); ReactiveAssert.Throws(() => Observable.TakeLastBuffer(default(IObservable), TimeSpan.FromSeconds(1), Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.TakeLastBuffer(xs, TimeSpan.FromSeconds(1), default(IScheduler))); + ReactiveAssert.Throws(() => Observable.TakeLastBuffer(xs, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => Observable.TakeLastBuffer(xs, TimeSpan.FromSeconds(-1), Scheduler.Default)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeLastTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeLastTest.cs index bacc8981bd..b69965e932 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeLastTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeLastTest.cs @@ -5,18 +5,12 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -32,7 +26,7 @@ public void TakeLast_ArgumentChecking() ReactiveAssert.Throws(() => Observable.TakeLast(DummyObservable.Instance, -1)); ReactiveAssert.Throws(() => Observable.TakeLast(null, 0, Scheduler.Default)); ReactiveAssert.Throws(() => Observable.TakeLast(DummyObservable.Instance, -1, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.TakeLast(DummyObservable.Instance, 0, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.TakeLast(DummyObservable.Instance, 0, default)); } [Fact] @@ -342,12 +336,12 @@ public void TakeLast_Timed_ArgumentChecking() ReactiveAssert.Throws(() => Observable.TakeLast(xs, TimeSpan.FromSeconds(-1))); ReactiveAssert.Throws(() => Observable.TakeLast(default(IObservable), TimeSpan.FromSeconds(1), Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.TakeLast(xs, TimeSpan.FromSeconds(1), default(IScheduler))); + ReactiveAssert.Throws(() => Observable.TakeLast(xs, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => Observable.TakeLast(xs, TimeSpan.FromSeconds(-1), Scheduler.Default)); ReactiveAssert.Throws(() => Observable.TakeLast(default(IObservable), TimeSpan.FromSeconds(1), Scheduler.Default, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.TakeLast(xs, TimeSpan.FromSeconds(1), default(IScheduler), Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.TakeLast(xs, TimeSpan.FromSeconds(1), Scheduler.Default, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.TakeLast(xs, TimeSpan.FromSeconds(1), default, Scheduler.Default)); + ReactiveAssert.Throws(() => Observable.TakeLast(xs, TimeSpan.FromSeconds(1), Scheduler.Default, default)); ReactiveAssert.Throws(() => Observable.TakeLast(xs, TimeSpan.FromSeconds(-1), Scheduler.Default, Scheduler.Default)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeTest.cs index 0b8102e315..282aafc8a0 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeTest.cs @@ -5,18 +5,13 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -32,7 +27,7 @@ public void Take_ArgumentChecking() ReactiveAssert.Throws(() => DummyObservable.Instance.Take(1).Subscribe(null)); ReactiveAssert.Throws(() => ((IObservable)null).Take(0, Scheduler.Immediate)); - ReactiveAssert.Throws(() => DummyObservable.Instance.Take(0, default(IScheduler))); + ReactiveAssert.Throws(() => DummyObservable.Instance.Take(0, default)); ReactiveAssert.Throws(() => DummyObservable.Instance.Take(-1, Scheduler.Immediate)); } @@ -619,7 +614,7 @@ public void Take_Timed_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Take(xs, TimeSpan.FromSeconds(-1))); ReactiveAssert.Throws(() => Observable.Take(default(IObservable), TimeSpan.FromSeconds(1), Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.Take(xs, TimeSpan.FromSeconds(1), default(IScheduler))); + ReactiveAssert.Throws(() => Observable.Take(xs, TimeSpan.FromSeconds(1), default)); ReactiveAssert.Throws(() => Observable.Take(xs, TimeSpan.FromSeconds(-1), Scheduler.Default)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeUntilTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeUntilTest.cs index ecb40fc8d2..54947b3fb5 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeUntilTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeUntilTest.cs @@ -5,18 +5,12 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -352,7 +346,7 @@ public void TakeUntil_Preempt_BeforeFirstProduced_RemainSilentAndProperDisposed( { var scheduler = new TestScheduler(); - bool sourceNotDisposed = false; + var sourceNotDisposed = false; var l = scheduler.CreateHotObservable( OnNext(150, 1), @@ -382,7 +376,7 @@ public void TakeUntil_NoPreempt_AfterLastProduced_ProperDisposedSignal() { var scheduler = new TestScheduler(); - bool signalNotDisposed = false; + var signalNotDisposed = false; var l = scheduler.CreateHotObservable( OnNext(150, 1), @@ -470,7 +464,7 @@ public void TakeUntil_Timed_ArgumentChecking() ReactiveAssert.Throws(() => Observable.TakeUntil(default(IObservable), DateTimeOffset.Now)); ReactiveAssert.Throws(() => Observable.TakeUntil(default(IObservable), DateTimeOffset.Now, Scheduler.Default)); - ReactiveAssert.Throws(() => Observable.TakeUntil(xs, DateTimeOffset.Now, default(IScheduler))); + ReactiveAssert.Throws(() => Observable.TakeUntil(xs, DateTimeOffset.Now, default)); } [Fact] @@ -840,7 +834,8 @@ public void TakeUntil_Predicate_Crash() OnCompleted(260) ); - var result = scheduler.Start(() => source.TakeUntil(v => { + var result = scheduler.Start(() => source.TakeUntil(v => + { if (v == 3) { throw ex; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeWhileTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeWhileTest.cs index fbab894f82..7e8d260699 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeWhileTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TakeWhileTest.cs @@ -3,20 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -378,7 +369,10 @@ public void TakeWhile_Throw() { invoked++; if (invoked == 3) + { throw ex; + } + return IsPrime(x); }) ); @@ -534,7 +528,7 @@ public void TakeWhile_Index_SelectorThrows() ); var res = scheduler.Start(() => - xs.TakeWhile((x, i) => { if (i < 5) return true; throw ex; }) + xs.TakeWhile((x, i) => { if (i < 5) { return true; } throw ex; }) ); res.Messages.AssertEqual( @@ -551,15 +545,21 @@ public void TakeWhile_Index_SelectorThrows() ); } - static bool IsPrime(int i) + private static bool IsPrime(int i) { if (i <= 1) + { return false; + } var max = (int)Math.Sqrt(i); for (var j = 2; j <= max; ++j) + { if (i % j == 0) + { return false; + } + } return true; } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ThenTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ThenTest.cs index eb6b4520d9..8ee7e94aa4 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ThenTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ThenTest.cs @@ -4,19 +4,9 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -117,7 +107,7 @@ public void Then2Throws() const int N = 2; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -143,7 +133,7 @@ public void Then3Throws() const int N = 3; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -169,7 +159,7 @@ public void Then4Throws() const int N = 4; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -195,7 +185,7 @@ public void Then5Throws() const int N = 5; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -221,7 +211,7 @@ public void Then6Throws() const int N = 6; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -247,7 +237,7 @@ public void Then7Throws() const int N = 7; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -273,7 +263,7 @@ public void Then8Throws() const int N = 8; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -299,7 +289,7 @@ public void Then9Throws() const int N = 9; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -325,7 +315,7 @@ public void Then10Throws() const int N = 10; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -351,7 +341,7 @@ public void Then11Throws() const int N = 11; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -377,7 +367,7 @@ public void Then12Throws() const int N = 12; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -403,7 +393,7 @@ public void Then13Throws() const int N = 13; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -429,7 +419,7 @@ public void Then14Throws() const int N = 14; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -455,7 +445,7 @@ public void Then15Throws() const int N = 15; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), @@ -481,7 +471,7 @@ public void Then16Throws() const int N = 16; var obs = new List>(); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { obs.Add(scheduler.CreateHotObservable( OnNext(210, 1), diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ThrottleTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ThrottleTest.cs index d23d11a140..d492e9a0da 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ThrottleTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ThrottleTest.cs @@ -5,18 +5,11 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -41,7 +34,9 @@ private IEnumerable>> Generate(S seed, Func(); ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), TimeSpan.Zero)); - ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), TimeSpan.Zero, someObservable)); + ReactiveAssert.Throws(() => Observable.Timeout(default, TimeSpan.Zero, someObservable)); ReactiveAssert.Throws(() => Observable.Timeout(someObservable, TimeSpan.Zero, default(IObservable))); ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), new DateTimeOffset())); - ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), new DateTimeOffset(), someObservable)); + ReactiveAssert.Throws(() => Observable.Timeout(default, new DateTimeOffset(), someObservable)); ReactiveAssert.Throws(() => Observable.Timeout(someObservable, new DateTimeOffset(), default(IObservable))); ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), TimeSpan.Zero, scheduler)); ReactiveAssert.Throws(() => Observable.Timeout(someObservable, TimeSpan.Zero, default(IScheduler))); - ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), TimeSpan.Zero, someObservable, scheduler)); + ReactiveAssert.Throws(() => Observable.Timeout(default, TimeSpan.Zero, someObservable, scheduler)); ReactiveAssert.Throws(() => Observable.Timeout(someObservable, TimeSpan.Zero, someObservable, null)); - ReactiveAssert.Throws(() => Observable.Timeout(someObservable, TimeSpan.Zero, default(IObservable), scheduler)); + ReactiveAssert.Throws(() => Observable.Timeout(someObservable, TimeSpan.Zero, default, scheduler)); ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), new DateTimeOffset(), scheduler)); ReactiveAssert.Throws(() => Observable.Timeout(someObservable, new DateTimeOffset(), default(IScheduler))); - ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), new DateTimeOffset(), someObservable, scheduler)); + ReactiveAssert.Throws(() => Observable.Timeout(default, new DateTimeOffset(), someObservable, scheduler)); ReactiveAssert.Throws(() => Observable.Timeout(someObservable, new DateTimeOffset(), someObservable, null)); - ReactiveAssert.Throws(() => Observable.Timeout(someObservable, new DateTimeOffset(), default(IObservable), scheduler)); + ReactiveAssert.Throws(() => Observable.Timeout(someObservable, new DateTimeOffset(), default, scheduler)); ReactiveAssert.Throws(() => Observable.Timeout(someObservable, TimeSpan.FromSeconds(-1))); ReactiveAssert.Throws(() => Observable.Timeout(someObservable, TimeSpan.FromSeconds(-1), scheduler)); @@ -630,18 +621,18 @@ public void Timeout_Duration_ArgumentChecking() { var someObservable = Observable.Empty(); - ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), someObservable, x => someObservable, someObservable)); - ReactiveAssert.Throws(() => Observable.Timeout(someObservable, default(IObservable), x => someObservable, someObservable)); - ReactiveAssert.Throws(() => Observable.Timeout(someObservable, someObservable, default(Func>), someObservable)); - ReactiveAssert.Throws(() => Observable.Timeout(someObservable, someObservable, x => someObservable, default(IObservable))); + ReactiveAssert.Throws(() => Observable.Timeout(default, someObservable, x => someObservable, someObservable)); + ReactiveAssert.Throws(() => Observable.Timeout(someObservable, default, x => someObservable, someObservable)); + ReactiveAssert.Throws(() => Observable.Timeout(someObservable, someObservable, default, someObservable)); + ReactiveAssert.Throws(() => Observable.Timeout(someObservable, someObservable, x => someObservable, default)); ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), someObservable, x => someObservable)); - ReactiveAssert.Throws(() => Observable.Timeout(someObservable, default(IObservable), x => someObservable)); - ReactiveAssert.Throws(() => Observable.Timeout(someObservable, someObservable, default(Func>))); + ReactiveAssert.Throws(() => Observable.Timeout(someObservable, default, x => someObservable)); + ReactiveAssert.Throws(() => Observable.Timeout(someObservable, someObservable, default)); - ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), x => someObservable, someObservable)); + ReactiveAssert.Throws(() => Observable.Timeout(default, x => someObservable, someObservable)); ReactiveAssert.Throws(() => Observable.Timeout(someObservable, default(Func>), someObservable)); - ReactiveAssert.Throws(() => Observable.Timeout(someObservable, x => someObservable, default(IObservable))); + ReactiveAssert.Throws(() => Observable.Timeout(someObservable, x => someObservable, default)); ReactiveAssert.Throws(() => Observable.Timeout(default(IObservable), x => someObservable)); ReactiveAssert.Throws(() => Observable.Timeout(someObservable, default(Func>))); @@ -1018,9 +1009,13 @@ public void Timeout_Duration_Simple_SelectorThrows() xs.Timeout(ys, x => { if (x < 3) + { return zs; + } else + { throw ex; + } }) ); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TimerTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TimerTest.cs index 1c53948d9f..bf333323ba 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TimerTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TimerTest.cs @@ -5,18 +5,14 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; +using System.Text; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -477,7 +473,9 @@ public void RepeatingTimer_UsingStopwatch_Slippage3_CatchUpFromLongInvokeStart_T var onNext = new Action(x => { if (x == 0) + { throw ex; + } }); var d = default(IDisposable); @@ -519,7 +517,9 @@ public void RepeatingTimer_UsingStopwatch_Slippage3_CatchUpFromLongInvokeStart_T } if (x == 5) + { throw ex; + } }); var d = default(IDisposable); @@ -682,7 +682,9 @@ public void RepeatingTimer_Start_CatchUp() d.Disposable = xs.Subscribe(x => { if (x == 0) + { Thread.Sleep(500); + } if (x > 10) { @@ -714,10 +716,14 @@ public void RepeatingTimer_Start_CatchUp_Throws() xs.Subscribe(x => { if (x == 0) + { Thread.Sleep(500); + } if (x == 5) + { throw err; + } }); end.WaitOne(); @@ -728,7 +734,7 @@ public void RepeatingTimer_Start_CatchUp_Throws() } - class SchedulerWithCatch : IServiceProvider, IScheduler + internal class SchedulerWithCatch : IServiceProvider, IScheduler { private readonly IScheduler _scheduler; private readonly Action _setException; @@ -781,7 +787,7 @@ private Func GetCatch(Func _timers; @@ -792,21 +798,21 @@ public PeriodicTestScheduler() public IDisposable SchedulePeriodic(TState state, TimeSpan period, Func action) { - var run = new TimerRun(this.Clock); + var run = new TimerRun(Clock); _timers.Add(run); var x = state; var d = this.Schedule(period, self => { - run.Add(this.Clock); + run.Add(Clock); x = action(x); self(period); }); return new CompositeDisposable( - Disposable.Create(() => { run.Stop(this.Clock); }), + Disposable.Create(() => { run.Stop(Clock); }), d ); } @@ -819,13 +825,15 @@ public List Timers protected override object GetService(Type serviceType) { if (serviceType == typeof(ISchedulerPeriodic)) + { return this as ISchedulerPeriodic; + } return base.GetService(serviceType); } } - class TimerRun : IEnumerable + internal class TimerRun : IEnumerable { private readonly long _started; private long _stopped; @@ -853,9 +861,10 @@ public override int GetHashCode() public override bool Equals(object obj) { - var other = obj as TimerRun; - if (other == null) + if (!(obj is TimerRun other)) + { return false; + } return _started == other._started && _stopped == other._stopped && _ticks.SequenceEqual(other._ticks); } @@ -888,7 +897,9 @@ public override string ToString() sb.Append("Start(" + _started + ") "); sb.Append("Ticks(" + string.Join(", ", _ticks.Select(t => t.ToString()).ToArray()) + ") "); if (_hasStopped) + { sb.Append("Stop(" + _stopped + ")"); + } return sb.ToString(); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TimestampTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TimestampTest.cs index 25a537e31a..5c5bb61384 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TimestampTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/TimestampTest.cs @@ -3,20 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToArrayTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToArrayTest.cs index 1f96da8bd1..13a94685ec 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToArrayTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToArrayTest.cs @@ -3,17 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToAsyncTest.cs index be3569cfab..6bdaffb94c 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToAsyncTest.cs @@ -3,17 +3,12 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { @@ -23,76 +18,76 @@ public class ToAsyncTest : ReactiveTest [Fact] public void ToAsync_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func))); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); + ReactiveAssert.Throws(() => Observable.ToAsync(default)); var someScheduler = new TestScheduler(); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(default(Action), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); - ReactiveAssert.Throws(() => Observable.ToAsync(default(Func), someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); + ReactiveAssert.Throws(() => Observable.ToAsync(default, someScheduler)); ReactiveAssert.Throws(() => Observable.ToAsync(() => { }, null)); ReactiveAssert.Throws(() => Observable.ToAsync(a => { }, null)); @@ -371,7 +366,7 @@ public void ToAsync_Error16() [Fact] public void ToAsyncAction0() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync(() => { hasRun = true; })().ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync(() => { hasRun = true; }, Scheduler.Default)().ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -387,7 +382,7 @@ public void ToAsyncActionError0() [Fact] public void ToAsyncAction1() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync(a => { Assert.Equal(1, a); hasRun = true; })(1).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync(a => { Assert.Equal(1, a); hasRun = true; }, Scheduler.Default)(1).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -403,7 +398,7 @@ public void ToAsyncActionError1() [Fact] public void ToAsyncAction2() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b) => { Assert.Equal(1, a); Assert.Equal(2, b); hasRun = true; })(1, 2).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b) => { Assert.Equal(1, a); Assert.Equal(2, b); hasRun = true; }, Scheduler.Default)(1, 2).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -419,7 +414,7 @@ public void ToAsyncActionError2() [Fact] public void ToAsyncAction3() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); hasRun = true; })(1, 2, 3).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); hasRun = true; }, Scheduler.Default)(1, 2, 3).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -435,7 +430,7 @@ public void ToAsyncActionError3() [Fact] public void ToAsyncAction4() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); hasRun = true; })(1, 2, 3, 4).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -451,7 +446,7 @@ public void ToAsyncActionError4() [Fact] public void ToAsyncAction5() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); hasRun = true; })(1, 2, 3, 4, 5).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -467,7 +462,7 @@ public void ToAsyncActionError5() [Fact] public void ToAsyncAction6() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e, f) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); hasRun = true; })(1, 2, 3, 4, 5, 6).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e, f) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -483,7 +478,7 @@ public void ToAsyncActionError6() [Fact] public void ToAsyncAction7() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e, f, g) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); hasRun = true; })(1, 2, 3, 4, 5, 6, 7).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e, f, g) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -499,7 +494,7 @@ public void ToAsyncActionError7() [Fact] public void ToAsyncAction8() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -515,7 +510,7 @@ public void ToAsyncActionError8() [Fact] public void ToAsyncAction9() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -531,7 +526,7 @@ public void ToAsyncActionError9() [Fact] public void ToAsyncAction10() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -547,7 +542,7 @@ public void ToAsyncActionError10() [Fact] public void ToAsyncAction11() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -563,7 +558,7 @@ public void ToAsyncActionError11() [Fact] public void ToAsyncAction12() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k, l) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); Assert.Equal(12, l); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k, l) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); Assert.Equal(12, l); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -579,7 +574,7 @@ public void ToAsyncActionError12() [Fact] public void ToAsyncAction13() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k, l, m) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); Assert.Equal(12, l); Assert.Equal(13, m); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k, l, m) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); Assert.Equal(12, l); Assert.Equal(13, m); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -595,7 +590,7 @@ public void ToAsyncActionError13() [Fact] public void ToAsyncAction14() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k, l, m, n) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); Assert.Equal(12, l); Assert.Equal(13, m); Assert.Equal(14, n); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k, l, m, n) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); Assert.Equal(12, l); Assert.Equal(13, m); Assert.Equal(14, n); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -611,7 +606,7 @@ public void ToAsyncActionError14() [Fact] public void ToAsyncAction15() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); Assert.Equal(12, l); Assert.Equal(13, m); Assert.Equal(14, n); Assert.Equal(15, o); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); Assert.Equal(12, l); Assert.Equal(13, m); Assert.Equal(14, n); Assert.Equal(15, o); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); @@ -627,7 +622,7 @@ public void ToAsyncActionError15() [Fact] public void ToAsyncAction16() { - bool hasRun = false; + var hasRun = false; Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); Assert.Equal(12, l); Assert.Equal(13, m); Assert.Equal(14, n); Assert.Equal(15, o); Assert.Equal(16, p); hasRun = true; })(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(Observable.ToAsync((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => { Assert.Equal(1, a); Assert.Equal(2, b); Assert.Equal(3, c); Assert.Equal(4, d); Assert.Equal(5, e); Assert.Equal(6, f); Assert.Equal(7, g); Assert.Equal(8, h); Assert.Equal(9, i); Assert.Equal(10, j); Assert.Equal(11, k); Assert.Equal(12, l); Assert.Equal(13, m); Assert.Equal(14, n); Assert.Equal(15, o); Assert.Equal(16, p); hasRun = true; }, Scheduler.Default)(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16).ToEnumerable().SequenceEqual(new[] { new Unit() })); Assert.True(hasRun, "has run"); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToDictionaryTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToDictionaryTest.cs index 5f750cd03d..88e1af47ca 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToDictionaryTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToDictionaryTest.cs @@ -5,15 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -118,7 +113,7 @@ public void ToDictionary_KeySelectorThrows() ); var res = scheduler.Start(() => - xs.ToDictionary(x => { if (x < 4) return x * 2; throw ex; }, x => x * 4, EqualityComparer.Default) + xs.ToDictionary(x => { if (x < 4) { return x * 2; } throw ex; }, x => x * 4, EqualityComparer.Default) ); res.Messages.AssertEqual( @@ -147,7 +142,7 @@ public void ToDictionary_ElementSelectorThrows() ); var res = scheduler.Start(() => - xs.ToDictionary(x => x * 2, x => { if (x < 4) return x * 4; throw ex; }, EqualityComparer.Default) + xs.ToDictionary(x => x * 2, x => { if (x < 4) { return x * 4; } throw ex; }, EqualityComparer.Default) ); res.Messages.AssertEqual( diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEnumerableTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEnumerableTest.cs index b6094fa0a9..65dc56bf1e 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEnumerableTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEnumerableTest.cs @@ -3,18 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; +using System.Collections; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Collections; namespace ReactiveTests.Tests { @@ -44,7 +37,7 @@ public void ToEnumerable_ManualGeneric() { var res = Observable.Range(0, 10).ToEnumerable(); var ieg = res.GetEnumerator(); - for (int i = 0; i < 10; i++) + for (var i = 0; i < 10; i++) { Assert.True(ieg.MoveNext()); Assert.Equal(i, ieg.Current); @@ -57,7 +50,7 @@ public void ToEnumerable_ManualNonGeneric() { var res = (IEnumerable)Observable.Range(0, 10).ToEnumerable(); var ien = res.GetEnumerator(); - for (int i = 0; i < 10; i++) + for (var i = 0; i < 10; i++) { Assert.True(ien.MoveNext()); Assert.Equal(i, ien.Current); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEventPatternTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEventPatternTest.cs index 10974f49e4..af67f2e7c5 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEventPatternTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEventPatternTest.cs @@ -5,16 +5,12 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Reactive.Subjects; +using System.Reflection; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -106,19 +102,17 @@ public void ToEventPattern_IEvent_Completes() Assert.True(lst.SequenceEqual(new[] { 42, 43 })); } - class EventSrc + private class EventSrc { public event EventHandler> E; public void On(string s) { - var e = E; - if (e != null) - e(this, new EventArgs(s)); + E?.Invoke(this, new EventArgs(s)); } } - class EventArgs : EventArgs + private class EventArgs : EventArgs { public T Value { get; private set; } @@ -251,7 +245,7 @@ public void ToEvent_DoneImmediately() var num = 0; var hnd = new Action(e => num++); - for (int i = 0; i < 2; i++) + for (var i = 0; i < 2; i++) { evt.OnNext += hnd; @@ -342,7 +336,7 @@ public void EventPattern_Inequality() Assert.True(e1.GetHashCode() != e3.GetHashCode()); } - class MyEventArgs : EventArgs + private class MyEventArgs : EventArgs { } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEventTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEventTest.cs index 74d530d151..638bf996b3 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEventTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToEventTest.cs @@ -5,16 +5,11 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Reactive.Subjects; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -24,7 +19,7 @@ public class ToEventTest : ReactiveTest [Fact] public void ToEvent_ArgumentChecks() { - ReactiveAssert.Throws(() => Observable.ToEvent(default(IObservable))); + ReactiveAssert.Throws(() => Observable.ToEvent(default)); ReactiveAssert.Throws(() => Observable.ToEvent(default(IObservable))); ReactiveAssert.Throws(() => Observable.ToEvent(default(IObservable>))); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToListObservableTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToListObservableTest.cs index f1ee190275..474c7fd5f2 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToListObservableTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToListObservableTest.cs @@ -3,20 +3,11 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToListTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToListTest.cs index 55b81f495e..21601a2b68 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToListTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToListTest.cs @@ -5,15 +5,9 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToLookupTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToLookupTest.cs index 51541e66d8..abd00fb1d9 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToLookupTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToLookupTest.cs @@ -5,15 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; +using Xunit; namespace ReactiveTests.Tests { @@ -117,7 +112,7 @@ public void ToLookup_KeySelectorThrows() ); var res = scheduler.Start(() => - xs.ToLookup(x => { if (x < 4) return x * 2; throw ex; }, x => x * 4, EqualityComparer.Default) + xs.ToLookup(x => { if (x < 4) { return x * 2; } throw ex; }, x => x * 4, EqualityComparer.Default) ); res.Messages.AssertEqual( @@ -146,7 +141,7 @@ public void ToLookup_ElementSelectorThrows() ); var res = scheduler.Start(() => - xs.ToLookup(x => x * 2, x => { if (x < 4) return x * 4; throw ex; }, EqualityComparer.Default) + xs.ToLookup(x => x * 2, x => { if (x < 4) { return x * 4; } throw ex; }, EqualityComparer.Default) ); res.Messages.AssertEqual( @@ -220,7 +215,9 @@ public void ToLookup_Groups() g.AssertEqual(1, 3, 5, 7, 9); } else + { Assert.True(false, "Unknown group."); + } } } @@ -234,17 +231,27 @@ public void ToLookup_Groups_2() if (g.Key == "0") { var l = new List(); - foreach (int v in ((System.Collections.IEnumerable)g)) l.Add(v); + foreach (int v in ((System.Collections.IEnumerable)g)) + { + l.Add(v); + } + l.AssertEqual(2, 4, 6, 8, 10); } else if (g.Key == "1") { var l = new List(); - foreach (int v in ((System.Collections.IEnumerable)g)) l.Add(v); + foreach (int v in ((System.Collections.IEnumerable)g)) + { + l.Add(v); + } + l.AssertEqual(1, 3, 5, 7, 9); } else + { Assert.True(false, "Unknown group."); + } } } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToObservableTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToObservableTest.cs index c127ba5b19..8fc18132be 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToObservableTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ToObservableTest.cs @@ -5,17 +5,13 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Runtime.CompilerServices; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Runtime.CompilerServices; +using Xunit; namespace ReactiveTests.Tests { @@ -26,7 +22,7 @@ public class ToObservableTest : ReactiveTest public void EnumerableToObservable_ArgumentChecking() { ReactiveAssert.Throws(() => Observable.ToObservable((IEnumerable)null, DummyScheduler.Instance)); - ReactiveAssert.Throws(() => Observable.ToObservable(DummyEnumerable.Instance, (IScheduler)null)); + ReactiveAssert.Throws(() => Observable.ToObservable(DummyEnumerable.Instance, null)); ReactiveAssert.Throws(() => Observable.ToObservable(DummyEnumerable.Instance, DummyScheduler.Instance).Subscribe(null)); ReactiveAssert.Throws(() => Observable.ToObservable(NullEnumeratorEnumerable.Instance, Scheduler.CurrentThread).Subscribe()); } @@ -161,7 +157,9 @@ public void EnumerableToObservable_LongRunning_Dispose() start.WaitOne(); while (lst.Count < 100) + { ; + } d.Dispose(); end.WaitOne(); @@ -193,7 +191,7 @@ public void EnumerableToObservable_LongRunning_Error() } #endif - static IEnumerable EnumerableToObservable_Error_Core(Exception ex) + private static IEnumerable EnumerableToObservable_Error_Core(Exception ex) { yield return 1; yield return 2; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/UsingAsyncTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/UsingAsyncTest.cs index 031073ac8c..bcb13e01c5 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/UsingAsyncTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/UsingAsyncTest.cs @@ -5,18 +5,12 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; +using System.Threading; +using System.Threading.Tasks; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; namespace ReactiveTests.Tests { @@ -50,7 +44,7 @@ public void UsingAsync_Simple() public void UsingAsync_CancelResource() { var N = 10;// 0000; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var called = false; @@ -64,7 +58,10 @@ public void UsingAsync_CancelResource() s.Set(); e.WaitOne(); while (!ct.IsCancellationRequested) + { ; + } + x.Set(); return Disposable.Empty; }), @@ -93,7 +90,7 @@ public void UsingAsync_CancelResource() public void UsingAsync_CancelFactory() { var N = 10;// 0000; - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { var gate = new object(); var disposed = false; @@ -108,7 +105,9 @@ public void UsingAsync_CancelFactory() Disposable.Create(() => { lock (gate) + { disposed = true; + } }) ), (_, ct) => Task.Factory.StartNew>(() => @@ -116,7 +115,10 @@ public void UsingAsync_CancelFactory() s.Set(); e.WaitOne(); while (!ct.IsCancellationRequested) + { ; + } + x.Set(); return Observable.Defer(() => { @@ -143,8 +145,12 @@ public void UsingAsync_CancelFactory() while (true) { lock (gate) + { if (disposed) + { break; + } + } } Assert.False(called, i.ToString()); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/UsingTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/UsingTest.cs index 772ab7aa78..271effdedb 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/UsingTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/UsingTest.cs @@ -3,20 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -26,7 +16,7 @@ public class UsingTest : ReactiveTest [Fact] public void Using_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.Using((Func)null, DummyFunc>.Instance)); + ReactiveAssert.Throws(() => Observable.Using(null, DummyFunc>.Instance)); ReactiveAssert.Throws(() => Observable.Using(DummyFunc.Instance, (Func>)null)); ReactiveAssert.Throws(() => Observable.Using(() => DummyDisposable.Instance, d => default(IObservable)).Subscribe()); ReactiveAssert.Throws(() => Observable.Using(() => DummyDisposable.Instance, d => DummyObservable.Instance).Subscribe(null)); @@ -48,7 +38,7 @@ public void Using_Null() () => { disposeInvoked++; - disposable = default(MockDisposable); + disposable = default; return disposable; }, d => diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WaitTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WaitTest.cs index 3bc208878c..1c6faba850 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WaitTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WaitTest.cs @@ -3,17 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; namespace ReactiveTests.Tests { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhenTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhenTest.cs index bd28cd49cb..564bd9196c 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhenTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhenTest.cs @@ -5,19 +5,10 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; +using System.Reactive.Joins; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Xunit; -using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; -using System.Reactive.Joins; namespace ReactiveTests.Tests { @@ -27,7 +18,7 @@ public class WhenTest : ReactiveTest [Fact] public void When_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.When((Plan[])null)); + ReactiveAssert.Throws(() => Observable.When(null)); ReactiveAssert.Throws(() => Observable.When((IEnumerable>)null)); } @@ -218,7 +209,9 @@ public void When_PlansIteratorThrows() private IEnumerable> GetPlans(Exception ex) { if (ex != null) + { throw ex; + } yield break; } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhereTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhereTest.cs index 3b028e63e8..20ce973ced 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhereTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhereTest.cs @@ -3,20 +3,13 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; +using System.Reactive.Disposables; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -31,15 +24,21 @@ public void Where_ArgumentChecking() ReactiveAssert.Throws(() => DummyObservable.Instance.Where(DummyFunc.Instance).Subscribe(null)); } - static bool IsPrime(int i) + private static bool IsPrime(int i) { if (i <= 1) + { return false; + } var max = (int)Math.Sqrt(i); for (var j = 2; j <= max; ++j) + { if (i % j == 0) + { return false; + } + } return true; } @@ -308,7 +307,10 @@ public void Where_Throw() { invoked++; if (x > 5) + { throw ex; + } + return IsPrime(x); }) ); @@ -360,7 +362,10 @@ public void Where_DisposeInPredicate() { invoked++; if (x == 8) + { d.Dispose(); + } + return IsPrime(x); })); @@ -440,7 +445,9 @@ public void WhereWhereOptimization_SecondPredicateThrows() xs.Where(x => x > 3).Where(x => { if (x <= 3) + { throw new Exception(); + } return x % 2 == 0; }) @@ -721,7 +728,10 @@ public void WhereIndex_Throw() { invoked++; if (x > 5) + { throw ex; + } + return IsPrime(x + i * 10); }) ); @@ -773,7 +783,10 @@ public void WhereIndex_DisposeInPredicate() { invoked++; if (x == 8) + { d.Dispose(); + } + return IsPrime(x + i * 10); })); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhileTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhileTest.cs index e65d48eefb..acb49b7af8 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhileTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WhileTest.cs @@ -3,20 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -26,7 +16,7 @@ public class WhileTest : ReactiveTest [Fact] public void While_ArgumentChecking() { - ReactiveAssert.Throws(() => Observable.While(default(Func), DummyObservable.Instance)); + ReactiveAssert.Throws(() => Observable.While(default, DummyObservable.Instance)); ReactiveAssert.Throws(() => Observable.While(DummyFunc.Instance, default(IObservable))); } @@ -146,7 +136,7 @@ public void While_SometimesTrue() OnCompleted(250) ); - int n = 0; + var n = 0; var results = scheduler.Start(() => Observable.While(() => ++n < 3, xs)); @@ -168,7 +158,7 @@ public void While_SometimesTrue() ); } - static T Throw(Exception ex) + private static T Throw(Exception ex) { throw ex; } @@ -186,7 +176,7 @@ public void While_SometimesThrows() OnCompleted(250) ); - int n = 0; + var n = 0; var ex = new Exception(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WindowTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WindowTest.cs index 8fadea4ded..1904cb5aa8 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WindowTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WindowTest.cs @@ -5,18 +5,11 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -30,7 +23,7 @@ public void Window_ArgumentChecking() ReactiveAssert.Throws(() => Observable.Window(default(IObservable), DummyFunc>.Instance)); ReactiveAssert.Throws(() => Observable.Window(DummyObservable.Instance, default(Func>))); ReactiveAssert.Throws(() => Observable.Window(default(IObservable), DummyObservable.Instance, DummyFunc>.Instance)); - ReactiveAssert.Throws(() => Observable.Window(DummyObservable.Instance, default(IObservable), DummyFunc>.Instance)); + ReactiveAssert.Throws(() => Observable.Window(DummyObservable.Instance, default, DummyFunc>.Instance)); ReactiveAssert.Throws(() => Observable.Window(DummyObservable.Instance, DummyObservable.Instance, default(Func>))); ReactiveAssert.Throws(() => Observable.Window(default(IObservable), DummyObservable.Instance)); ReactiveAssert.Throws(() => Observable.Window(DummyObservable.Instance, default(IObservable))); @@ -1095,7 +1088,9 @@ public void WindowWithCount_InnerTimings_DisposeOuterAndInners() { outerSubscription.Dispose(); foreach (var d in innerSubscriptions) + { d.Dispose(); + } }); scheduler.Start(); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WithLatestFromTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WithLatestFromTest.cs index bd5697427b..1074a9ab1c 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WithLatestFromTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/WithLatestFromTest.cs @@ -3,20 +3,10 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { @@ -30,7 +20,7 @@ public void WithLatestFrom_ArgumentChecking() ReactiveAssert.Throws(() => Observable.WithLatestFrom(someObservable, someObservable, null)); ReactiveAssert.Throws(() => Observable.WithLatestFrom(null, someObservable, (_, __) => 0)); - ReactiveAssert.Throws(() => Observable.WithLatestFrom(someObservable, default(IObservable), (_, __) => 0)); + ReactiveAssert.Throws(() => Observable.WithLatestFrom(someObservable, default, (_, __) => 0)); } [Fact] @@ -294,7 +284,9 @@ public void WithLatestFrom_Error3() xs.WithLatestFrom(ys, (x, y) => { if (x == 5) + { throw ex; + } return x + y; }) diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ZipTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ZipTest.cs index fb25b6acbf..5be27124a5 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ZipTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Observable/ZipTest.cs @@ -5,21 +5,16 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Reactive; -using System.Reactive.Concurrency; using System.Reactive.Linq; +using System.Threading; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; -using System.Reflection; -using System.Threading; -using System.Reactive.Disposables; -using System.Reactive.Subjects; +using Xunit; namespace ReactiveTests.Tests { +#pragma warning disable IDE0039 // Use local function public class ZipTest : ReactiveTest { @@ -216,7 +211,9 @@ public void Zip_Never2() ); foreach (var e in new[] { e0, e1 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -236,7 +233,9 @@ public void Zip_Never3() ); foreach (var e in new[] { e0, e1, e2 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -257,7 +256,9 @@ public void Zip_Never4() ); foreach (var e in new[] { e0, e1, e2, e3 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -279,7 +280,9 @@ public void Zip_Never5() ); foreach (var e in new[] { e0, e1, e2, e3, e4 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -302,7 +305,9 @@ public void Zip_Never6() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -326,7 +331,9 @@ public void Zip_Never7() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -351,7 +358,9 @@ public void Zip_Never8() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -377,7 +386,9 @@ public void Zip_Never9() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -404,7 +415,9 @@ public void Zip_Never10() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -432,7 +445,9 @@ public void Zip_Never11() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -461,7 +476,9 @@ public void Zip_Never12() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -491,7 +508,9 @@ public void Zip_Never13() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -522,7 +541,9 @@ public void Zip_Never14() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -554,7 +575,9 @@ public void Zip_Never15() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } [Fact] @@ -587,7 +610,9 @@ public void Zip_Never16() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 1000)); + } } #endregion @@ -708,7 +733,9 @@ public void Zip_Empty2() var i = 0; foreach (var e in new[] { e0, e1 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -730,7 +757,9 @@ public void Zip_Empty3() var i = 0; foreach (var e in new[] { e0, e1, e2 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -753,7 +782,9 @@ public void Zip_Empty4() var i = 0; foreach (var e in new[] { e0, e1, e2, e3 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -777,7 +808,9 @@ public void Zip_Empty5() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -802,7 +835,9 @@ public void Zip_Empty6() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -828,7 +863,9 @@ public void Zip_Empty7() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -855,7 +892,9 @@ public void Zip_Empty8() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -883,7 +922,9 @@ public void Zip_Empty9() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -912,7 +953,9 @@ public void Zip_Empty10() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -942,7 +985,9 @@ public void Zip_Empty11() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -973,7 +1018,9 @@ public void Zip_Empty12() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -1005,7 +1052,9 @@ public void Zip_Empty13() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -1038,7 +1087,9 @@ public void Zip_Empty14() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -1072,7 +1123,9 @@ public void Zip_Empty15() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } [Fact] @@ -1107,7 +1160,9 @@ public void Zip_Empty16() var i = 0; foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + (++i * 10))); + } } #endregion @@ -1632,7 +1687,7 @@ public void Zip_LeftTriggersSelectorError() ); var res = scheduler.Start(() => - o.Zip(e, (x, y) => { if (x == y) return 42; throw ex; }) + o.Zip(e, (x, y) => { if (x == y) { return 42; } throw ex; }) ); res.Messages.AssertEqual( @@ -1666,7 +1721,7 @@ public void Zip_RightTriggersSelectorError() ); var res = scheduler.Start(() => - o.Zip(e, (x, y) => { if (x == y) return 42; throw ex; }) + o.Zip(e, (x, y) => { if (x == y) { return 42; } throw ex; }) ); res.Messages.AssertEqual( @@ -1704,7 +1759,9 @@ public void Zip_SymmetricReturn2() ); foreach (var e in new[] { e0, e1 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -1726,7 +1783,9 @@ public void Zip_SymmetricReturn3() ); foreach (var e in new[] { e0, e1, e2 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -1749,7 +1808,9 @@ public void Zip_SymmetricReturn4() ); foreach (var e in new[] { e0, e1, e2, e3 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -1773,7 +1834,9 @@ public void Zip_SymmetricReturn5() ); foreach (var e in new[] { e0, e1, e2, e3, e4 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -1798,7 +1861,9 @@ public void Zip_SymmetricReturn6() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -1824,7 +1889,9 @@ public void Zip_SymmetricReturn7() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -1851,7 +1918,9 @@ public void Zip_SymmetricReturn8() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -1879,7 +1948,9 @@ public void Zip_SymmetricReturn9() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -1908,7 +1979,9 @@ public void Zip_SymmetricReturn10() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -1938,7 +2011,9 @@ public void Zip_SymmetricReturn11() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -1969,7 +2044,9 @@ public void Zip_SymmetricReturn12() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -2001,7 +2078,9 @@ public void Zip_SymmetricReturn13() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -2034,7 +2113,9 @@ public void Zip_SymmetricReturn14() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -2068,7 +2149,9 @@ public void Zip_SymmetricReturn15() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } [Fact] @@ -2103,7 +2186,9 @@ public void Zip_SymmetricReturn16() ); foreach (var e in new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 }) + { e.Subscriptions.AssertEqual(Subscribe(200, 400)); + } } #endregion @@ -2118,7 +2203,7 @@ public void Zip_SomeDataAsymmetric1() var msgs1 = Enumerable.Range(0, 5).Select((x, i) => OnNext((ushort)(205 + i * 5), x)).ToArray(); var msgs2 = Enumerable.Range(0, 10).Select((x, i) => OnNext((ushort)(202 + i * 8), x)).ToArray(); - int len = Math.Min(msgs1.Length, msgs2.Length); + var len = Math.Min(msgs1.Length, msgs2.Length); var o1 = scheduler.CreateHotObservable(msgs1); var o2 = scheduler.CreateHotObservable(msgs2); @@ -2128,7 +2213,7 @@ public void Zip_SomeDataAsymmetric1() ); Assert.True(len == res.Messages.Count, "length"); - for (int i = 0; i < len; i++) + for (var i = 0; i < len; i++) { var sum = msgs1[i].Value.Value + msgs2[i].Value.Value; var time = Math.Max(msgs1[i].Time, msgs2[i].Time); @@ -2147,7 +2232,7 @@ public void Zip_SomeDataAsymmetric2() var msgs1 = Enumerable.Range(0, 10).Select((x, i) => OnNext((ushort)(205 + i * 5), x)).ToArray(); var msgs2 = Enumerable.Range(0, 5).Select((x, i) => OnNext((ushort)(202 + i * 8), x)).ToArray(); - int len = Math.Min(msgs1.Length, msgs2.Length); + var len = Math.Min(msgs1.Length, msgs2.Length); var o1 = scheduler.CreateHotObservable(msgs1); var o2 = scheduler.CreateHotObservable(msgs2); @@ -2157,7 +2242,7 @@ public void Zip_SomeDataAsymmetric2() ); Assert.True(len == res.Messages.Count, "length"); - for (int i = 0; i < len; i++) + for (var i = 0; i < len; i++) { var sum = msgs1[i].Value.Value + msgs2[i].Value.Value; var time = Math.Max(msgs1[i].Time, msgs2[i].Time); @@ -2176,7 +2261,7 @@ public void Zip_SomeDataSymmetric() var msgs1 = Enumerable.Range(0, 10).Select((x, i) => OnNext((ushort)(205 + i * 5), x)).ToArray(); var msgs2 = Enumerable.Range(0, 10).Select((x, i) => OnNext((ushort)(202 + i * 8), x)).ToArray(); - int len = Math.Min(msgs1.Length, msgs2.Length); + var len = Math.Min(msgs1.Length, msgs2.Length); var o1 = scheduler.CreateHotObservable(msgs1); var o2 = scheduler.CreateHotObservable(msgs2); @@ -2186,7 +2271,7 @@ public void Zip_SomeDataSymmetric() ); Assert.True(len == res.Messages.Count, "length"); - for (int i = 0; i < len; i++) + for (var i = 0; i < len; i++) { var sum = msgs1[i].Value.Value + msgs2[i].Value.Value; var time = Math.Max(msgs1[i].Time, msgs2[i].Time); @@ -2226,7 +2311,10 @@ public void Zip_SelectorThrows() o1.Zip(o2, (x, y) => { if (y == 5) + { throw ex; + } + return x + y; }) ); @@ -2258,7 +2346,9 @@ public void Zip_SelectorThrows2() var es = new[] { e0, e1 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2283,7 +2373,9 @@ public void Zip_SelectorThrows3() var es = new[] { e0, e1, e2 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2309,7 +2401,9 @@ public void Zip_SelectorThrows4() var es = new[] { e0, e1, e2, e3 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2336,7 +2430,9 @@ public void Zip_SelectorThrows5() var es = new[] { e0, e1, e2, e3, e4 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2364,7 +2460,9 @@ public void Zip_SelectorThrows6() var es = new[] { e0, e1, e2, e3, e4, e5 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2393,7 +2491,9 @@ public void Zip_SelectorThrows7() var es = new[] { e0, e1, e2, e3, e4, e5, e6 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2423,7 +2523,9 @@ public void Zip_SelectorThrows8() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2454,7 +2556,9 @@ public void Zip_SelectorThrows9() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2486,7 +2590,9 @@ public void Zip_SelectorThrows10() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2519,7 +2625,9 @@ public void Zip_SelectorThrows11() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2553,7 +2661,9 @@ public void Zip_SelectorThrows12() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2588,7 +2698,9 @@ public void Zip_SelectorThrows13() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2624,7 +2736,9 @@ public void Zip_SelectorThrows14() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2661,7 +2775,9 @@ public void Zip_SelectorThrows15() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } [Fact] @@ -2699,7 +2815,9 @@ public void Zip_SelectorThrows16() var es = new[] { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 }; foreach (var e in es) + { e.Subscriptions.AssertEqual(Subscribe(200, 200 + es.Length * 10)); + } } #endregion @@ -2758,7 +2876,9 @@ public void Zip_AllCompleted2() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -2787,7 +2907,9 @@ public void Zip_AllCompleted3() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -2817,7 +2939,9 @@ public void Zip_AllCompleted4() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -2848,7 +2972,9 @@ public void Zip_AllCompleted5() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -2880,7 +3006,9 @@ public void Zip_AllCompleted6() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -2913,7 +3041,9 @@ public void Zip_AllCompleted7() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -2947,7 +3077,9 @@ public void Zip_AllCompleted8() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -2982,7 +3114,9 @@ public void Zip_AllCompleted9() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -3018,7 +3152,9 @@ public void Zip_AllCompleted10() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -3055,7 +3191,9 @@ public void Zip_AllCompleted11() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -3093,7 +3231,9 @@ public void Zip_AllCompleted12() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -3132,7 +3272,9 @@ public void Zip_AllCompleted13() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -3172,7 +3314,9 @@ public void Zip_AllCompleted14() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -3213,7 +3357,9 @@ public void Zip_AllCompleted15() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -3255,7 +3401,9 @@ public void Zip_AllCompleted16() var i = 0; foreach (var e in es.Take(es.Length - 1)) + { e.Subscriptions.AssertEqual(Subscribe(200, 220 + (i++ * 10))); + } es.Last().Subscriptions.AssertEqual( Subscribe(200, 220 + (i - 1) * 10) @@ -3884,7 +4032,10 @@ public void ZipWithEnumerable_SelectorThrows() o1.Zip(o2, (x, y) => { if (y == 5) + { throw ex; + } + return x + y; }) ); @@ -3912,14 +4063,17 @@ private IEnumerable EnumerableNever(ManualResetEvent evt) private IEnumerable ThrowEnumerable(bool b, Exception ex) { if (!b) + { throw ex; + } + yield break; } - class MyEnumerable : IEnumerable + private class MyEnumerable : IEnumerable { - private bool _throwInCurrent; - private Exception _ex; + private readonly bool _throwInCurrent; + private readonly Exception _ex; public MyEnumerable(bool throwInCurrent, Exception ex) { @@ -3937,10 +4091,10 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() return GetEnumerator(); } - class MyEnumerator : IEnumerator + private class MyEnumerator : IEnumerator { - private bool _throwInCurrent; - private Exception _ex; + private readonly bool _throwInCurrent; + private readonly Exception _ex; public MyEnumerator(bool throwInCurrent, Exception ex) { @@ -3953,9 +4107,13 @@ public int Current get { if (_throwInCurrent) + { throw _ex; + } else + { return 1; + } } } @@ -3971,7 +4129,10 @@ object System.Collections.IEnumerator.Current public bool MoveNext() { if (!_throwInCurrent) + { throw _ex; + } + return true; } @@ -4240,13 +4401,17 @@ private IEnumerable> GetSources(Action start, params IT start(); foreach (var xs in sources) + { yield return xs; + } } private IEnumerable> GetSources(Exception ex, params IObservable[] sources) { foreach (var xs in sources) + { yield return xs; + } throw ex; } @@ -4284,4 +4449,5 @@ public void Zip_AtLeastOneThrows4() #endregion } +#pragma warning restore IDE0039 // Use local function } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/ObservableRemotingTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/ObservableRemotingTest.cs index 0129edcea9..277cff1c57 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/ObservableRemotingTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/ObservableRemotingTest.cs @@ -14,7 +14,7 @@ namespace ReactiveTests.Tests { - + public partial class ObservableRemotingTest : ReactiveTest { [Fact] @@ -33,7 +33,7 @@ public void Remotable_ArgumentChecking() RemotingObservable.Remotable(Qbservable.Return(Qbservable.Provider, 42), null /* valid lease object */); } - class MyLease : ILease + private class MyLease : ILease { public TimeSpan CurrentLeaseTime { @@ -119,7 +119,7 @@ public void Remotable_Return() { var evt = new ManualResetEvent(false); - bool next = false; + var next = false; var e = GetRemoteObservable(t => t.Return(42)); using (e.Subscribe(value => { next = true; Assert.Equal(42, value); }, _ => { Assert.True(false); }, () => { evt.Set(); })) { @@ -133,7 +133,7 @@ public void Remotable_Return_LongLease() { var evt = new ManualResetEvent(false); - bool next = false; + var next = false; var e = GetRemoteObservable(t => t.ReturnLongLease(42)); using (e.Subscribe(value => { next = true; Assert.Equal(42, value); }, _ => { Assert.True(false); }, () => { evt.Set(); })) { @@ -149,7 +149,7 @@ public void Remotable_Throw() var evt = new ManualResetEvent(false); - bool error = false; + var error = false; var e = GetRemoteObservable(t => t.Throw(ex)); using (e.Subscribe(value => { Assert.True(false); }, err => { error = true; Assert.True(err is InvalidOperationException && err.Message == ex.Message); evt.Set(); }, () => { Assert.True(false); })) { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/ObservableSafetyTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/ObservableSafetyTest.cs index 8fa4b5b0ee..a5f99e2856 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/ObservableSafetyTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/ObservableSafetyTest.cs @@ -12,14 +12,14 @@ namespace ReactiveTests.Tests { - + public partial class ObservableSafetyTest : ReactiveTest { [Fact] public void SubscribeSafe_ArgumentChecking() { - ReactiveAssert.Throws(() => ObservableExtensions.SubscribeSafe(default(IObservable), Observer.Create(_ => { }))); - ReactiveAssert.Throws(() => ObservableExtensions.SubscribeSafe(Observable.Return(42), default(IObserver))); + ReactiveAssert.Throws(() => ObservableExtensions.SubscribeSafe(default, Observer.Create(_ => { }))); + ReactiveAssert.Throws(() => ObservableExtensions.SubscribeSafe(Observable.Return(42), default)); } [Fact] @@ -68,7 +68,7 @@ public void Safety_Subscription2() ); } - class RogueObservable : IObservable + private class RogueObservable : IObservable { private readonly Exception _ex; @@ -184,7 +184,9 @@ public void Producer_ObserverThrows() res.Subscribe(z => { if (z == 4) + { throw ex; + } }); }); @@ -256,7 +258,7 @@ public void Producer_ObserverThrows_CustomObserver() ); } - class MyObserver : ObserverBase + private class MyObserver : ObserverBase { private readonly Func _predicate; private readonly Exception _exception; @@ -270,7 +272,9 @@ public MyObserver(Func predicate, Exception exception) protected override void OnNextCore(int value) { if (_predicate(value)) + { throw _exception; + } } protected override void OnErrorCore(Exception error) diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/QbservableExTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/QbservableExTest.cs index 99c3817360..b96e0c4b4b 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/QbservableExTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/QbservableExTest.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Reactive.Linq; @@ -12,10 +11,10 @@ namespace ReactiveTests.Tests { - + public class QbservableExTest : ReactiveTest { - private IQbservable _qbNull = null; + private readonly IQbservable _qbNull = null; private IQbservable _qbMy = new MyQbservable(); private IQbservableProvider _qbp = new MyQbservableProvider(); @@ -25,9 +24,9 @@ public void ForkJoin_ArgumentNullChecks() ReactiveAssert.Throws(() => QbservableEx.ForkJoin(_qbNull, _qbMy, (a, b) => a + b)); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(_qbMy, _qbNull, (a, b) => a + b)); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(_qbMy, _qbMy, default(Expression>))); - ReactiveAssert.Throws(() => QbservableEx.ForkJoin(default(IQbservableProvider), _qbMy)); + ReactiveAssert.Throws(() => QbservableEx.ForkJoin(default, _qbMy)); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(_qbp, default(IQbservable[]))); - ReactiveAssert.Throws(() => QbservableEx.ForkJoin(default(IQbservableProvider), new MyQueryable>())); + ReactiveAssert.Throws(() => QbservableEx.ForkJoin(default, new MyQueryable>())); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(_qbp, default(IQueryable>))); } @@ -42,9 +41,9 @@ public void ForkJoin() [Fact] public void Create_ArgumentNullChecks() { - ReactiveAssert.Throws(() => QbservableEx.Create(default(IQbservableProvider), _ => new IObservable[0])); - ReactiveAssert.Throws(() => QbservableEx.Create(_qbp, default(Expression, IEnumerable>>>))); - ReactiveAssert.Throws(() => QbservableEx.Create(default(IQbservableProvider), () => new IObservable[0])); + ReactiveAssert.Throws(() => QbservableEx.Create(default, _ => new IObservable[0])); + ReactiveAssert.Throws(() => QbservableEx.Create(_qbp, default)); + ReactiveAssert.Throws(() => QbservableEx.Create(default, () => new IObservable[0])); ReactiveAssert.Throws(() => QbservableEx.Create(_qbp, null)); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/QbservableTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/QbservableTest.cs index cbaa55b6c8..72bc5ed948 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/QbservableTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/QbservableTest.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Linq.Expressions; using System.Reactive; @@ -15,16 +16,15 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Threading; -using Xunit; using Microsoft.Reactive.Testing; -using System.Diagnostics; +using Xunit; namespace ReactiveTests.Tests { - + public class QbservableTest { - private IQbservable _qbNull = null; + private readonly IQbservable _qbNull = null; private IQbservable _qbMy = new MyQbservable(); private IQbservableProvider _qbp = new MyQbservableProvider(); @@ -74,7 +74,7 @@ public void Amb_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.Amb(_qbMy, _qbNull)); ReactiveAssert.Throws(() => Qbservable.Amb(default(IQbservableProvider), _qbMy)); ReactiveAssert.Throws(() => Qbservable.Amb(_qbp, default(IQbservable[]))); - ReactiveAssert.Throws(() => Qbservable.Amb(default(IQbservableProvider), new MyQueryable>())); + ReactiveAssert.Throws(() => Qbservable.Amb(default, new MyQueryable>())); ReactiveAssert.Throws(() => Qbservable.Amb(_qbp, default(IQueryable>))); } @@ -180,7 +180,7 @@ public void BufferWithTime_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.Buffer(_qbMy, TimeSpan.Zero, default(IScheduler))); ReactiveAssert.Throws(() => Qbservable.Buffer(_qbNull, TimeSpan.Zero, TimeSpan.Zero)); ReactiveAssert.Throws(() => Qbservable.Buffer(_qbNull, TimeSpan.Zero, TimeSpan.Zero, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Buffer(_qbMy, TimeSpan.Zero, TimeSpan.Zero, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Buffer(_qbMy, TimeSpan.Zero, TimeSpan.Zero, default)); } [Fact] @@ -196,16 +196,16 @@ public void BufferWithTime() public void Case_ArgumentNullChecks() { ReactiveAssert.Throws(() => Qbservable.Case(null, () => 1, new Dictionary>())); - ReactiveAssert.Throws(() => Qbservable.Case(_qbp, default(Expression>), new Dictionary>())); + ReactiveAssert.Throws(() => Qbservable.Case(_qbp, default, new Dictionary>())); ReactiveAssert.Throws(() => Qbservable.Case(_qbp, () => 1, default(Dictionary>))); ReactiveAssert.Throws(() => Qbservable.Case(null, () => 1, new Dictionary>(), Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Case(_qbp, default(Expression>), new Dictionary>(), Scheduler.Immediate)); + ReactiveAssert.Throws(() => Qbservable.Case(_qbp, default, new Dictionary>(), Scheduler.Immediate)); ReactiveAssert.Throws(() => Qbservable.Case(_qbp, () => 1, default(Dictionary>), Scheduler.Immediate)); ReactiveAssert.Throws(() => Qbservable.Case(_qbp, () => 1, new Dictionary>(), default(IScheduler))); ReactiveAssert.Throws(() => Qbservable.Case(null, () => 1, new Dictionary>(), _qbMy)); - ReactiveAssert.Throws(() => Qbservable.Case(_qbp, default(Expression>), new Dictionary>(), _qbMy)); + ReactiveAssert.Throws(() => Qbservable.Case(_qbp, default, new Dictionary>(), _qbMy)); ReactiveAssert.Throws(() => Qbservable.Case(_qbp, () => 1, default(Dictionary>), _qbMy)); ReactiveAssert.Throws(() => Qbservable.Case(_qbp, () => 1, new Dictionary>(), default(IQbservable))); } @@ -239,7 +239,7 @@ public void Catch_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.Catch(_qbNull, _qbMy)); ReactiveAssert.Throws(() => Qbservable.Catch(default(IQbservableProvider), _qbMy)); ReactiveAssert.Throws(() => Qbservable.Catch(_qbp, default(IQbservable[]))); - ReactiveAssert.Throws(() => Qbservable.Catch(default(IQbservableProvider), new MyQueryable>())); + ReactiveAssert.Throws(() => Qbservable.Catch(default, new MyQueryable>())); ReactiveAssert.Throws(() => Qbservable.Catch(_qbp, default(IQueryable>))); } @@ -300,7 +300,7 @@ public void Concat_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.Concat(_qbMy, _qbNull)); ReactiveAssert.Throws(() => Qbservable.Concat(default(IQbservableProvider), _qbMy)); ReactiveAssert.Throws(() => Qbservable.Concat(_qbp, default(IQbservable[]))); - ReactiveAssert.Throws(() => Qbservable.Concat(default(IQbservableProvider), new MyQueryable>())); + ReactiveAssert.Throws(() => Qbservable.Concat(default, new MyQueryable>())); ReactiveAssert.Throws(() => Qbservable.Concat(_qbp, default(IQueryable>))); } @@ -356,10 +356,10 @@ public void Delay_ArgumentNullChecks() { ReactiveAssert.Throws(() => Qbservable.Delay(_qbNull, DateTimeOffset.Now)); ReactiveAssert.Throws(() => Qbservable.Delay(_qbNull, DateTimeOffset.Now, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Delay(_qbMy, DateTimeOffset.Now, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Delay(_qbMy, DateTimeOffset.Now, default)); ReactiveAssert.Throws(() => Qbservable.Delay(_qbNull, TimeSpan.Zero)); ReactiveAssert.Throws(() => Qbservable.Delay(_qbNull, TimeSpan.Zero, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Delay(_qbMy, TimeSpan.Zero, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Delay(_qbMy, TimeSpan.Zero, default)); } [Fact] @@ -390,10 +390,10 @@ public void DistinctUntilChanged_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.DistinctUntilChanged(_qbNull, a => a)); ReactiveAssert.Throws(() => Qbservable.DistinctUntilChanged(_qbMy, default(Expression>))); ReactiveAssert.Throws(() => Qbservable.DistinctUntilChanged(_qbNull, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Qbservable.DistinctUntilChanged(_qbMy, default(IEqualityComparer))); + ReactiveAssert.Throws(() => Qbservable.DistinctUntilChanged(_qbMy, default)); ReactiveAssert.Throws(() => Qbservable.DistinctUntilChanged(_qbNull, a => a, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Qbservable.DistinctUntilChanged(_qbMy, default(Expression>), EqualityComparer.Default)); - ReactiveAssert.Throws(() => Qbservable.DistinctUntilChanged(_qbMy, a => a, default(IEqualityComparer))); + ReactiveAssert.Throws(() => Qbservable.DistinctUntilChanged(_qbMy, default, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Qbservable.DistinctUntilChanged(_qbMy, a => a, default)); } [Fact] @@ -412,17 +412,17 @@ public void Do_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, default(Expression>))); ReactiveAssert.Throws(() => Qbservable.Do(_qbNull, i => Debug.WriteLine(i), ex => Debug.WriteLine(ex.Message))); - ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, default(Expression>), ex => Debug.WriteLine(ex.Message))); + ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, default, ex => Debug.WriteLine(ex.Message))); ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, i => Debug.WriteLine(i), default(Expression>))); ReactiveAssert.Throws(() => Qbservable.Do(_qbNull, i => Debug.WriteLine(i), () => Debug.WriteLine(""))); - ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, default(Expression>), () => Debug.WriteLine(""))); + ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, default, () => Debug.WriteLine(""))); ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, i => Debug.WriteLine(i), default(Expression))); ReactiveAssert.Throws(() => Qbservable.Do(_qbNull, i => Debug.WriteLine(i), ex => Debug.WriteLine(ex.Message), () => Debug.WriteLine(""))); - ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, default(Expression>), ex => Debug.WriteLine(ex.Message), () => Debug.WriteLine(""))); - ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, i => Debug.WriteLine(i), default(Expression>), () => Debug.WriteLine(""))); - ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, i => Debug.WriteLine(i), ex => Debug.WriteLine(ex.Message), default(Expression))); + ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, default, ex => Debug.WriteLine(ex.Message), () => Debug.WriteLine(""))); + ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, i => Debug.WriteLine(i), default, () => Debug.WriteLine(""))); + ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, i => Debug.WriteLine(i), ex => Debug.WriteLine(ex.Message), default)); ReactiveAssert.Throws(() => Qbservable.Do(_qbNull, Observer.Create(i => Debug.WriteLine(i)))); ReactiveAssert.Throws(() => Qbservable.Do(_qbMy, default(IObserver))); @@ -506,8 +506,8 @@ public void FromEvent_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.FromEventPattern(_qbp, null, e => Debug.WriteLine(""), e => Debug.WriteLine(""))); ReactiveAssert.Throws(() => Qbservable.FromEventPattern(_qbp, e => () => Debug.WriteLine(""), null, e => Debug.WriteLine(""))); ReactiveAssert.Throws(() => Qbservable.FromEventPattern(_qbp, e => () => Debug.WriteLine(""), e => Debug.WriteLine(""), null)); - ReactiveAssert.Throws(() => Qbservable.FromEventPattern(_qbp, default(Expression>), e => Debug.WriteLine(""))); - ReactiveAssert.Throws(() => Qbservable.FromEventPattern(_qbp, e => Debug.WriteLine(""), default(Expression>))); + ReactiveAssert.Throws(() => Qbservable.FromEventPattern(_qbp, default, e => Debug.WriteLine(""))); + ReactiveAssert.Throws(() => Qbservable.FromEventPattern(_qbp, e => Debug.WriteLine(""), default)); ReactiveAssert.Throws(() => Qbservable.FromEventPattern(null, e => Debug.WriteLine(""), e => Debug.WriteLine(""))); } @@ -584,13 +584,13 @@ public void GroupBy_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbNull, x => x)); ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbMy, default(Expression>))); ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbNull, x => x, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbMy, default(Expression>), EqualityComparer.Default)); + ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbMy, default, EqualityComparer.Default)); ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbMy, x => x, default(IEqualityComparer))); ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbNull, x => x, x => x)); ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbMy, default(Expression>), x => x)); ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbMy, x => x, default(Expression>))); ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbNull, x => x, x => x, EqualityComparer.Default)); - ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbMy, default(Expression>), x => x, EqualityComparer.Default)); + ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbMy, default, x => x, EqualityComparer.Default)); ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbMy, x => x, default(Expression>), EqualityComparer.Default)); ReactiveAssert.Throws(() => Qbservable.GroupBy(_qbMy, x => x, x => x, default(IEqualityComparer))); } @@ -599,9 +599,9 @@ public void GroupBy_ArgumentNullChecks() public void GroupBy() { _qbMy.GroupBy(x => (double)x); - _qbMy.GroupBy(x => (double)x, EqualityComparer.Default); + _qbMy.GroupBy(x => x, EqualityComparer.Default); _qbMy.GroupBy(x => (double)x, x => x.ToString()); - _qbMy.GroupBy(x => (double)x, x => x.ToString(), EqualityComparer.Default); + _qbMy.GroupBy(x => x, x => x.ToString(), EqualityComparer.Default); } [Fact] @@ -624,7 +624,7 @@ public void Interval_ArgumentNullChecks() { ReactiveAssert.Throws(() => Qbservable.Interval(null, TimeSpan.Zero)); ReactiveAssert.Throws(() => Qbservable.Interval(null, TimeSpan.Zero, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Interval(_qbp, TimeSpan.Zero, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Interval(_qbp, TimeSpan.Zero, default)); } [Fact] @@ -724,8 +724,8 @@ public void MaxBy_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.MaxBy(default(IQbservable), s => s.Length)); ReactiveAssert.Throws(() => Qbservable.MaxBy(new MyQbservable(), default(Expression>))); ReactiveAssert.Throws(() => Qbservable.MaxBy(default(IQbservable), s => s.Length, Comparer.Default)); - ReactiveAssert.Throws(() => Qbservable.MaxBy(new MyQbservable(), default(Expression>), Comparer.Default)); - ReactiveAssert.Throws(() => Qbservable.MaxBy(new MyQbservable(), s => s.Length, default(IComparer))); + ReactiveAssert.Throws(() => Qbservable.MaxBy(new MyQbservable(), default, Comparer.Default)); + ReactiveAssert.Throws(() => Qbservable.MaxBy(new MyQbservable(), s => s.Length, default)); } [Fact] @@ -742,16 +742,16 @@ public void Merge_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.Merge(_qbMy, _qbNull)); ReactiveAssert.Throws(() => Qbservable.Merge(_qbNull, _qbMy, Scheduler.Immediate)); ReactiveAssert.Throws(() => Qbservable.Merge(_qbMy, _qbNull, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Merge(_qbMy, _qbMy, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Merge(_qbMy, _qbMy, default)); ReactiveAssert.Throws(() => Qbservable.Merge(default(IQbservable>))); ReactiveAssert.Throws(() => Qbservable.Merge(default(IQbservableProvider), _qbMy)); ReactiveAssert.Throws(() => Qbservable.Merge(_qbp, default(IQbservable[]))); - ReactiveAssert.Throws(() => Qbservable.Merge(default(IQbservableProvider), Scheduler.Immediate, _qbMy)); + ReactiveAssert.Throws(() => Qbservable.Merge(default, Scheduler.Immediate, _qbMy)); ReactiveAssert.Throws(() => Qbservable.Merge(_qbp, default(IScheduler), _qbMy)); ReactiveAssert.Throws(() => Qbservable.Merge(_qbp, Scheduler.Immediate, default(IQbservable[]))); - ReactiveAssert.Throws(() => Qbservable.Merge(default(IQbservableProvider), new MyQueryable>())); + ReactiveAssert.Throws(() => Qbservable.Merge(default, new MyQueryable>())); ReactiveAssert.Throws(() => Qbservable.Merge(_qbp, default(IQueryable>))); - ReactiveAssert.Throws(() => Qbservable.Merge(default(IQbservableProvider), new MyQueryable>(), Scheduler.Immediate)); + ReactiveAssert.Throws(() => Qbservable.Merge(default, new MyQueryable>(), Scheduler.Immediate)); ReactiveAssert.Throws(() => Qbservable.Merge(_qbp, new MyQueryable>(), default(IScheduler))); ReactiveAssert.Throws(() => Qbservable.Merge(_qbp, default(IQueryable>), Scheduler.Immediate)); } @@ -809,8 +809,8 @@ public void MinBy_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.MinBy(default(IQbservable), s => s.Length)); ReactiveAssert.Throws(() => Qbservable.MinBy(new MyQbservable(), default(Expression>))); ReactiveAssert.Throws(() => Qbservable.MinBy(default(IQbservable), s => s.Length, Comparer.Default)); - ReactiveAssert.Throws(() => Qbservable.MinBy(new MyQbservable(), default(Expression>), Comparer.Default)); - ReactiveAssert.Throws(() => Qbservable.MinBy(new MyQbservable(), s => s.Length, default(IComparer))); + ReactiveAssert.Throws(() => Qbservable.MinBy(new MyQbservable(), default, Comparer.Default)); + ReactiveAssert.Throws(() => Qbservable.MinBy(new MyQbservable(), s => s.Length, default)); } [Fact] @@ -906,7 +906,7 @@ public void OnErrorResumeNext_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.OnErrorResumeNext(_qbMy, _qbNull)); ReactiveAssert.Throws(() => Qbservable.OnErrorResumeNext(default(IQbservableProvider), _qbMy)); ReactiveAssert.Throws(() => Qbservable.OnErrorResumeNext(_qbp, default(IQbservable[]))); - ReactiveAssert.Throws(() => Qbservable.OnErrorResumeNext(default(IQbservableProvider), new MyQueryable>())); + ReactiveAssert.Throws(() => Qbservable.OnErrorResumeNext(default, new MyQueryable>())); ReactiveAssert.Throws(() => Qbservable.OnErrorResumeNext(_qbp, default(IQueryable>))); } @@ -924,7 +924,7 @@ public void Range_ArgumentNullChecks() { ReactiveAssert.Throws(() => Qbservable.Range(null, 0, 10)); ReactiveAssert.Throws(() => Qbservable.Range(null, 0, 10, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Range(_qbp, 0, 10, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Range(_qbp, 0, 10, default)); } [Fact] @@ -955,7 +955,7 @@ public void Repeat_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.Repeat(_qbp, 0, default(IScheduler))); ReactiveAssert.Throws(() => Qbservable.Repeat(null, 0, 10)); ReactiveAssert.Throws(() => Qbservable.Repeat(null, 0, 10, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Repeat(_qbp, 0, 10, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Repeat(_qbp, 0, 10, default)); ReactiveAssert.Throws(() => Qbservable.Repeat(_qbNull)); ReactiveAssert.Throws(() => Qbservable.Repeat(_qbNull, 1)); } @@ -989,7 +989,7 @@ public void Return_ArgumentNullChecks() { ReactiveAssert.Throws(() => Qbservable.Return(null, 1)); ReactiveAssert.Throws(() => Qbservable.Return(null, 1, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Return(_qbp, 1, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Return(_qbp, 1, default)); } [Fact] @@ -1004,7 +1004,7 @@ public void Sample_ArgumentNullChecks() { ReactiveAssert.Throws(() => Qbservable.Sample(_qbNull, TimeSpan.Zero)); ReactiveAssert.Throws(() => Qbservable.Sample(_qbNull, TimeSpan.Zero, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Sample(_qbMy, TimeSpan.Zero, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Sample(_qbMy, TimeSpan.Zero, default)); } [Fact] @@ -1064,8 +1064,8 @@ public void SelectMany_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.SelectMany(_qbNull, x => Observable.Return(""), x => Observable.Return(""), () => Observable.Return(""))); ReactiveAssert.Throws(() => Qbservable.SelectMany(_qbMy, default(Expression>>), x => Observable.Return(""), () => Observable.Return(""))); - ReactiveAssert.Throws(() => Qbservable.SelectMany(_qbMy, x => Observable.Return(""), default(Expression>>), () => Observable.Return(""))); - ReactiveAssert.Throws(() => Qbservable.SelectMany(_qbMy, x => Observable.Return(""), x => Observable.Return(""), default(Expression>>))); + ReactiveAssert.Throws(() => Qbservable.SelectMany(_qbMy, x => Observable.Return(""), default, () => Observable.Return(""))); + ReactiveAssert.Throws(() => Qbservable.SelectMany(_qbMy, x => Observable.Return(""), x => Observable.Return(""), default)); } [Fact] @@ -1134,8 +1134,8 @@ public void StartWith_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.StartWith(_qbNull, new[] { 1 })); ReactiveAssert.Throws(() => Qbservable.StartWith(_qbMy, default(int[]))); ReactiveAssert.Throws(() => Qbservable.StartWith(_qbNull, Scheduler.Immediate, new[] { 1 })); - ReactiveAssert.Throws(() => Qbservable.StartWith(_qbMy, default(IScheduler), new[] { 1 })); - ReactiveAssert.Throws(() => Qbservable.StartWith(_qbMy, Scheduler.Immediate, default(int[]))); + ReactiveAssert.Throws(() => Qbservable.StartWith(_qbMy, default, new[] { 1 })); + ReactiveAssert.Throws(() => Qbservable.StartWith(_qbMy, Scheduler.Immediate, default)); } [Fact] @@ -1289,7 +1289,7 @@ public void Throttle_ArgumentNullChecks() { ReactiveAssert.Throws(() => Qbservable.Throttle(_qbNull, TimeSpan.Zero)); ReactiveAssert.Throws(() => Qbservable.Throttle(_qbNull, TimeSpan.Zero, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Throttle(_qbMy, TimeSpan.Zero, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Throttle(_qbMy, TimeSpan.Zero, default)); } [Fact] @@ -1321,7 +1321,7 @@ public void TimeInterval_ArgumentNullChecks() { ReactiveAssert.Throws(() => Qbservable.TimeInterval(_qbNull)); ReactiveAssert.Throws(() => Qbservable.TimeInterval(_qbNull, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.TimeInterval(_qbMy, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.TimeInterval(_qbMy, default)); } [Fact] @@ -1351,8 +1351,8 @@ public void Timeout_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.Timeout(_qbNull, TimeSpan.Zero, _qbMy, Scheduler.Immediate)); ReactiveAssert.Throws(() => Qbservable.Timeout(_qbMy, DateTimeOffset.Now, _qbNull, Scheduler.Immediate)); ReactiveAssert.Throws(() => Qbservable.Timeout(_qbMy, TimeSpan.Zero, _qbNull, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Timeout(_qbMy, DateTimeOffset.Now, _qbMy, default(IScheduler))); - ReactiveAssert.Throws(() => Qbservable.Timeout(_qbMy, TimeSpan.Zero, _qbMy, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Timeout(_qbMy, DateTimeOffset.Now, _qbMy, default)); + ReactiveAssert.Throws(() => Qbservable.Timeout(_qbMy, TimeSpan.Zero, _qbMy, default)); } [Fact] @@ -1383,9 +1383,9 @@ public void Timer_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.Timer(null, TimeSpan.Zero, TimeSpan.Zero)); ReactiveAssert.Throws(() => Qbservable.Timer(null, DateTimeOffset.Now, TimeSpan.Zero, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Timer(_qbp, DateTimeOffset.Now, TimeSpan.Zero, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Timer(_qbp, DateTimeOffset.Now, TimeSpan.Zero, default)); ReactiveAssert.Throws(() => Qbservable.Timer(null, TimeSpan.Zero, TimeSpan.Zero, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Timer(_qbp, TimeSpan.Zero, TimeSpan.Zero, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Timer(_qbp, TimeSpan.Zero, TimeSpan.Zero, default)); } [Fact] @@ -1406,7 +1406,7 @@ public void Timestamp_ArgumentNullChecks() { ReactiveAssert.Throws(() => Qbservable.Timestamp(_qbNull)); ReactiveAssert.Throws(() => Qbservable.Timestamp(_qbNull, Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.Timestamp(_qbMy, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.Timestamp(_qbMy, default)); } [Fact] @@ -1423,7 +1423,7 @@ public void ToObservable_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.ToObservable(_qbp, default(IEnumerable))); ReactiveAssert.Throws(() => Qbservable.ToObservable(null, new[] { 1 }, Scheduler.Immediate)); ReactiveAssert.Throws(() => Qbservable.ToObservable(_qbp, default(IEnumerable), Scheduler.Immediate)); - ReactiveAssert.Throws(() => Qbservable.ToObservable(_qbp, new[] { 1 }, default(IScheduler))); + ReactiveAssert.Throws(() => Qbservable.ToObservable(_qbp, new[] { 1 }, default)); } [Fact] @@ -1467,7 +1467,7 @@ public void Using_ArgumentNullChecks() ReactiveAssert.Throws(() => Qbservable.Using(_qbp, () => new MyDisposable(), default(Expression>>))); } - class MyDisposable : IDisposable + private class MyDisposable : IDisposable { public void Dispose() { @@ -1501,7 +1501,7 @@ public void Where() public void While_ArgumentNullChecks() { ReactiveAssert.Throws(() => Qbservable.While(null, () => true, _qbMy)); - ReactiveAssert.Throws(() => Qbservable.While(_qbp, default(Expression>), _qbMy)); + ReactiveAssert.Throws(() => Qbservable.While(_qbp, default, _qbMy)); ReactiveAssert.Throws(() => Qbservable.While(_qbp, () => true, _qbNull)); } @@ -1683,7 +1683,7 @@ public void Qbservable_ProviderOperators() ReactiveAssert.Throws(() => Qbservable.Provider.Throw(new MyException()).ForEach(_ => { })); } - class MyException : Exception + private class MyException : Exception { } @@ -1771,7 +1771,7 @@ join q in qbgs on o.Key equals q.Key select new { Name = o.Key, Observable = o.ToList(), Qbservable = q.ToList() }) .ToList(); - Func filterReturn = t => + bool filterReturn(Type t) { if (t.GetTypeInfo().IsGenericType) { @@ -1779,10 +1779,12 @@ join q in qbgs on o.Key equals q.Key if ( gd == typeof(ListObservable<>) || gd == typeof(IConnectableObservable<>)) + { return false; + } } return true; - }; + } foreach (var group in mtch) { @@ -1794,7 +1796,7 @@ join q in qbgs on o.Key equals q.Key var oss = group.Observable.Where(m => filterReturn(m.ReturnType)).Select(m => GetSignature(m, false)).OrderBy(x => x).ToList(); var qss = group.Qbservable.Select(m => GetSignature(m, true)).OrderBy(x => x).ToList(); - + Assert.True(oss.SequenceEqual(qss), "Mismatch between Qbservable and Observable for " + group.Name); } } @@ -1804,16 +1806,20 @@ public static string GetSignature(MethodInfo m, bool correct) var ps = m.GetParameters(); var pss = ps.AsEnumerable(); if (correct && ps.Length > 0 && ps[0].ParameterType == typeof(IQbservableProvider)) + { pss = pss.Skip(1); + } var gens = m.IsGenericMethod ? string.Format("<{0}>", string.Join(", ", m.GetGenericArguments().Select(a => GetTypeName(a, correct)).ToArray())) : ""; var pars = string.Join(", ", pss.Select(p => (p.IsDefined(typeof(ParamArrayAttribute)) ? "params " : "") + GetTypeName(p.ParameterType, correct) + " " + p.Name).ToArray()); - - if(m.IsDefined(typeof(ExtensionAttribute))) + + if (m.IsDefined(typeof(ExtensionAttribute))) { if (pars.StartsWith("IQbservable") || pars.StartsWith("IQueryable")) + { pars = "this " + pars; + } } return string.Format("{0} {1}{2}({3})", GetTypeName(m.ReturnType, correct), m.Name, gens, pars); @@ -1825,16 +1831,23 @@ public static string GetTypeName(Type t, bool correct) { var gtd = t.GetGenericTypeDefinition(); if (gtd == typeof(Expression<>)) + { return GetTypeName(t.GetGenericArguments()[0], false); + } var args = string.Join(", ", t.GetGenericArguments().Select(a => GetTypeName(a, false)).ToArray()); - + var len = t.Name.IndexOf('`'); var name = len >= 0 ? t.Name.Substring(0, len) : t.Name; if (correct && name == "IQbservable") + { name = "IObservable"; + } + if (correct && name == "IQueryable") + { name = "IEnumerable"; + } return string.Format("{0}<{1}>", name, args); } @@ -1864,7 +1877,7 @@ public void Qbservable_Extensibility_Constructor() var res1 = Qbservable.Provider.Qux(42).AsObservable().Single(); Assert.Equal(42, res1); } - + [Fact] public void Qbservable_Extensibility_Missing() { @@ -1957,7 +1970,7 @@ public static IQbservable Baz(this IQbservable source, Expression : IQbservable + internal class MyQbservable : IQbservable { public MyQbservable() { @@ -1991,7 +2004,7 @@ public IDisposable Subscribe(IObserver observer) } } - class MyQbservableProvider : IQbservableProvider + internal class MyQbservableProvider : IQbservableProvider { public IQbservable CreateQuery(Expression expression) { @@ -1999,7 +2012,7 @@ public IQbservable CreateQuery(Expression expression) } } - class MyQbservableQueryable : IQbservable + internal class MyQbservableQueryable : IQbservable { public MyQbservableQueryable() { @@ -2033,7 +2046,7 @@ public IDisposable Subscribe(IObserver observer) } } - class MyQueryable : IQueryable + internal class MyQueryable : IQueryable { public MyQueryable() { @@ -2072,7 +2085,7 @@ IQueryProvider IQueryable.Provider } } - class MyQbservableQueryableProvider : IQbservableProvider, IQueryProvider + internal class MyQbservableQueryableProvider : IQbservableProvider, IQueryProvider { public IQbservable CreateQuery(Expression expression) { @@ -2100,9 +2113,9 @@ public object Execute(Expression expression) } } - class EmptyQbservable : IQbservable, IQbservableProvider + internal class EmptyQbservable : IQbservable, IQbservableProvider { - private Expression _expression; + private readonly Expression _expression; public EmptyQbservable() { @@ -2135,7 +2148,7 @@ public IDisposable Subscribe(IObserver observer) return new MyD(); } - class MyD : IDisposable + private class MyD : IDisposable { public void Dispose() { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/AsyncSubjectTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/AsyncSubjectTest.cs index c7e405485b..9c5413dc81 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/AsyncSubjectTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/AsyncSubjectTest.cs @@ -12,7 +12,7 @@ namespace ReactiveTests.Tests { - + public partial class AsyncSubjectTest : ReactiveTest { [Fact] @@ -347,7 +347,9 @@ private void GetResult_BlockingImpl(AsyncSubject s) t.Start(); while (t.ThreadState != ThreadState.WaitSleepJoin) + { ; + } e.Set(); t.Join(); @@ -387,7 +389,9 @@ private void GetResult_Blocking_ThrowImpl(AsyncSubject s) t.Start(); while (t.ThreadState != ThreadState.WaitSleepJoin) + { ; + } e.Set(); t.Join(); @@ -396,7 +400,7 @@ private void GetResult_Blocking_ThrowImpl(AsyncSubject s) Assert.True(s.IsCompleted); } #endif - + [Fact] public void GetResult_Context() { @@ -424,7 +428,7 @@ public void GetResult_Context() Assert.True(ctx.ran); } - class MyContext : SynchronizationContext + private class MyContext : SynchronizationContext { public bool ran; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/BehaviorSubjectTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/BehaviorSubjectTest.cs index cbee6834e0..5b3f3547d2 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/BehaviorSubjectTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/BehaviorSubjectTest.cs @@ -10,7 +10,7 @@ namespace ReactiveTests.Tests { - + public partial class BehaviorSubjectTest : ReactiveTest { [Fact] diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/ReplaySubjectTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/ReplaySubjectTest.cs index 80f815f7a3..6aa95ed891 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/ReplaySubjectTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/ReplaySubjectTest.cs @@ -11,12 +11,12 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.Reactive.Testing; -using Xunit; using ReactiveTests.Dummies; +using Xunit; namespace ReactiveTests.Tests { - + public partial class ReplaySubjectTest : ReactiveTest { [Fact] @@ -1922,7 +1922,7 @@ public void FastImmediateObserver_Fault() var xs = new List(); var o = Observer.Create( - x => { xs.Add(x); if (x == 2) throw new Exception(); }, + x => { xs.Add(x); if (x == 2) { throw new Exception(); } }, ex => { }, () => { } ); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/SubjectTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/SubjectTest.cs index 9925d1cba9..57882f168e 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/SubjectTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/Linq/Subjects/SubjectTest.cs @@ -14,7 +14,7 @@ namespace ReactiveTests.Tests { - + public partial class SubjectTest : ReactiveTest { [Fact] @@ -368,7 +368,7 @@ public void SubjectDisposed() public void Subject_Create_ArgumentChecking() { ReactiveAssert.Throws(() => Subject.Create(null, Observable.Return(42))); - ReactiveAssert.Throws(() => Subject.Create(Observer.Create(x => {}), null)); + ReactiveAssert.Throws(() => Subject.Create(Observer.Create(x => { }), null)); ReactiveAssert.Throws(() => Subject.Create(null, Observable.Return(42))); ReactiveAssert.Throws(() => Subject.Create(Observer.Create(x => { }), null)); @@ -458,16 +458,20 @@ public void Subject_Synchronize1() var t = Enumerable.Range(0, N).Select(x => new Thread(() => { e.WaitOne(); s.OnNext(x); })).ToArray(); foreach (var u in t) + { u.Start(); + } e.Set(); foreach (var u in t) + { u.Join(); + } Assert.Equal(Enumerable.Range(0, N).Sum(), y); } - + [Fact] public void Subject_Synchronize2() { @@ -482,12 +486,16 @@ public void Subject_Synchronize2() var t = Enumerable.Range(0, N).Select(x => new Thread(() => { e.WaitOne(); s.OnNext(x); })).ToArray(); foreach (var u in t) + { u.Start(); + } e.Set(); foreach (var u in t) + { u.Join(); + } Assert.Equal(Enumerable.Range(0, N).Sum(), y); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ListObservableTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ListObservableTest.cs index 4d872d6de9..82bbb7df92 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ListObservableTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ListObservableTest.cs @@ -13,7 +13,7 @@ namespace ReactiveTests.Tests { - + public partial class ListObservableTest : ReactiveTest { [Fact] @@ -114,24 +114,30 @@ public void Insert_Middle() [Fact] public void Change_Beginning() { - var o = new ListObservable(Observable.Range(0, 10)); - o[0] = -1; + var o = new ListObservable(Observable.Range(0, 10)) + { + [0] = -1 + }; o.AssertEqual(-1, 1, 2, 3, 4, 5, 6, 7, 8, 9); } [Fact] public void Change_Middle() { - var o = new ListObservable(Observable.Range(0, 10)); - o[5] = -1; + var o = new ListObservable(Observable.Range(0, 10)) + { + [5] = -1 + }; o.AssertEqual(0, 1, 2, 3, 4, -1, 6, 7, 8, 9); } [Fact] public void Change_End() { - var o = new ListObservable(Observable.Range(0, 10)); - o[9] = -1; + var o = new ListObservable(Observable.Range(0, 10)) + { + [9] = -1 + }; o.AssertEqual(0, 1, 2, 3, 4, 5, 6, 7, 8, -1); } @@ -261,16 +267,20 @@ public void CopyTo_Smaller_Offset() [Fact] public void Add_Empty() { - var o = new ListObservable(Observable.Empty()); - o.Add(100); + var o = new ListObservable(Observable.Empty()) + { + 100 + }; o.AssertEqual(100); } [Fact] public void Add_Some() { - var o = new ListObservable(Observable.Return(200)); - o.Add(100); + var o = new ListObservable(Observable.Return(200)) + { + 100 + }; o.AssertEqual(200, 100); } @@ -305,7 +315,9 @@ public void ForEach() var l = new List(); foreach (var x in o) + { l.Add(x); + } l.AssertEqual(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); } @@ -317,7 +329,9 @@ public void ForEach_Old() var l = new List(); foreach (int x in (IEnumerable)o) + { l.Add(x); + } l.AssertEqual(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); } diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/MySubject.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/MySubject.cs index 9dc048dfef..48798b8aa2 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/MySubject.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/MySubject.cs @@ -9,7 +9,7 @@ namespace ReactiveTests.Tests { - class MySubject : ISubject + internal class MySubject : ISubject { private Dictionary _disposeOn = new Dictionary(); @@ -25,7 +25,9 @@ public void OnNext(int value) _observer.OnNext(value); if (_disposeOn.TryGetValue(value, out var disconnect)) + { disconnect.Dispose(); + } } public void OnError(Exception exception) diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/NotificationTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/NotificationTest.cs index 3b043ce507..4272510bfd 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/NotificationTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/NotificationTest.cs @@ -10,7 +10,7 @@ namespace ReactiveTests.Tests { - + public class NotificationTest : ReactiveTest { #region ToObservable @@ -169,7 +169,7 @@ public void OnNext_AcceptObserver() Assert.Equal(42, con.Value); } - class CheckOnNextObserver : IObserver + private class CheckOnNextObserver : IObserver { public void OnNext(int value) { @@ -221,15 +221,15 @@ public void OnNext_Accept_ArgumentChecking() { var n = Notification.CreateOnNext(42); - ReactiveAssert.Throws(() => n.Accept(default(IObserver))); + ReactiveAssert.Throws(() => n.Accept(default)); - ReactiveAssert.Throws(() => n.Accept(default(Action), ex => { }, () => { })); - ReactiveAssert.Throws(() => n.Accept(x => { }, default(Action), () => { })); - ReactiveAssert.Throws(() => n.Accept(x => { }, ex => { }, default(Action))); + ReactiveAssert.Throws(() => n.Accept(default, ex => { }, () => { })); + ReactiveAssert.Throws(() => n.Accept(x => { }, default, () => { })); + ReactiveAssert.Throws(() => n.Accept(x => { }, ex => { }, default)); - ReactiveAssert.Throws(() => n.Accept(default(Func), ex => "", () => "")); - ReactiveAssert.Throws(() => n.Accept(x => "", default(Func), () => "")); - ReactiveAssert.Throws(() => n.Accept(x => "", ex => "", default(Func))); + ReactiveAssert.Throws(() => n.Accept(default, ex => "", () => "")); + ReactiveAssert.Throws(() => n.Accept(x => "", default, () => "")); + ReactiveAssert.Throws(() => n.Accept(x => "", ex => "", default)); } [Fact] @@ -252,15 +252,15 @@ public void OnError_Accept_ArgumentChecking() { var n = Notification.CreateOnError(new Exception()); - ReactiveAssert.Throws(() => n.Accept(default(IObserver))); + ReactiveAssert.Throws(() => n.Accept(default)); - ReactiveAssert.Throws(() => n.Accept(default(Action), ex => { }, () => { })); - ReactiveAssert.Throws(() => n.Accept(x => { }, default(Action), () => { })); - ReactiveAssert.Throws(() => n.Accept(x => { }, ex => { }, default(Action))); + ReactiveAssert.Throws(() => n.Accept(default, ex => { }, () => { })); + ReactiveAssert.Throws(() => n.Accept(x => { }, default, () => { })); + ReactiveAssert.Throws(() => n.Accept(x => { }, ex => { }, default)); - ReactiveAssert.Throws(() => n.Accept(default(Func), ex => "", () => "")); - ReactiveAssert.Throws(() => n.Accept(x => "", default(Func), () => "")); - ReactiveAssert.Throws(() => n.Accept(x => "", ex => "", default(Func))); + ReactiveAssert.Throws(() => n.Accept(default, ex => "", () => "")); + ReactiveAssert.Throws(() => n.Accept(x => "", default, () => "")); + ReactiveAssert.Throws(() => n.Accept(x => "", ex => "", default)); } [Fact] @@ -351,7 +351,7 @@ public void OnError_AcceptObserver() Assert.Same(ex, obs.Error); } - class CheckOnErrorObserver : IObserver + private class CheckOnErrorObserver : IObserver { public void OnNext(int value) { @@ -440,15 +440,15 @@ public void OnCompleted_Accept_ArgumentChecking() { var n = Notification.CreateOnCompleted(); - ReactiveAssert.Throws(() => n.Accept(default(IObserver))); + ReactiveAssert.Throws(() => n.Accept(default)); - ReactiveAssert.Throws(() => n.Accept(default(Action), ex => { }, () => { })); - ReactiveAssert.Throws(() => n.Accept(x => { }, default(Action), () => { })); - ReactiveAssert.Throws(() => n.Accept(x => { }, ex => { }, default(Action))); + ReactiveAssert.Throws(() => n.Accept(default, ex => { }, () => { })); + ReactiveAssert.Throws(() => n.Accept(x => { }, default, () => { })); + ReactiveAssert.Throws(() => n.Accept(x => { }, ex => { }, default)); - ReactiveAssert.Throws(() => n.Accept(default(Func), ex => "", () => "")); - ReactiveAssert.Throws(() => n.Accept(x => "", default(Func), () => "")); - ReactiveAssert.Throws(() => n.Accept(x => "", ex => "", default(Func))); + ReactiveAssert.Throws(() => n.Accept(default, ex => "", () => "")); + ReactiveAssert.Throws(() => n.Accept(x => "", default, () => "")); + ReactiveAssert.Throws(() => n.Accept(x => "", ex => "", default)); } [Fact] @@ -506,7 +506,7 @@ public void OnCompleted_AcceptObserver() Assert.True(obs.Completed); } - class CheckOnCompletedObserver : IObserver + private class CheckOnCompletedObserver : IObserver { public void OnNext(int value) { @@ -562,11 +562,11 @@ public void OnCompleted_AcceptActionWithResult() Assert.Equal("OK", res); } - class AcceptObserver : IObserver + private class AcceptObserver : IObserver { - private Func _onNext; - private Func _onError; - private Func _onCompleted; + private readonly Func _onNext; + private readonly Func _onError; + private readonly Func _onCompleted; public AcceptObserver(Func onNext, Func onError, Func onCompleted) { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ObserverTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ObserverTest.cs index 137c7bbfca..eaac3c0762 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ObserverTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/ObserverTest.cs @@ -14,7 +14,7 @@ namespace ReactiveTests.Tests { - + public partial class ObserverTest : ReactiveTest { [Fact] @@ -26,7 +26,7 @@ public void ToObserver_ArgumentChecking() [Fact] public void ToObserver_NotificationOnNext() { - int i = 0; + var i = 0; Action> next = n => { Assert.Equal(i++, 0); @@ -42,7 +42,7 @@ public void ToObserver_NotificationOnNext() public void ToObserver_NotificationOnError() { var ex = new Exception(); - int i = 0; + var i = 0; Action> next = n => { Assert.Equal(i++, 0); @@ -57,7 +57,7 @@ public void ToObserver_NotificationOnError() public void ToObserver_NotificationOnCompleted() { var ex = new Exception(); - int i = 0; + var i = 0; Action> next = n => { Assert.Equal(i++, 0); @@ -70,7 +70,7 @@ public void ToObserver_NotificationOnCompleted() [Fact] public void ToNotifier_ArgumentChecking() { - ReactiveAssert.Throws(() => Observer.ToNotifier(default(IObserver))); + ReactiveAssert.Throws(() => Observer.ToNotifier(default)); } [Fact] @@ -93,20 +93,20 @@ public void ToNotifier_Forwards() [Fact] public void Create_ArgumentChecking() { - ReactiveAssert.Throws(() => Observer.Create(default(Action))); - ReactiveAssert.Throws(() => Observer.Create(default(Action), () => { })); + ReactiveAssert.Throws(() => Observer.Create(default)); + ReactiveAssert.Throws(() => Observer.Create(default, () => { })); ReactiveAssert.Throws(() => Observer.Create(_ => { }, default(Action))); - ReactiveAssert.Throws(() => Observer.Create(default(Action), (Exception _) => { })); + ReactiveAssert.Throws(() => Observer.Create(default, (Exception _) => { })); ReactiveAssert.Throws(() => Observer.Create(_ => { }, default(Action))); - ReactiveAssert.Throws(() => Observer.Create(default(Action), (Exception _) => { }, () => { })); - ReactiveAssert.Throws(() => Observer.Create(_ => { }, default(Action), () => { })); - ReactiveAssert.Throws(() => Observer.Create(_ => { }, (Exception _) => { }, default(Action))); + ReactiveAssert.Throws(() => Observer.Create(default, (Exception _) => { }, () => { })); + ReactiveAssert.Throws(() => Observer.Create(_ => { }, default, () => { })); + ReactiveAssert.Throws(() => Observer.Create(_ => { }, (Exception _) => { }, default)); } [Fact] public void Create_OnNext() { - bool next = false; + var next = false; var res = Observer.Create(x => { Assert.Equal(42, x); next = true; }); res.OnNext(42); Assert.True(next); @@ -119,7 +119,7 @@ public void Create_OnNext_HasError() var ex = new Exception(); var e_ = default(Exception); - bool next = false; + var next = false; var res = Observer.Create(x => { Assert.Equal(42, x); next = true; }); res.OnNext(42); Assert.True(next); @@ -139,8 +139,8 @@ public void Create_OnNext_HasError() [Fact] public void Create_OnNextOnCompleted() { - bool next = false; - bool completed = false; + var next = false; + var completed = false; var res = Observer.Create(x => { Assert.Equal(42, x); next = true; }, () => { completed = true; }); res.OnNext(42); Assert.True(next); @@ -155,8 +155,8 @@ public void Create_OnNextOnCompleted_HasError() var ex = new Exception(); var e_ = default(Exception); - bool next = false; - bool completed = false; + var next = false; + var completed = false; var res = Observer.Create(x => { Assert.Equal(42, x); next = true; }, () => { completed = true; }); res.OnNext(42); Assert.True(next); @@ -178,8 +178,8 @@ public void Create_OnNextOnCompleted_HasError() public void Create_OnNextOnError() { var ex = new Exception(); - bool next = true; - bool error = false; + var next = true; + var error = false; var res = Observer.Create(x => { Assert.Equal(42, x); next = true; }, e => { Assert.Same(ex, e); error = true; }); res.OnNext(42); Assert.True(next); @@ -192,8 +192,8 @@ public void Create_OnNextOnError() public void Create_OnNextOnError_HitCompleted() { var ex = new Exception(); - bool next = true; - bool error = false; + var next = true; + var error = false; var res = Observer.Create(x => { Assert.Equal(42, x); next = true; }, e => { Assert.Same(ex, e); error = true; }); res.OnNext(42); Assert.True(next); @@ -206,9 +206,9 @@ public void Create_OnNextOnError_HitCompleted() public void Create_OnNextOnErrorOnCompleted1() { var ex = new Exception(); - bool next = true; - bool error = false; - bool completed = false; + var next = true; + var error = false; + var completed = false; var res = Observer.Create(x => { Assert.Equal(42, x); next = true; }, e => { Assert.Same(ex, e); error = true; }, () => { completed = true; }); res.OnNext(42); Assert.True(next); @@ -223,9 +223,9 @@ public void Create_OnNextOnErrorOnCompleted1() public void Create_OnNextOnErrorOnCompleted2() { var ex = new Exception(); - bool next = true; - bool error = false; - bool completed = false; + var next = true; + var error = false; + var completed = false; var res = Observer.Create(x => { Assert.Equal(42, x); next = true; }, e => { Assert.Same(ex, e); error = true; }, () => { completed = true; }); res.OnNext(42); Assert.True(next); @@ -239,7 +239,7 @@ public void Create_OnNextOnErrorOnCompleted2() [Fact] public void AsObserver_ArgumentChecking() { - ReactiveAssert.Throws(() => Observer.AsObserver(default(IObserver))); + ReactiveAssert.Throws(() => Observer.AsObserver(default)); } [Fact] @@ -268,7 +268,7 @@ public void AsObserver_Forwards() Assert.True(obsc.HasOnCompleted); } - class MyObserver : IObserver + private class MyObserver : IObserver { public void OnNext(int value) { @@ -693,12 +693,15 @@ private void Observer_Synchronize(bool success) var M = 1000; var e = new CountdownEvent(N); - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) { Scheduler.Default.Schedule(() => { - for (int j = 0; j < M; j++) + for (var j = 0; j < M; j++) + { s.OnNext(j); + } + e.Signal(); }); } @@ -776,13 +779,19 @@ private void NotifyOn_Scheduler(bool success) new Thread(() => { - for (int i = 0; i < N; i++) + for (var i = 0; i < N; i++) + { n.OnNext(i); + } if (success) + { n.OnCompleted(); + } else + { n.OnError(err); + } }).Start(); e.WaitOne(); @@ -799,32 +808,35 @@ public void NotifyOn_SyncCtx() var ctx = new MySyncCtx(); var res = obs.NotifyOn(ctx); - for (int i = 0; i < 100; i++) + for (var i = 0; i < 100; i++) + { obs.OnNext(i); + } + obs.OnCompleted(); don.WaitOne(); Assert.True(lst.SequenceEqual(Enumerable.Range(0, 100))); } - class MySyncCtx : SynchronizationContext + private class MySyncCtx : SynchronizationContext { public override void Post(SendOrPostCallback d, object state) { Task.Run(() => d(state)); } } - + [Fact] public void Observer_ToProgress_ArgumentChecking() { var s = Scheduler.Immediate; var o = Observer.Create(_ => { }); - ReactiveAssert.Throws(() => Observer.ToProgress(default(IObserver))); + ReactiveAssert.Throws(() => Observer.ToProgress(default)); - ReactiveAssert.Throws(() => Observer.ToProgress(default(IObserver), s)); - ReactiveAssert.Throws(() => Observer.ToProgress(o, default(IScheduler))); + ReactiveAssert.Throws(() => Observer.ToProgress(default, s)); + ReactiveAssert.Throws(() => Observer.ToProgress(o, default)); } [Fact] @@ -883,7 +895,7 @@ public void Progress_ToObserver() Assert.True(xs.SequenceEqual(new[] { 42, 43 })); } - class MyProgress : IProgress + private class MyProgress : IProgress { private readonly Action _report; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/PrivateTypesTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/PrivateTypesTest.cs index 7f88adc47a..92d2591e46 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/PrivateTypesTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/PrivateTypesTest.cs @@ -2,11 +2,11 @@ // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. -using Microsoft.Reactive.Testing; using System; using System.Linq; using System.Reactive.Linq; using System.Reflection; +using Microsoft.Reactive.Testing; using Xunit; namespace ReactiveTests.Tests @@ -37,7 +37,7 @@ public void EitherEqualsEquatable() var left = (Either.Left)Either.CreateLeft(value); Assert.True(left.Equals(left)); - Assert.False(left.Equals((Either.Left)null)); + Assert.False(left.Equals(null)); var other = (Either.Left)Either.CreateLeft(value + 1); Assert.False(left.Equals(other)); @@ -47,7 +47,7 @@ public void EitherEqualsEquatable() var right = (Either.Right)Either.CreateRight(value); Assert.True(right.Equals(right)); - Assert.False(right.Equals((Either.Right)null)); + Assert.False(right.Equals(null)); var other = (Either.Right)Either.CreateRight(value + "1"); Assert.False(right.Equals(other)); @@ -128,21 +128,21 @@ public void EitherSwitchAction() { var value = 42; var left = (Either.Left)Either.CreateLeft(value); - int res = 0; - left.Switch(l => { res = 1; }, r => { res = 2;}); + var res = 0; + left.Switch(l => { res = 1; }, r => { res = 2; }); Assert.Equal(1, res); } { var value = "42"; var right = (Either.Right)Either.CreateRight(value); - int res = 0; + var res = 0; right.Switch(l => { res = 1; }, r => { res = 2; }); Assert.Equal(2, res); } } } - class EitherBase + internal class EitherBase { protected object _value; @@ -163,7 +163,7 @@ public override string ToString() } } - class Either : EitherBase + internal class Either : EitherBase { public static Either CreateLeft(TLeft value) { diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/RegressionTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/RegressionTest.cs index 0731bffed4..7ef2639ccc 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/RegressionTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/RegressionTest.cs @@ -15,7 +15,7 @@ namespace ReactiveTests.Tests { - + public class RegressionTest : ReactiveTest { #if NET45 || NET46 @@ -139,7 +139,7 @@ public void Bug_1287() } #if !NO_THREAD - static IEnumerable Bug_1333_Enumerable(AsyncSubject s, Semaphore sema) + private static IEnumerable Bug_1333_Enumerable(AsyncSubject s, Semaphore sema) { var d = s.First(); var t = new Thread(() => { d.Dispose(); sema.Release(); }); @@ -371,7 +371,7 @@ public void Bug_1381() var scheduler = new TestScheduler(); var xs = scheduler.CreateHotObservable( - OnNext( 90, 1), + OnNext(90, 1), OnNext(110, 2), OnNext(250, 3), OnNext(270, 4), @@ -422,7 +422,10 @@ public void Reentrant_Subject1() { list.Add(x); if (x < 3) + { s.OnNext(x + 1); + } + list.Add(-x); }); @@ -442,7 +445,10 @@ public void Reentrant_Subject2() { list.Add(x); if (x < 3) + { s.OnNext(x + 1); + } + list.Add(-x); }); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/RogueEnumerable.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/RogueEnumerable.cs index 12a51e0d03..c0bdeaf919 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/RogueEnumerable.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/RogueEnumerable.cs @@ -7,7 +7,7 @@ namespace ReactiveTests.Tests { - class RogueEnumerable : IEnumerable + internal class RogueEnumerable : IEnumerable { private readonly Exception _ex; diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/SystemClockTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/SystemClockTest.cs index 49cee51aa3..cd1dd5aae9 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/SystemClockTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/SystemClockTest.cs @@ -14,7 +14,7 @@ namespace ReactiveTests.Tests { - static class Exts + internal static class Exts { public static T Deq(this List l) { @@ -24,7 +24,7 @@ public static T Deq(this List l) } } - + public class SystemClockTest { private void Run(CrossAppDomainDelegate a) @@ -837,21 +837,21 @@ private static void ClockChanged_RefCounting_Callback() d2.Dispose(); d4.Dispose(); - Assert.Equal(1, scm.n); + Assert.Equal(1, scm.N); s.SetTime(due1); var i1 = s._queue.Deq(); i1.Invoke(); Assert.True(done1); - Assert.Equal(1, scm.n); + Assert.Equal(1, scm.N); s.SetTime(due2); var i2 = s._queue.Deq(); i2.Invoke(); Assert.False(done2); - Assert.Equal(1, scm.n); + Assert.Equal(1, scm.N); var l1 = cal._queue.Deq(); var l1d = now + l1.Interval; @@ -868,7 +868,7 @@ private static void ClockChanged_RefCounting_Callback() catch { } Assert.True(done3); - Assert.Equal(1, scm.n); + Assert.Equal(1, scm.N); var l2 = cal._queue.Deq(); var l2d = l1d + l2.Interval; @@ -880,7 +880,7 @@ private static void ClockChanged_RefCounting_Callback() i4.Invoke(); Assert.False(done4); - Assert.Equal(1, scm.n); + Assert.Equal(1, scm.N); var l3 = cal._queue.Deq(); var l3d = l2d + l3.Interval; @@ -892,21 +892,21 @@ private static void ClockChanged_RefCounting_Callback() i5.Invoke(); Assert.True(done5); - Assert.Equal(0, scm.n); + Assert.Equal(0, scm.N); var d6 = s.Schedule(due6, () => { done6 = true; }); - Assert.Equal(1, scm.n); + Assert.Equal(1, scm.N); s.SetTime(due6); var i6 = s._queue.Deq(); i6.Invoke(); Assert.True(done6); - Assert.Equal(0, scm.n); + Assert.Equal(0, scm.N); } - class MyScheduler : LocalScheduler + private class MyScheduler : LocalScheduler { internal List> _queue = new List>(); @@ -930,7 +930,7 @@ public override IDisposable Schedule(TState state, TimeSpan dueTime, Fun } } - class MyPlatformEnlightenmentProvider : IPlatformEnlightenmentProvider + private class MyPlatformEnlightenmentProvider : IPlatformEnlightenmentProvider { internal MyCAL _cal; @@ -954,7 +954,7 @@ public T GetService(params object[] args) where T : class } } - class FakeClockPlatformEnlightenmentProvider : IPlatformEnlightenmentProvider + private class FakeClockPlatformEnlightenmentProvider : IPlatformEnlightenmentProvider { internal FakeClockCAL _cal; internal FakeClock _clock; @@ -980,7 +980,7 @@ public T GetService(params object[] args) where T : class } } - class Work + private class Work { internal readonly Action _action; internal readonly object _state; @@ -992,7 +992,7 @@ public Work(Action action, object state) } } - class MyCAL : IConcurrencyAbstractionLayer + private class MyCAL : IConcurrencyAbstractionLayer { internal List> _queue = new List>(); @@ -1034,7 +1034,7 @@ public void StartThread(Action action, object state) } } - class FakeClockCAL : IConcurrencyAbstractionLayer + private class FakeClockCAL : IConcurrencyAbstractionLayer { internal Action _action; internal TimeSpan _period; @@ -1077,7 +1077,7 @@ public void StartThread(Action action, object state) } } - class FakeClock : ISystemClock + private class FakeClock : ISystemClock { internal DateTimeOffset _now; @@ -1087,44 +1087,34 @@ public DateTimeOffset UtcNow } } - class ClockChanged : INotifySystemClockChanged + private class ClockChanged : INotifySystemClockChanged { - private static ClockChanged s_instance = new ClockChanged(); - private EventHandler _systemClockChanged; - internal int n = 0; + internal int N = 0; public event EventHandler SystemClockChanged { add { _systemClockChanged += value; - n++; + N++; } remove { _systemClockChanged -= value; - n--; + N--; } } - public static ClockChanged Instance - { - get - { - return s_instance; - } - } + public static ClockChanged Instance { get; } = new ClockChanged(); public void OnSystemClockChanged() { - var scc = _systemClockChanged; - if (scc != null) - scc(this, new SystemClockChangedEventArgs()); + _systemClockChanged?.Invoke(this, new SystemClockChangedEventArgs()); } } } } -#endif \ No newline at end of file +#endif diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/TaskObservableExtensionsTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/TaskObservableExtensionsTest.cs index 4f68b71061..1398105499 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/TaskObservableExtensionsTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/TaskObservableExtensionsTest.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System; -using System.Linq; using System.Reactive; using System.Reactive.Concurrency; using System.Reactive.Linq; @@ -15,10 +14,10 @@ namespace ReactiveTests.Tests { - + public class TaskObservableExtensionsTest : ReactiveTest { - private Task doneTask; + private readonly Task doneTask; public TaskObservableExtensionsTest() { @@ -37,7 +36,7 @@ public void TaskToObservable_NonVoid_ArgumentChecking() ReactiveAssert.Throws(() => TaskObservableExtensions.ToObservable((Task)null)); ReactiveAssert.Throws(() => TaskObservableExtensions.ToObservable((Task)null, s)); - ReactiveAssert.Throws(() => TaskObservableExtensions.ToObservable(doneTask, default(IScheduler))); + ReactiveAssert.Throws(() => TaskObservableExtensions.ToObservable(doneTask, default)); var tcs = new System.Threading.Tasks.TaskCompletionSource(); var task = tcs.Task; @@ -394,10 +393,10 @@ public void TaskToObservable_Void_ArgumentChecking() { var s = Scheduler.Immediate; - ReactiveAssert.Throws(() => TaskObservableExtensions.ToObservable((Task)null)); + ReactiveAssert.Throws(() => TaskObservableExtensions.ToObservable(null)); - ReactiveAssert.Throws(() => TaskObservableExtensions.ToObservable((Task)null, s)); - ReactiveAssert.Throws(() => TaskObservableExtensions.ToObservable((Task)doneTask, default(IScheduler))); + ReactiveAssert.Throws(() => TaskObservableExtensions.ToObservable(null, s)); + ReactiveAssert.Throws(() => TaskObservableExtensions.ToObservable((Task)doneTask, default)); var tcs = new System.Threading.Tasks.TaskCompletionSource(); System.Threading.Tasks.Task task = tcs.Task; @@ -873,10 +872,10 @@ public void ObservableToTaskWithStateSingleValue() var scheduler = new TestScheduler(); var xs = Observable.Return(5, scheduler); - + var continuation = xs.ToTask(state); Assert.Same(continuation.AsyncState, state); - + scheduler.Start(); Assert.True(continuation.IsCompleted); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/TimeTests.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/TimeTests.cs index 844a0dea06..66b3821763 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/TimeTests.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/TimeTests.cs @@ -8,7 +8,7 @@ namespace ReactiveTests.Tests { - + public class TimeTests { [Fact] @@ -24,7 +24,7 @@ public void TimeInterval_Equals() { var ti = new TimeInterval(42, TimeSpan.FromSeconds(123.45)); Assert.False(ti.Equals("x")); - Assert.False(((object)ti).Equals("x")); + Assert.False(ti.Equals("x")); Assert.True(ti.Equals(ti)); Assert.True(((object)ti).Equals(ti)); @@ -106,7 +106,7 @@ public void Timestamped_Equals() { var ti = new Timestamped(42, new DateTimeOffset()); Assert.False(ti.Equals("x")); - Assert.False(((object)ti).Equals("x")); + Assert.False(ti.Equals("x")); Assert.True(ti.Equals(ti)); Assert.True(((object)ti).Equals(ti)); diff --git a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/UnitTest.cs b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/UnitTest.cs index 84ccf06161..24c16d1175 100644 --- a/Rx.NET/Source/tests/Tests.System.Reactive/Tests/UnitTest.cs +++ b/Rx.NET/Source/tests/Tests.System.Reactive/Tests/UnitTest.cs @@ -7,7 +7,7 @@ namespace ReactiveTests.Tests { - + public class UnitTest { [Fact]