Exemplo n.º 1
0
        public void BlockChainHashLinkingTest()
        {
            var blockChain = new MockBlockChain();

            var block1 = new MockBlock("block1");
            var block2 = new MockBlock("block2");
            var block3 = new MockBlock("block3");

            // no blocks
            Assert.AreEqual(NO_PREVIOUS_BLOCK_HASH, blockChain.LastBlockHash);

            Assert.IsNull(block1.PreviousBlockHash);
            blockChain.AddBlock(block1);
            Assert.AreEqual(NO_PREVIOUS_BLOCK_HASH, block1.PreviousBlockHash);
            Assert.AreEqual(block1.Hash, blockChain.LastBlockHash);

            Assert.IsNull(block2.PreviousBlockHash);
            blockChain.AddBlock(block2);
            Assert.AreEqual(block1.Hash, block2.PreviousBlockHash);
            Assert.AreEqual(block2.Hash, blockChain.LastBlockHash);

            Assert.IsNull(block3.PreviousBlockHash);
            blockChain.AddBlock(block3);
            Assert.AreEqual(block2.Hash, block3.PreviousBlockHash);
            Assert.AreEqual(block3.Hash, blockChain.LastBlockHash);
        }
Exemplo n.º 2
0
        public void BlockChainLastBlockTest()
        {
            var blockChain = new MockBlockChain();

            var block1 = new MockBlock("block1");
            var block2 = new MockBlock("block2");
            var block3 = new MockBlock("block3");

            // no blocks
            Assert.IsNull(blockChain.GetLastBlock());

            blockChain.AddBlock(block1);
            var lastBlock = blockChain.GetLastBlock();

            Assert.AreEqual(block1, lastBlock);

            blockChain.AddBlock(block2);
            lastBlock = blockChain.GetLastBlock();
            Assert.AreNotEqual(block1, lastBlock);
            Assert.AreEqual(block2, lastBlock);

            blockChain.AddBlock(block3);
            lastBlock = blockChain.GetLastBlock();
            Assert.AreNotEqual(block1, lastBlock);
            Assert.AreNotEqual(block2, lastBlock);
            Assert.AreEqual(block3, lastBlock);
        }
Exemplo n.º 3
0
        public void Lines_Returns_A_Collection_Of_All_Block_Lines()
        {
            var   stylist   = new MockStylist();
            Block mockBlock = new MockBlock(stylist);

            (mockBlock as MockBlock).Add("Hello, World");

            Assert.AreEqual(1, mockBlock.Lines.Count);
        }
Exemplo n.º 4
0
        public void SettingDataThroughConstructorComputesHash()
        {
            var blockData     = "Hello!";
            var blockDataHash = "19ff7e39d988355c61531c5be566e37f4b6a758d7b3cc96928310d4f950ba634";
            var block         = new MockBlock(blockData);

            Assert.IsNotNull(block.Hash);
            Assert.AreEqual(blockDataHash, block.Hash);
        }
Exemplo n.º 5
0
        public void ToString_Returns_Blocks_Markdown_Content()
        {
            var   stylist   = new MockStylist();
            Block mockBlock = new MockBlock(stylist);

            (mockBlock as MockBlock).Add("Hello, World");

            Assert.AreEqual("Hello, World\r\n", mockBlock.ToString());
        }
Exemplo n.º 6
0
        public void SettingDataByPropertyComputesHash()
        {
            var blockData     = "Hello!";
            var blockDataHash = "19ff7e39d988355c61531c5be566e37f4b6a758d7b3cc96928310d4f950ba634";
            var block         = new MockBlock();

            Assert.IsNull(block.Hash);
            block.Data = blockData;
            Assert.AreEqual(blockDataHash, block.Hash);
        }
        public void Method_ModifiedParameters_HasSideEffect()
        {
            const string methodParameter = "param1";
            var          body            = MockBlock.GetMethodBodyThatModifiedMethodParameters(methodParameter);
            var          method          = MockMethod.DefaultMethodWithBody(body);

            var sideEffectChecker = new ModifiedStateSideEffect();

            sideEffectChecker.CheckForSideEffects(method);
            var hasSideEffect = sideEffectChecker.HasSideEffects();

            Assert.IsTrue(hasSideEffect);
        }
