Browse Source

Make NCrunch work

Lucas Trzesniewski 7 years ago
parent
commit
d0cabf7ff6

+ 0 - 2
.gitignore

@@ -22,8 +22,6 @@ Thumbs.db
 [Dd]ebug*/
 *.lib
 *.sbr
-*.ncrunchproject
-*.ncrunchsolution
 *.orig
 obj/
 [Rr]elease*/

+ 1 - 1
src/Abc.Zebus.Testing/Abc.Zebus.Testing.csproj

@@ -1,6 +1,6 @@
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
+    <TargetFrameworks>net461;netcoreapp2.1;netstandard2.0</TargetFrameworks>
     <PackageId>Zebus.Testing</PackageId>
     <Description>Test tools for Zebus</Description>
   </PropertyGroup>

+ 5 - 0
src/Abc.Zebus.Testing/Abc.Zebus.Testing.netstandard2.0.v3.ncrunchproject

@@ -0,0 +1,5 @@
+<ProjectConfiguration>
+  <Settings>
+    <IgnoreThisComponentCompletely>True</IgnoreThisComponentCompletely>
+  </Settings>
+</ProjectConfiguration>

+ 4 - 3
src/Abc.Zebus.Testing/Directory/TestPeerDirectory.cs

@@ -67,13 +67,14 @@ namespace Abc.Zebus.Testing.Directory
 
         public bool IsPersistent(PeerId peerId)
         {
-            var peer = Peers.GetValueOrDefault(peerId);
-            return peer != null && peer.IsPersistent;
+            return Peers.TryGetValue(peerId, out var peer) && peer.IsPersistent;
         }
 
         public PeerDescriptor GetPeerDescriptor(PeerId peerId)
         {
-            return Peers.GetValueOrDefault(peerId);
+            return Peers.TryGetValue(peerId, out var peer)
+                ? peer
+                : null;
         }
 
         public IEnumerable<PeerDescriptor> GetPeerDescriptors()

+ 2 - 2
src/Abc.Zebus.Testing/Extensions/NUnitExtensions.cs

@@ -366,8 +366,8 @@ namespace Abc.Zebus.Testing.Extensions
 
                 var actualValue = actualProperty.GetValue(actual);
                 object expectedValue = null;
-                var expectedProperty = expectedProperties.GetValueOrDefault(actualProperty.Name);
-                if (expectedProperty != null)
+                
+                if (expectedProperties.TryGetValue(actualProperty.Name, out var expectedProperty))
                     expectedValue = expectedProperty.GetValue(expected);
 
                 if (actualValue == null && expectedValue == null)

+ 18 - 11
src/Abc.Zebus.Testing/TestBus.cs

@@ -59,7 +59,7 @@ namespace Abc.Zebus.Testing
             {
                 lock (_subscriptions)
                 {
-                    return _subscriptions.ToHashSet();
+                    return new HashSet<Subscription>(_subscriptions);
                 }
             }
         }
@@ -83,8 +83,8 @@ namespace Abc.Zebus.Testing
                 _events.Add(message);
             }
 
-            var handler = _handlers.GetValueOrDefault(new HandlerKey(message.GetType(), default(PeerId)));
-            handler?.Invoke(message);
+            if (_handlers.TryGetValue(new HandlerKey(message.GetType(), default), out var handler))
+                handler.Invoke(message);
         }
 
         public Task<CommandResult> Send(ICommand message)
@@ -103,9 +103,16 @@ namespace Abc.Zebus.Testing
                 _peerByCommand[message] = peer;
             }
 
-            var handler = (peer != null) ? _handlers.GetValueOrDefault(new HandlerKey(message.GetType(), peer.Id)) : null;
+            Func<IMessage, object> handler;
+
+            if (peer != null)
+                _handlers.TryGetValue(new HandlerKey(message.GetType(), peer.Id), out handler);
+            else
+                handler = null;
+
+            // TODO why do we fall back in all cases?
             if (handler == null)
-                handler = _handlers.GetValueOrDefault(new HandlerKey(message.GetType(), default(PeerId)));
+                _handlers.TryGetValue(new HandlerKey(message.GetType(), default), out handler);
 
             return HandlerExecutor.Execute(message, handler);
         }
@@ -129,7 +136,7 @@ namespace Abc.Zebus.Testing
             if (request.Batch != null)
                 await request.Batch.WhenSubmittedAsync().ConfigureAwait(false);
 
