public async Task ApplyProjectEvaluationAsync_WhenNoRuleChanges_DoesNotCallHandler() { int callCount = 0; var handler = IEvaluationHandlerFactory.ImplementHandle("RuleName", (version, description, state, logger) => { callCount++; }); var applyChangesToWorkspace = CreateInitializedInstance(handlers: new[] { handler }); var update = IProjectVersionedValueFactory.FromJson( @"{ ""ProjectChanges"": { ""RuleName"": { ""Difference"": { ""AnyChanges"": false }, } } }"); await applyChangesToWorkspace.ApplyProjectEvaluationAsync(update, new ContextState(true, false), CancellationToken.None); Assert.Equal(0, callCount); }
public void ApplyEvaluation_WhenCancellationTokenCancelled_StopsProcessingHandlers() { var cancellationTokenSource = new CancellationTokenSource(); var handler1 = IEvaluationHandlerFactory.ImplementHandle("RuleName1", (version, description, isActiveContext, logger) => { cancellationTokenSource.Cancel(); }); int callCount = 0; var handler2 = IEvaluationHandlerFactory.ImplementHandle("RuleName2", (version, description, isActiveContext, logger) => { callCount++; }); var applyChangesToWorkspace = CreateInitializedInstance(handlers: new[] { handler1, handler2 }); var update = IProjectVersionedValueFactory.FromJson( @"{ ""ProjectChanges"": { ""RuleName1"": { ""Difference"": { ""AnyChanges"": true }, }, ""RuleName2"": { ""Difference"": { ""AnyChanges"": true }, } } }"); applyChangesToWorkspace.ApplyEvaluation(update, isActiveContext: true, cancellationTokenSource.Token); Assert.True(cancellationTokenSource.IsCancellationRequested); Assert.Equal(0, callCount); }