Exemplo n.º 8
0
        public void IFMethods_CallsOtherMethod_ShouldBeConnected()
        {
            var method1     = MockMethod.Method("Method1", MockBlock.GeneralMethodBody().Object);
            var method2Body = MockBlock.GetMethodBodyThatInvokedInternalMethods(new[] { method1.Name });
            var method2     = MockMethod.Method("Method2", method2Body);

            var lcomGraph = new Lcom4Graph(new[] { method1, method2 });
            var actualConnectedComponentsCount = lcomGraph.CountConnectedComponents();

            var expectedConnectedComponentCounts = 1;

            Assert.AreEqual(expectedConnectedComponentCounts, actualConnectedComponentsCount);
        }
        public void Method_ModifiedStaticFields_HasSideEffect()
        {
            const string classStaticField = "staticFieldOfClass";
            var          body             = MockBlock.GetMethodBodyThatModifiedStaticFields(classStaticField);
            var          method           = MockMethod.DefaultMethodWithBody(body);

            var sideEffectChecker = new ModifiedStateSideEffect();

            sideEffectChecker.CheckForSideEffects(method);
            var hasSideEffect = sideEffectChecker.HasSideEffects();

            Assert.IsTrue(hasSideEffect);
        }
Exemplo n.º 10
0
        public void MethodWith_SmallBlockSize_HasNotAnalyzerError()
        {
            var methodSizeRule = QualityRules.MethodSize;
            var maximumLines   = new Metric().MaximumSizeOfMethod;

            var body               = MockBlock.GeneralMethodBodyWithBlockSize(maximumLines - 1);
            var method             = MockMethod.DefaultMethodWithBody(body.Object);
            var methodSizeAnalyzer = new MethodSize(TestBootStrapped.GetInstanceOfIMetric());

            methodSizeAnalyzer.Analyze(method);
            var analyzeResult = methodSizeAnalyzer.GetResult();

            var hasAcceptableSize = !analyzeResult.Any(a => a.ViolatedRule.Equals(methodSizeRule));

            Assert.IsTrue(hasAcceptableSize);
        }
        public void Method_JustModifiedParentClassFields_HasNotAnalyzerError()
        {
            var sideEffectRule = QualityRules.SideEffect;

            var methodParameter = "param1";
            var body            = MockBlock.GetMethodBodyThatJustModifiedClassInstanceFields(methodParameter);
            var method          = MockMethod.DefaultMethodWithBody(body);

            var sideEffectAnalyzer = new MethodSideEffects(TestBootStrapped.GetInstanceOfISideEffect());

            sideEffectAnalyzer.Analyze(method);
            var analyzeResult = sideEffectAnalyzer.GetResult();

            var hasSideEffect = analyzeResult.Any(a => a.ViolatedRule.Equals(sideEffectRule));

            Assert.IsFalse(hasSideEffect);
        }
        public void Method_ModifiedStaticFields_HasAnalyzerError()
        {
            var sideEffectRule = QualityRules.SideEffect;

            var classStaticField = "staticFieldOfClass";
            var body             = MockBlock.GetMethodBodyThatModifiedStaticFields(classStaticField);
            var method           = MockMethod.DefaultMethodWithBody(body);

            var sideEffectAnalyzer = new MethodSideEffects(TestBootStrapped.GetInstanceOfISideEffect());

            sideEffectAnalyzer.Analyze(method);
            var analyzeResult = sideEffectAnalyzer.GetResult();

            var hasSideEffect = analyzeResult.Any(a => a.ViolatedRule.Equals(sideEffectRule));

            Assert.IsTrue(hasSideEffect);
        }
