22using FineCodeCoverage . Core . Utilities ;
33using FineCodeCoverage . Core . Utilities . VsThreading ;
44using FineCodeCoverage . Editor . DynamicCoverage ;
5+ using FineCodeCoverage . Editor . DynamicCoverage . TrackedLinesImpl . Construction ;
56using FineCodeCoverage . Editor . Roslyn ;
67using FineCodeCoverage . Editor . Tagging . Base ;
78using FineCodeCoverage . Engine . Model ;
@@ -20,6 +21,9 @@ namespace FineCodeCoverageTests.Editor.DynamicCoverage
2021{
2122 class Line : ILine
2223 {
24+ public Line ( int number ) : this ( number , CoverageType . Covered )
25+ {
26+ }
2327 public Line ( int number , CoverageType coverageType )
2428 {
2529 Number = number ;
@@ -52,103 +56,145 @@ public static CodeSpanRange CodeSpanRangeFromLine(ILine line)
5256 return CodeSpanRange . SingleLine ( line . Number - 1 ) ;
5357 }
5458 }
55- internal class ContainingCodeTrackedLinesBuilder_CPP_Tests
59+
60+ internal class ContainingCodeTrackedLinesBuilder_ContentType_No_FileLineCoverageService_Tests
5661 {
5762 [ Test ]
58- public void Should_Create_ContainingCodeTracker_For_Each_Line_When_CPP ( )
63+ public void Should_Create_CoverageLines_ContainingCodeTracker_For_Each_Line ( )
5964 {
60- throw new System . NotImplementedException ( ) ;
61- // var autoMoqer = new AutoMoqer();
62-
63- // var textSnapshot = new Mock<ITextSnapshot>().Object;
64- // var lines = new List<ILine>
65- // {
66- // new Mock<ILine>().Object,
67- // new Mock<ILine>().Object
68- // };
69- // var containingCodeTrackers = new List<IContainingCodeTracker>
70- // {
71- // new Mock<IContainingCodeTracker>().Object,
72- // new Mock<IContainingCodeTracker>().Object
73- // };
74- // var firstLine = lines[0];
75- // var firstCodeSpanRange = TestHelper.CodeSpanRangeFromLine(firstLine);
76- // var secondLine = lines[1];
77- // var secondCodeSpanRange = TestHelper.CodeSpanRangeFromLine(secondLine);
78- // var mockContainingCodeTrackerFactory = autoMoqer.GetMock<ICodeSpanRangeContainingCodeTrackerFactory>();
79- // mockContainingCodeTrackerFactory.Setup(containingCodeTrackerFactory =>
80- // containingCodeTrackerFactory.CreateCoverageLines(textSnapshot, new List<ILine> { firstLine }, firstCodeSpanRange, SpanTrackingMode.EdgeExclusive)
81- // ).Returns(containingCodeTrackers[0]);
82- // mockContainingCodeTrackerFactory.Setup(containingCodeTrackerFactory =>
83- // containingCodeTrackerFactory.CreateCoverageLines(textSnapshot, new List<ILine> { secondLine }, secondCodeSpanRange, SpanTrackingMode.EdgeExclusive)
84- //).Returns(containingCodeTrackers[1]);
85-
86- // var expectedTrackedLines = new TrackedLines(null, null, null);
87- // var mockContainingCodeTrackedLinesFactory = autoMoqer.GetMock<IContainingCodeTrackedLinesFactory>();
88- // mockContainingCodeTrackedLinesFactory.Setup(containingCodeTrackedLinesFactory => containingCodeTrackedLinesFactory.Create(containingCodeTrackers, null, null)
89- // ).Returns(expectedTrackedLines);
90-
91- // var containingCodeTrackedLinesBuilder = autoMoqer.Create<ContainingCodeTrackedLinesBuilder>();
92- // var trackedLines = containingCodeTrackedLinesBuilder.Create(lines, textSnapshot, Language.CPP);
93-
94- // Assert.That(trackedLines, Is.EqualTo(expectedTrackedLines));
95-
96- }
97-
98- [ Test ]
99- public void Should_Use_CPP_Deserialized_When_CodeSpanRange_Within_Total_Lines ( )
100- {
101- throw new System . NotImplementedException ( ) ;
102- //var mockTextSnapshot = new Mock<ITextSnapshot>();
103- //mockTextSnapshot.SetupGet(textSnapshot => textSnapshot.LineCount).Returns(40);
104- //var autoMoqer = new AutoMoqer();
105- //var mockCodeSpanRangeContainingCodeTrackerFactory = autoMoqer.GetMock<ICodeSpanRangeContainingCodeTrackerFactory>();
106- //var coverageLineTracker = new Mock<IContainingCodeTracker>().Object;
107- //mockCodeSpanRangeContainingCodeTrackerFactory.Setup(
108- // codeSpanRangeContainingCodeTrackerFactory => codeSpanRangeContainingCodeTrackerFactory.CreateCoverageLines(
109- // mockTextSnapshot.Object,
110- // new List<ILine> { new Line(1, CoverageType.Covered) },
111- // new CodeSpanRange(10, 20),
112- // SpanTrackingMode.EdgeExclusive
113- // )
114- //).Returns(coverageLineTracker);
115- //var dirtyLineTracker = new Mock<IContainingCodeTracker>().Object;
116- //mockCodeSpanRangeContainingCodeTrackerFactory.Setup(
117- // codeSpanRangeContainingCodeTrackerFactory => codeSpanRangeContainingCodeTrackerFactory.CreateDirty(
118- // mockTextSnapshot.Object,
119- // new CodeSpanRange(25, 30),
120- // SpanTrackingMode.EdgeExclusive
121- // )
122- //).Returns(dirtyLineTracker);
123- //var mockJsonConvertService = autoMoqer.GetMock<IJsonConvertService>();
124- //var serializedState = new SerializedState(new CodeSpanRange(10, 20), ContainingCodeTrackerType.CoverageLines, new List<DynamicLine>
125- //{
126- // new DynamicLine(0, DynamicCoverageType.Covered)
127- //});
128- //var serializedState2 = new SerializedState(new CodeSpanRange(25, 30), ContainingCodeTrackerType.CoverageLines, new List<DynamicLine>
129- //{
130- // new DynamicLine(3, DynamicCoverageType.Dirty)
131- //});
132- //var serializedState3 = new SerializedState(new CodeSpanRange(50, 60), ContainingCodeTrackerType.CoverageLines, new List<DynamicLine>());
133- //mockJsonConvertService.Setup(jsonConvertService => jsonConvertService.DeserializeObject<List<SerializedState>>("serializedState"))
134- // .Returns(new List<SerializedState> { serializedState, serializedState2, serializedState3 });
135-
136- //var expectedTrackedLines = new TrackedLines(null, null, null);
137- //autoMoqer.Setup<IContainingCodeTrackedLinesFactory, TrackedLines>(
138- // containingCodeTrackedLinesFactory => containingCodeTrackedLinesFactory.Create(
139- // new List<IContainingCodeTracker> { coverageLineTracker, dirtyLineTracker },
140- // null,
141- // null
142- // )).Returns(expectedTrackedLines);
143-
144-
145- //var containingCodeTrackedLinesBuilder = autoMoqer.Create<ContainingCodeTrackedLinesBuilder>();
146-
147- //var trackedLines = containingCodeTrackedLinesBuilder.Create("serializedState", mockTextSnapshot.Object, Language.CPP);
148-
149- //Assert.That(expectedTrackedLines, Is.SameAs(trackedLines));
65+ var line1 = new Line ( 1 ) ;
66+ var line2 = new Line ( 2 ) ;
67+
68+ var mockTextSnapshot = new Mock < ITextSnapshot > ( ) ;
69+ mockTextSnapshot . SetupGet ( textSnapshot => textSnapshot . ContentType . TypeName ) . Returns ( "contenttypename" ) ;
70+
71+ var autoMoqer = new AutoMoqer ( ) ;
72+ var mockCodeSpanRangeContainingCodeTrackerFactory = autoMoqer . GetMock < ICodeSpanRangeContainingCodeTrackerFactory > ( ) ;
73+ var containingCodeTracker1 = new Mock < IContainingCodeTracker > ( ) . Object ;
74+ var containingCodeTracker2 = new Mock < IContainingCodeTracker > ( ) . Object ;
75+ mockCodeSpanRangeContainingCodeTrackerFactory . Setup (
76+ codeSpanRangeContainingCodeTrackerFactory => codeSpanRangeContainingCodeTrackerFactory . CreateCoverageLines (
77+ mockTextSnapshot . Object , new List < ILine > { line1 } , TestHelper . CodeSpanRangeFromLine ( line1 ) , SpanTrackingMode . EdgeExclusive )
78+ ) . Returns ( containingCodeTracker1 ) ;
79+ mockCodeSpanRangeContainingCodeTrackerFactory . Setup (
80+ codeSpanRangeContainingCodeTrackerFactory => codeSpanRangeContainingCodeTrackerFactory . CreateCoverageLines (
81+ mockTextSnapshot . Object , new List < ILine > { line2 } , TestHelper . CodeSpanRangeFromLine ( line2 ) , SpanTrackingMode . EdgeExclusive )
82+ ) . Returns ( containingCodeTracker2 ) ;
83+ var mockContainingCodeTrackedLinesFactory = autoMoqer . GetMock < IContainingCodeTrackedLinesFactory > ( ) ;
84+ var trackedLinesFromFactory = new TrackedLines ( null , null , null ) ;
85+
86+ mockContainingCodeTrackedLinesFactory . Setup ( containingCodeTrackedLinesFactory => containingCodeTrackedLinesFactory . Create (
87+ new List < IContainingCodeTracker > { containingCodeTracker1 , containingCodeTracker2 } ,
88+ It . IsAny < INewCodeTracker > ( ) ,
89+ It . IsAny < IFileCodeSpanRangeService > ( )
90+ ) ) . Returns ( trackedLinesFromFactory ) ;
91+ var mockCoverageContentType = new Mock < ICoverageContentType > ( ) ;
92+ mockCoverageContentType . Setup ( coverageContentType => coverageContentType . ContentTypeName ) . Returns ( "contenttypename" ) ;
93+ autoMoqer . SetInstance ( new ICoverageContentType [ ] { mockCoverageContentType . Object } ) ;
94+
95+ var containingCodeTrackedLinesBuilder = autoMoqer . Create < ContainingCodeTrackedLinesBuilder > ( ) ;
96+
97+ var trackedLines = containingCodeTrackedLinesBuilder . Create ( new List < ILine > { line1 , line2 } , mockTextSnapshot . Object ) ;
98+
99+ Assert . That ( trackedLines , Is . SameAs ( trackedLinesFromFactory ) ) ;
150100 }
151101 }
102+
103+ //internal class ContainingCodeTrackedLinesBuilder_CPP_Tests
104+ //{
105+ // [Test]
106+ // public void Should_Create_ContainingCodeTracker_For_Each_Line_When_CPP()
107+ // {
108+ // var autoMoqer = new AutoMoqer();
109+
110+ // var textSnapshot = new Mock<ITextSnapshot>().Object;
111+ // var lines = new List<ILine>
112+ // {
113+ // new Mock<ILine>().Object,
114+ // new Mock<ILine>().Object
115+ // };
116+ // var containingCodeTrackers = new List<IContainingCodeTracker>
117+ // {
118+ // new Mock<IContainingCodeTracker>().Object,
119+ // new Mock<IContainingCodeTracker>().Object
120+ // };
121+ // var firstLine = lines[0];
122+ // var firstCodeSpanRange = TestHelper.CodeSpanRangeFromLine(firstLine);
123+ // var secondLine = lines[1];
124+ // var secondCodeSpanRange = TestHelper.CodeSpanRangeFromLine(secondLine);
125+ // var mockContainingCodeTrackerFactory = autoMoqer.GetMock<ICodeSpanRangeContainingCodeTrackerFactory>();
126+ // mockContainingCodeTrackerFactory.Setup(containingCodeTrackerFactory =>
127+ // containingCodeTrackerFactory.CreateCoverageLines(textSnapshot, new List<ILine> { firstLine }, firstCodeSpanRange, SpanTrackingMode.EdgeExclusive)
128+ // ).Returns(containingCodeTrackers[0]);
129+ // mockContainingCodeTrackerFactory.Setup(containingCodeTrackerFactory =>
130+ // containingCodeTrackerFactory.CreateCoverageLines(textSnapshot, new List<ILine> { secondLine }, secondCodeSpanRange, SpanTrackingMode.EdgeExclusive)
131+ // ).Returns(containingCodeTrackers[1]);
132+
133+ // var expectedTrackedLines = new TrackedLines(null, null, null);
134+ // var mockContainingCodeTrackedLinesFactory = autoMoqer.GetMock<IContainingCodeTrackedLinesFactory>();
135+ // mockContainingCodeTrackedLinesFactory.Setup(containingCodeTrackedLinesFactory => containingCodeTrackedLinesFactory.Create(containingCodeTrackers, null, null)
136+ // ).Returns(expectedTrackedLines);
137+
138+ // var containingCodeTrackedLinesBuilder = autoMoqer.Create<ContainingCodeTrackedLinesBuilder>();
139+ // var trackedLines = containingCodeTrackedLinesBuilder.Create(lines, textSnapshot, Language.CPP);
140+
141+ // Assert.That(trackedLines, Is.EqualTo(expectedTrackedLines));
142+
143+ // }
144+
145+ // [Test]
146+ // public void Should_Use_CPP_Deserialized_When_CodeSpanRange_Within_Total_Lines()
147+ // {
148+ // //var mockTextSnapshot = new Mock<ITextSnapshot>();
149+ // //mockTextSnapshot.SetupGet(textSnapshot => textSnapshot.LineCount).Returns(40);
150+ // //var autoMoqer = new AutoMoqer();
151+ // //var mockCodeSpanRangeContainingCodeTrackerFactory = autoMoqer.GetMock<ICodeSpanRangeContainingCodeTrackerFactory>();
152+ // //var coverageLineTracker = new Mock<IContainingCodeTracker>().Object;
153+ // //mockCodeSpanRangeContainingCodeTrackerFactory.Setup(
154+ // // codeSpanRangeContainingCodeTrackerFactory => codeSpanRangeContainingCodeTrackerFactory.CreateCoverageLines(
155+ // // mockTextSnapshot.Object,
156+ // // new List<ILine> { new Line(1, CoverageType.Covered) },
157+ // // new CodeSpanRange(10, 20),
158+ // // SpanTrackingMode.EdgeExclusive
159+ // // )
160+ // //).Returns(coverageLineTracker);
161+ // //var dirtyLineTracker = new Mock<IContainingCodeTracker>().Object;
162+ // //mockCodeSpanRangeContainingCodeTrackerFactory.Setup(
163+ // // codeSpanRangeContainingCodeTrackerFactory => codeSpanRangeContainingCodeTrackerFactory.CreateDirty(
164+ // // mockTextSnapshot.Object,
165+ // // new CodeSpanRange(25, 30),
166+ // // SpanTrackingMode.EdgeExclusive
167+ // // )
168+ // //).Returns(dirtyLineTracker);
169+ // //var mockJsonConvertService = autoMoqer.GetMock<IJsonConvertService>();
170+ // //var serializedState = new SerializedState(new CodeSpanRange(10, 20), ContainingCodeTrackerType.CoverageLines, new List<DynamicLine>
171+ // //{
172+ // // new DynamicLine(0, DynamicCoverageType.Covered)
173+ // //});
174+ // //var serializedState2 = new SerializedState(new CodeSpanRange(25, 30), ContainingCodeTrackerType.CoverageLines, new List<DynamicLine>
175+ // //{
176+ // // new DynamicLine(3, DynamicCoverageType.Dirty)
177+ // //});
178+ // //var serializedState3 = new SerializedState(new CodeSpanRange(50, 60), ContainingCodeTrackerType.CoverageLines, new List<DynamicLine>());
179+ // //mockJsonConvertService.Setup(jsonConvertService => jsonConvertService.DeserializeObject<List<SerializedState>>("serializedState"))
180+ // // .Returns(new List<SerializedState> { serializedState, serializedState2, serializedState3 });
181+
182+ // //var expectedTrackedLines = new TrackedLines(null, null, null);
183+ // //autoMoqer.Setup<IContainingCodeTrackedLinesFactory, TrackedLines>(
184+ // // containingCodeTrackedLinesFactory => containingCodeTrackedLinesFactory.Create(
185+ // // new List<IContainingCodeTracker> { coverageLineTracker, dirtyLineTracker },
186+ // // null,
187+ // // null
188+ // // )).Returns(expectedTrackedLines);
189+
190+
191+ // //var containingCodeTrackedLinesBuilder = autoMoqer.Create<ContainingCodeTrackedLinesBuilder>();
192+
193+ // //var trackedLines = containingCodeTrackedLinesBuilder.Create("serializedState", mockTextSnapshot.Object, Language.CPP);
194+
195+ // //Assert.That(expectedTrackedLines, Is.SameAs(trackedLines));
196+ // }
197+ //}
152198
153199// [TestFixture(true)]
154200// [TestFixture(false)]
0 commit comments