예제 #1
0
        public void BlockMerkleRootRule_Cannot_Be_Skipped()
        {
            var descriptor = new ConsensusRuleDescriptor(new BlockMerkleRootRule());

            descriptor.Rule.Should().BeOfType <BlockMerkleRootRule>();
            descriptor.RuleAttributes.Should().HaveCount(1);
            descriptor.CanSkipValidation.Should().BeFalse();
        }
예제 #2
0
        public void Constructor_ConsensusRuleWithZeroRuleAttributes_CanSkipValidation()
        {
            var descriptor = new ConsensusRuleDescriptor(new RuleWithoutRuleAttributes());

            descriptor.Rule.Should().BeOfType <RuleWithoutRuleAttributes>();

            descriptor.RuleAttributes.Should().BeEmpty();
            descriptor.CanSkipValidation.Should().BeTrue();
        }
예제 #3
0
        public void Constructor_ConsensusRuleWithoutValidationAttributeButWithOtherRuleAttribute_CannotSkipValidation()
        {
            var descriptor = new ConsensusRuleDescriptor(new RuleWithMempoolAttributeButWithoutValidationAttribute());

            descriptor.Rule.Should().BeOfType <RuleWithMempoolAttributeButWithoutValidationAttribute>();

            descriptor.RuleAttributes.Should().HaveCount(1);

            descriptor.CanSkipValidation.Should().BeFalse();
        }
예제 #4
0
        public void Constructor_ConsensusRuleWithOptionalValidationAttribute_CanSkipValidation()
        {
            var descriptor = new ConsensusRuleDescriptor(new RuleWithOptionalValidationAttribute());

            descriptor.Rule.Should().BeOfType <RuleWithOptionalValidationAttribute>();
            descriptor.RuleAttributes.Should().HaveCount(1);
            descriptor.RuleAttributes.Single().Should().BeOfType <ValidationRuleAttribute>();

            descriptor.CanSkipValidation.Should().BeTrue();
        }
예제 #5
0
        public void Constructor_ConsensusRuleWithMempoolAndExecutionAndValidationAttribute_CannotSkipValidation()
        {
            var descriptor = new ConsensusRuleDescriptor(new RuleWithValidationExecutionMempoolAttributes());

            descriptor.Rule.Should().BeOfType <RuleWithValidationExecutionMempoolAttributes>();
            descriptor.RuleAttributes.Should().HaveCount(3);
            descriptor.RuleAttributes.Should().Contain(x => x is MempoolRuleAttribute);
            descriptor.RuleAttributes.Should().Contain(x => x is ExecutionRuleAttribute);
            descriptor.RuleAttributes.Should().Contain(x => x is ValidationRuleAttribute);

            descriptor.CanSkipValidation.Should().BeFalse();
        }
예제 #6
0
        public void Constructor_ConsensusRuleWithoutValidationAttribute_InitializesClass()
        {
            var rule = new TestConsensusRuleWithoutValidationAttribute("myRule");

            var descriptor = new ConsensusRuleDescriptor(rule);

            Assert.True(descriptor.Rule is TestConsensusRuleWithoutValidationAttribute);
            Assert.Equal("myRule", (descriptor.Rule as TestConsensusRuleWithoutValidationAttribute).RuleName);

            Assert.Equal(2, descriptor.Attributes.Count);
            Assert.True(descriptor.Attributes[0] is MempoolRuleAttribute);
            Assert.True(descriptor.Attributes[1] is ExecutionRuleAttribute);

            Assert.True(descriptor.CanSkipValidation);
        }