//[Fact] public void CheckDesignConstraintsOfQueryMyDesign() { var sut = new TypeDependencyStructureMatrix(new[] { typeof(CecilExtensions).Assembly }); var problematicTypes = from t in sut.DefinedMembers let distanceFromMainSequence = sut.GetDistanceFromMainSequence(t) where distanceFromMainSequence > 0.5 && !t.Namespace.StartsWith("System.Diagnostics.Contracts") && !t.Namespace.Contains("JetBrains") orderby distanceFromMainSequence descending select new {t, Pain = sut.GetAmountOfPain(t), Uselesness = sut.GetUselesness(t), I = sut.GetInstability(t), A = sut.GetAbstractness(t)}; problematicTypes.Each(Console.WriteLine); Assert.Empty(problematicTypes); }
public void DsmCanCalculateTypesDistanceFromMainSequence() { var sut = new TypeDependencyStructureMatrix(new[] { typeof(A.A1).Assembly }); double aDistance = sut.GetDistanceFromMainSequence<A.A1>(); Assert.Equal(0, aDistance); double fDistance = sut.GetDistanceFromMainSequence<F>(); Assert.Equal(0.5, fDistance); double gDistance = sut.GetDistanceFromMainSequence<G>(); Assert.Equal(0.0, gDistance); var tenWorstTypes = (from t in sut.DefinedMembers let distanceFromMainSequence = sut.GetDistanceFromMainSequence(t) where t.DeclaringType == null orderby distanceFromMainSequence descending select new { t, distanceFromMainSequence, A=sut.GetAbstractness(t), I=sut.GetInstability(t) }).Take(10); tenWorstTypes.Each(t => Console.WriteLine(t.t + "\t: " + t.distanceFromMainSequence + "(A=" + t.A + ", I=" + t.I + ")")); }
public void DsmCanCalculateTypeInstabilityForIsolatedType() { var sut = new TypeDependencyStructureMatrix(new[] { typeof(A.A1).Assembly }); double instability = sut.GetInstability<DontUseMe>(); Assert.Equal(0, instability); }
public void DsmCanCalculateTypeInstability() { var sut = new TypeDependencyStructureMatrix(new[] { typeof(A.A1).Assembly }); double aInstability = sut.GetInstability<A.A1>(); Assert.Equal(1, aInstability); double eInstability = sut.GetInstability<E>(); Assert.Equal(0, eInstability); }
public void DsmCanCalculateTypeAbstractnessForEmptyType() { var sut = new TypeDependencyStructureMatrix(new[] { typeof(A.A1).Assembly }); double abstractness = sut.GetAbstractness<DontUseMe>(); Assert.Equal(1.0, abstractness); }
public void DsmCanCalculateTypeAbstractness() { var sut = new TypeDependencyStructureMatrix(new[] { typeof(A.A1).Assembly }); double aAbstractness = sut.GetAbstractness<A.A1>(); Assert.Equal(0, aAbstractness); double fAbstractness = sut.GetAbstractness<F>(); Assert.Equal(0.5, fAbstractness); double gAbstractness = sut.GetAbstractness<G>(); Assert.Equal(1.0, gAbstractness); }
public void DsmCanCalculateAmountOfPainAndUselesnessOfAUselessType() { // Arrange var sut = new TypeDependencyStructureMatrix(new[] { typeof(A.A1).Assembly }); // Act double pain = sut.GetAmountOfPain<UselessType>(); double uselessNess = sut.GetUselesness<UselessType>(); // Assert Assert.Equal(0, pain); Assert.Equal(1, uselessNess); }