Ejemplo n.º 1
0
        public void SmartContract_ValidateFormat_One_CustomStruct()
        {
            var adjustedSource = @"
                using System;
                using Stratis.SmartContracts;

                public class StructTest : SmartContract
                {
                    public struct Item
                    {
                        public int Number;
                        public string Name;
                    }

                    public StructTest(ISmartContractState state) : base(state)
                    {
                    }
                }
            ";

            ContractCompilationResult compilationResult = ContractCompiler.Compile(adjustedSource);

            Assert.True(compilationResult.Success);

            var validator = new NestedTypesAreValueTypesValidator();

            byte[] assemblyBytes = compilationResult.Compilation;
            IContractModuleDefinition      decomp = ContractDecompiler.GetModuleDefinition(assemblyBytes).Value;
            IEnumerable <ValidationResult> result = validator.Validate(decomp.ContractType);

            Assert.Empty(result);
        }
        public void NestedTypesAreValueTypesValidator_Should_Allow_Nested_Value_Type()
        {
            const string source = @"public class Test {public struct A{}}";

            var typeDefinition = CompileToTypeDef(source);

            var validator = new NestedTypesAreValueTypesValidator();

            var result = validator.Validate(typeDefinition).ToList();

            Assert.Empty(result);
        }
        public void NestedTypesAreValueTypesValidator_Should_Not_Allow_Nested_Reference_Type()
        {
            const string source = @"public class Test{class A {} }";

            var typeDefinition = CompileToTypeDef(source);

            var validator = new NestedTypesAreValueTypesValidator();

            var result = validator.Validate(typeDefinition).ToList();

            Assert.Single(result);
            Assert.IsType <NestedTypesAreValueTypesValidator.NestedTypeIsValueTypeValidationResult>(result.Single());
        }