-            var handlerKeys = request.Subscriptions.Select(x => new HandlerKey(x.MessageTypeId.GetMessageType(), default(PeerId))).ToList();
+            var handlerKeys = request.Subscriptions.Select(x => new HandlerKey(x.MessageTypeId.GetMessageType(), default)).ToList();
 
             foreach (var handlerKey in handlerKeys)
             {
@@ -228,13 +235,13 @@ namespace Abc.Zebus.Testing
         public void AddHandler<TMessage>(Func<TMessage, object> handler)
             where TMessage : IMessage
         {
-            _handlers[new HandlerKey(typeof(TMessage), default(PeerId))] = x => handler((TMessage)x);
+            _handlers[new HandlerKey(typeof(TMessage), default)] = x => handler((TMessage)x);
         }
 
         public void AddSuccessfulHandler<TMessage>()
             where TMessage : IMessage
         {
-            _handlers[new HandlerKey(typeof(TMessage), default(PeerId))] = x => true;
+            _handlers[new HandlerKey(typeof(TMessage), default)] = x => true;
         }
 
         public void AddHandlerForPeer<TMessage>(PeerId peerId, Func<TMessage, object> handler)
@@ -256,7 +263,7 @@ namespace Abc.Zebus.Testing
         public void AddHandler<TMessage>(Action<TMessage> handler)
             where TMessage : IMessage
         {
-            _handlers[new HandlerKey(typeof(TMessage), default(PeerId))] = x =>
+            _handlers[new HandlerKey(typeof(TMessage), default)] = x =>
             {
                 handler((TMessage)x);
                 return null;
@@ -266,13 +273,13 @@ namespace Abc.Zebus.Testing
         public void AddHandlerThatThrowsDomainException<TMessage>(DomainException ex)
             where TMessage : IMessage
         {
-            _handlers[new HandlerKey(typeof(TMessage), default(PeerId))] = x => { throw ex; };
+            _handlers[new HandlerKey(typeof(TMessage), default)] = x => { throw ex; };
         }
 
         public void AddHandlerThatThrows<TMessage>(Exception ex = null)
             where TMessage : IMessage
         {
-            _handlers[new HandlerKey(typeof(TMessage), default(PeerId))] = x => { throw ex ?? new Exception(); };
+            _handlers[new HandlerKey(typeof(TMessage), default)] = x => { throw ex ?? new Exception(); };
         }
 
         public void Expect(IEnumerable<IMessage> expectedMessages)

+ 1 - 0
src/Abc.Zebus.Tests/Abc.Zebus.Tests.csproj

@@ -14,6 +14,7 @@
     <PackageReference Include="CompareNETObjects" Version="4.55.0" />
     <PackageReference Include="log4net" Version="2.0.8" />
     <PackageReference Include="Moq" Version="4.9.0" />
+    <PackageReference Include="NCrunch.Framework" Version="3.17.0" />
     <PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
     <PackageReference Include="protobuf-net" Version="2.3.13" />
     <PackageReference Include="structuremap" Version="4.7.0" />

+ 1 - 1
src/Abc.Zebus.Tests/Comparison/ComparisonExtensionsTests.cs

@@ -26,4 +26,4 @@ namespace Abc.Zebus.Tests.Comparison
             public static int Value => _state++;
         }
     }
-}
+}

+ 3 - 0
src/Abc.Zebus.Tests/MessageIdTests.cs

@@ -18,6 +18,9 @@ namespace Abc.Zebus.Tests
         [Test]
         public void should_not_generate_identical_MessageIds_when_multiple_buses_are_started_in_different_app_domains_simultaneously()
         {
+            if (NCrunch.Framework.NCrunchEnvironment.NCrunchIsResident())
+                Assert.Inconclusive();
+
             const int appDomainsToGenerate = 100;
             var appDomainProxies = Enumerable.Range(0, appDomainsToGenerate).Select(i => CreateMessageIdCallerFromNewAppDomain()).ToList();
             var proxiesTasks = appDomainProxies.Select(proxy => new Task<Guid>(proxy.GetNextId)).ToArray();

+ 7 - 0
src/Abc.Zebus.v3.ncrunchsolution

@@ -0,0 +1,7 @@
+<SolutionConfiguration>
+  <Settings>
+    <AllowParallelTestExecution>True</AllowParallelTestExecution>
+    <ConsiderInconclusiveTestsAsPassing>True</ConsiderInconclusiveTestsAsPassing>
+    <SolutionConfigured>True</SolutionConfigured>
+  </Settings>
+</SolutionConfiguration>