public void ClassWithMethods_NotUsingAnyOfClassFields_HasCohesionError()
        {
            var cohesionRule = QualityRules.ClassCohesion;

            var method1     = MockMethod.EmptyMethod("Method1");
            var method2     = MockMethod.EmptyMethod("Method2");
            var classFields = new[] { "field1", "field2" };

            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.IsFalse(isCohesive);
        }
        public void ClassWithMethods_HaveNotUsedCommonClassFields_HasCohesionError()
        {
            var classFields = new[] { "field1", "field2" };

            var cohesionRule = QualityRules.ClassCohesion;

            var method1 = GetMethodWithAccessingToClassFieldsInBlock("Method1", new[] { classFields[0] });
            var method2 = GetMethodWithAccessingToClassFieldsInBlock("Method2", new[] { classFields[1] });

            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.IsFalse(isCohesive);
        }
        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);
        }