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); }
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); }
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); }
public void SettingDataThroughConstructorComputesHash() { var blockData = "Hello!"; var blockDataHash = "19ff7e39d988355c61531c5be566e37f4b6a758d7b3cc96928310d4f950ba634"; var block = new MockBlock(blockData); Assert.IsNotNull(block.Hash); Assert.AreEqual(blockDataHash, block.Hash); }
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()); }
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); }
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); }
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); }
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); }
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); }
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); }
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; } }