protected void WhenExecutingTheRule(ConsensusRule rule, RuleContext ruleContext) { try { this.logger = new Mock <ILogger>(); rule.Logger = this.logger.Object; rule.Parent = new PowConsensusRules( this.network, new Mock <ILoggerFactory>().Object, new Mock <IDateTimeProvider>().Object, new ConcurrentChain(this.network), new NodeDeployments(this.network, new ConcurrentChain(this.network)), new ConsensusSettings(), new Mock <ICheckpoints>().Object, new Mock <CoinView>().Object, null); rule.Initialize(); rule.Parent.PerformanceCounter.ProcessedTransactions.Should().Be(0); rule.RunAsync(ruleContext).GetAwaiter().GetResult(); } catch (Exception e) { this.caughtExecption = e; } }
public void Register_WithRulesInRuleRegistration_UpdatesConsensusRule_AddsConensusRuleToRules() { this.loggerFactory.Setup(l => l.CreateLogger(typeof(BlockSizeRule).FullName)) .Returns(new Mock <ILogger>().Object) .Verifiable(); this.loggerFactory.Setup(l => l.CreateLogger(typeof(SetActivationDeploymentsRule).FullName)) .Returns(new Mock <ILogger>().Object) .Verifiable(); this.ruleRegistrations = new List <ConsensusRule> { new BlockSizeRule(), new SetActivationDeploymentsRule() }; TestConsensusRules consensusRules = InitializeConsensusRules(); consensusRules = consensusRules.Register(this.ruleRegistration.Object) as TestConsensusRules; List <ConsensusRule> rules = consensusRules.Rules.ToList(); Assert.Equal(2, rules.Count); ConsensusRule rule = rules[0]; Assert.Equal(typeof(TestConsensusRules), rule.Parent.GetType()); Assert.NotNull(rule.Logger); rule = rules[1]; Assert.Equal(typeof(TestConsensusRules), rule.Parent.GetType()); Assert.NotNull(rule.Logger); this.loggerFactory.Verify(); }
public void Consensus_Exact(int offset) { var rule = new ConsensusRule() { Rules = new ICustomRule[] { new TestRule(RuleAction.Report, new FailurePart("bb", FailureClassification.Person, offset)), new TestRule(RuleAction.Report, new FailurePart("bb", FailureClassification.Person, offset)), } }; var result = rule.Apply("ff", "vv", out IEnumerable <FailurePart> badParts); Assert.AreEqual(RuleAction.Report, result); Assert.AreEqual(offset, badParts.Single().Offset); }
public void NoConsensus_OnlyOneHasProblem() { var rule = new ConsensusRule() { Rules = new ICustomRule[] { new TestRule(RuleAction.Report, new FailurePart("bb", FailureClassification.Person)), new TestRule(RuleAction.Ignore), } }; var result = rule.Apply("ff", "vv", out IEnumerable <FailurePart> badParts); Assert.AreEqual(RuleAction.None, result); Assert.IsEmpty(badParts); }
public void Consensus_SingleOverlap() { var rule = new ConsensusRule() { Rules = new ICustomRule[] { // Word is length 2 and begins at offset 10 new TestRule(RuleAction.Report, new FailurePart("ab", FailureClassification.Person, 10)), new TestRule(RuleAction.Report, new FailurePart("bc", FailureClassification.Person, 11)), } }; var result = rule.Apply("ff", "abc is so cool", out IEnumerable <FailurePart> badParts); Assert.AreEqual(RuleAction.Report, result); Assert.AreEqual(10, badParts.Single().Offset); Assert.AreEqual("ab", badParts.Single().Word); }