Exemplo n.º 13
0
        public void EmbeddedStatement_WithBigBlock_HasAnalyzerError()
        {
            var blockSizeRule = QualityRules.EmbeddedStatementsBlockSize;
            var maximumSizeOfEmbeddedBlock = new Metric().MaximumSizeOfEmbeddedBlock;

            var embeddedStatement = MockIEmbeddedStatement.GeneralIEmbeddedStatement(maximumSizeOfEmbeddedBlock + 1);
            var body   = MockBlock.GetMethodBodyWithEmbeddedStatement(new[] { embeddedStatement });
            var method = MockMethod.DefaultMethodWithBody(body);

            var nestedStructureRAnalyzer = new EmbeddedStatementAnalyzer(TestBootStrapped.GetInstanceOfIMetric());

            nestedStructureRAnalyzer.Analyze(method);
            var analyzeResult = nestedStructureRAnalyzer.GetResult();

            var hasError = analyzeResult.Any(a => a.ViolatedRule.Equals(blockSizeRule));

            Assert.IsTrue(hasError);
        }
        public void Method_JustModifiedLocalVariable_HasNotAnalyzerError()
        {
            var sideEffectRule = QualityRules.SideEffect;

            var localVariable = "variable1";
            var methodName    = "newMethod";
            var body          = MockBlock.GetMethodBodyThatJustModifiedLocalVariable(localVariable);
            var method        = MockMethod.Method(methodName, body);

            var sideEffectAnalyzer = new MethodSideEffects(TestBootStrapped.GetInstanceOfISideEffect());

            sideEffectAnalyzer.Analyze(method);
            var analyzeResult = sideEffectAnalyzer.GetResult();

            var hasSideEffect = analyzeResult.Any(a => a.ViolatedRule.Equals(sideEffectRule));

            Assert.IsFalse(hasSideEffect);
        }
Exemplo n.º 15
0
        public void DeepNested_EmbeddedStatement_HasAnalyzerError()
        {
            var nestedStructureRules    = QualityRules.NestedStructure;
            var maximumNestedStructures = new Metric().MaximumLevelOfNestedStructure;

            var nestedStructure =
                MockIEmbeddedStatement.MultiLevelNestedIEmbeddedStatements(maximumNestedStructures + 1);
            var body   = MockBlock.GetMethodBodyWithEmbeddedStatement(new[] { nestedStructure });
            var method = MockMethod.DefaultMethodWithBody(body);

            var nestedStructureRAnalyzer = new EmbeddedStatementAnalyzer(TestBootStrapped.GetInstanceOfIMetric());

            nestedStructureRAnalyzer.Analyze(method);
            var analyzeResult = nestedStructureRAnalyzer.GetResult();

            var hasError = analyzeResult.Any(a => a.ViolatedRule.Equals(nestedStructureRules));

            Assert.IsTrue(hasError);
        }
Exemplo n.º 16
0
        public void ClassWithMethods_HaveNotUsedCommonClassFields_ButConnectedByCallingMethods_HasNotCohesionError()
        {
            var classFields = new[] { "field1", "field2" };

            var cohesionRule = QualityRules.ClassCohesion;

            var method1     = MockMethod.Method("Method1", MockBlock.GeneralMethodBody().Object);
            var method2Body = MockBlock.GetMethodBodyThatInvokedInternalMethods(new[] { method1.Name });
            var method2     = MockMethod.Method("Method2", method2Body);


            var classDef         = MockClass.GetClass(classFields, new[] { method1, method2 });
            var cohesionAnalyzer = new ClassCohesion(TestBootStrapped.GetInstanceOfICohesion());

            cohesionAnalyzer.Analyze(classDef);
            var analyzeResult = cohesionAnalyzer.GetResult();

            var isCohesive = !analyzeResult.Any(a => a.ViolatedRule.Equals(cohesionRule));

            Assert.IsTrue(isCohesive);
        }
Exemplo n.º 17
0
        private IMethodBase GetMethodWithModifiedClassFieldsInBlock(string methodName, string[] fieldsIdentifiers)
        {
            var methodBody = MockBlock.GetMethodBodyThatModifiedClassFields(fieldsIdentifiers);

            return(MockMethod.Method(methodName, methodBody));
        }
 public MockFile(String path, int blockSize, byte[] content,
                 MockBlock... blocks) {
   this.path = new Path(path);
   this.blockSize = blockSize;
   this.blocks = blocks;
   this.content = content;
   this.length = content.length;
   int offset = 0;
   for(MockBlock block: blocks) {
     block.offset = offset;
     block.length = Math.min(length - offset, blockSize);
     offset += block.length;
   }
 }
 /**
  * Set the blocks and their location for the file.
  * Must be called after the stream is closed or the block length will be
  * wrong.
  * @param blocks the list of blocks
  */
 public void setBlocks(MockBlock... blocks) {
   file.blocks = blocks;
   int offset = 0;
   int i = 0;
   while (offset < file.length && i < blocks.length) {
     blocks[i].offset = offset;
     blocks[i].length = Math.min(file.length - offset, file.blockSize);
     offset += blocks[i].length;
     i += 1;
   }
 }