Beispiel #1
0
        public override bool Equals(object obj)
        {
            LineMapping other = obj as LineMapping;

            return(DocumentLocation.Equals(other.DocumentLocation) &&
                   GeneratedLocation.Equals(other.GeneratedLocation));
        }
Beispiel #2
0
 private void AssertNotEqual(LineMapping left, LineMapping right)
 {
     Assert.False(left == right);
     Assert.False(left.Equals(right));
     Assert.False(right.Equals(left));
     Assert.False(Equals(left, right));
 }
Beispiel #3
0
        public void WriterConstructedWithoutContentLengthAndSourceFile_AddsLinePragmas_OnDispose()
        {
            // Arrange
            var location = new SourceLocation(10, 1, 20);
            var expected = string.Join(Environment.NewLine,
                                       @"#line 2 ""myfile""",
                                       "Hello world",
                                       "",
                                       "#line default",
                                       "#line hidden",
                                       "");
            var expectedMappings = new LineMapping(
                new MappingLocation(location, 30),
                new MappingLocation(new SourceLocation(18, 1, 0), 11));
            var writer = new CSharpCodeWriter();

            // Act
            using (var mappingWriter = new CSharpLineMappingWriter(writer, location, "myfile"))
            {
                writer.Write("Hello world");
            }

            // Assert
            Assert.Equal(expected, writer.GenerateCode());
            Assert.Empty(writer.LineMappingManager.Mappings);
        }
        public void WriterConstructedWithoutContentLengthAndSourceFile_AddsLinePragmas_OnDispose()
        {
            // Arrange
            var location = new SourceLocation(10, 1, 20);
            var expected = string.Join(Environment.NewLine,
                                       @"#line 2 ""myfile""",
                                       "Hello world",
                                       "",
                                       "#line default",
                                       "#line hidden",
                                       "");
            var expectedMappings = new LineMapping(
                                new MappingLocation(location, 30),
                                new MappingLocation(new SourceLocation(18, 1, 0), 11));
            var writer = new CSharpCodeWriter();

            // Act
            using (var mappingWriter = new CSharpLineMappingWriter(writer, location, "myfile"))
            {
                writer.Write("Hello world");
            }

            // Assert
            Assert.Equal(expected, writer.GenerateCode());
            Assert.Empty(writer.LineMappingManager.Mappings);
        }
Beispiel #5
0
        private async void UpdateResults()
        {
            if (TryInitilaizeDocument())
            {
                var isModified = _textDocument.LastContentModifiedTime > _editorContext.LastBuildTime.ToUniversalTime();
                _resultMapping = new LineMapping(_textView.TextSnapshot.LineCount, isModified);
                _fileResults   = await _resultProvider.GetFileResultsAsync(_textDocument.FilePath);

                UpdateAllLines();
            }
        }
Beispiel #6
0
        public void GeneratedCodeMappingsAreNotEqualIfStartLineIsNotEqual()
        {
            // Arrange
            var left = new LineMapping(
                new MappingLocation(new SourceLocation(1, 2, 3), 4),
                new MappingLocation(new SourceLocation(5, 5, 7), 8)
                );
            var right = new LineMapping(
                new MappingLocation(new SourceLocation(1, 1, 3), 4),
                new MappingLocation(new SourceLocation(5, 6, 7), 8)
                );

            // Assert
            AssertNotEqual(left, right);
        }
Beispiel #7
0
        public void GeneratedCodeMappingsAreEqualIfDataIsEqual()
        {
            // Arrange
            var left = new LineMapping(
                new MappingLocation(new SourceLocation(1, 2, 3), 4),
                new MappingLocation(new SourceLocation(5, 6, 7), 8)
                );
            var right = new LineMapping(
                new MappingLocation(new SourceLocation(1, 2, 3), 4),
                new MappingLocation(new SourceLocation(5, 6, 7), 8)
                );

            // Assert
            Assert.True(left == right);
            Assert.True(left.Equals(right));
            Assert.True(right.Equals(left));
            Assert.True(Equals(left, right));
        }
        private async void UpdateCoverage()
        {
            try
            {
                if (TryInitilaizeDocument())
                {
                    var isModified = _textDocument.LastContentModifiedTime > _editorContext.LastBuildTime.ToUniversalTime();
                    _coverageMapping = new LineMapping(_textView.TextSnapshot.LineCount, isModified);
                    _fileCoverage    = await _coverageProvider.GetFileCoverageAsync(_textDocument.FilePath);

                    UpdateAllLines();
                }
            }
            catch (Exception e)
            {
                await _telemetryManager.UploadExceptionAsync(e);
            }
        }
        public void WriterConstructedWithContentLength_AddsLineMappings_OnDispose()
        {
            // Arrange
            var location = new SourceLocation(10, 15, 20);
            var expected = new LineMapping(
                                new MappingLocation(location, 30),
                                new MappingLocation(new SourceLocation(0, 0, 0), 11));
            var writer = new CSharpCodeWriter();

            // Act
            using (var mappingWriter = new CSharpLineMappingWriter(writer, location, 30))
            {
                writer.Write("Hello world");
            }

            // Assert
            Assert.Equal("Hello world", writer.GenerateCode());
            var mapping = Assert.Single(writer.LineMappingManager.Mappings);
            Assert.Equal(expected, mapping);
        }
Beispiel #10
0
        public void WriterConstructedWithContentLength_AddsLineMappings_OnDispose()
        {
            // Arrange
            var location = new SourceLocation(10, 15, 20);
            var expected = new LineMapping(
                new MappingLocation(location, 30),
                new MappingLocation(new SourceLocation(0, 0, 0), 11));
            var writer = new CSharpCodeWriter();

            // Act
            using (var mappingWriter = new CSharpLineMappingWriter(writer, location, 30))
            {
                writer.Write("Hello world");
            }

            // Assert
            Assert.Equal("Hello world", writer.GenerateCode());
            var mapping = Assert.Single(writer.LineMappingManager.Mappings);

            Assert.Equal(expected, mapping);
        }
        public void Equality()
        {
            var lineMappings = new LineMapping[]
            {
                new LineMapping(new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), null, new FileLinePositionSpan("", new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), hasMappedPath: false)),
                new LineMapping(new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), null, new FileLinePositionSpan("", new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), hasMappedPath: true)),
                new LineMapping(new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), null, new FileLinePositionSpan("", new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 2)), hasMappedPath: false)),
                new LineMapping(new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), null, new FileLinePositionSpan("", new LinePositionSpan(new LinePosition(0, 0), new LinePosition(2, 2)), hasMappedPath: false)),
                new LineMapping(new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), null, new FileLinePositionSpan("", new LinePositionSpan(new LinePosition(0, 1), new LinePosition(1, 1)), hasMappedPath: false)),
                new LineMapping(new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), null, new FileLinePositionSpan("", new LinePositionSpan(new LinePosition(1, 0), new LinePosition(1, 1)), hasMappedPath: false)),
                new LineMapping(new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), null, new FileLinePositionSpan("file.cs", new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), hasMappedPath: false)),
                new LineMapping(new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), 0, new FileLinePositionSpan("", new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), hasMappedPath: false)),
                new LineMapping(new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 2)), null, new FileLinePositionSpan("", new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), hasMappedPath: false)),
                new LineMapping(new LinePositionSpan(new LinePosition(0, 0), new LinePosition(2, 2)), null, new FileLinePositionSpan("", new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), hasMappedPath: false)),
                new LineMapping(new LinePositionSpan(new LinePosition(0, 1), new LinePosition(1, 1)), null, new FileLinePositionSpan("", new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), hasMappedPath: false)),
                new LineMapping(new LinePositionSpan(new LinePosition(1, 0), new LinePosition(1, 1)), null, new FileLinePositionSpan("", new LinePositionSpan(new LinePosition(0, 0), new LinePosition(1, 1)), hasMappedPath: false)),
            };
            var equalityUnits = lineMappings.SelectMany((left, leftIndex) => lineMappings.Select((right, rightIndex) => CreateEqualityUnit(left, leftIndex, right, rightIndex))).ToArray();

            EqualityUtil.RunAll(
                (left, right) => left == right,
                (left, right) => left != right,
                equalityUnits);
            static EqualityUnit <LineMapping> CreateEqualityUnit(LineMapping left, int leftIndex, LineMapping right, int rightIndex)
            {
                var leftUnit = EqualityUnit.Create(left);

                return((leftIndex == rightIndex) ? leftUnit.WithEqualValues(right) : leftUnit.WithNotEqualValues(right));
            }
Beispiel #13
0
        private void UpdateAnchors()
        {
            if (!TryInitilaizeDocument() || _testSolution == null)
            {
                return;
            }

            var projectItem = _editorContext
                              .Solution
                              .FindProjectItem(_textDocument.FilePath);

            if (projectItem == null || projectItem.ContainingProject == null || projectItem.FileCodeModel == null)
            {
                return;
            }

            var projectModel = projectItem.ContainingProject;
            var testProject  = _testSolution.Children.FirstOrDefault(p => p.CodeItem.Name == projectModel.Name);

            if (testProject == null)
            {
                return;
            }

            var testAnchors = new Dictionary <int, TestItemViewModel>();
            var classModels = projectItem.FileCodeModel.CodeElements.GetClasses();

            foreach (var classModel in classModels)
            {
                var path   = classModel.FullName.Split('.');
                var target = testProject;
                foreach (var segment in path)
                {
                    target = target.Children.FirstOrDefault(p => p.CodeItem.Name == segment);
                    if (target == null)
                    {
                        break;
                    }
                }

                if (target == null || target.CodeItem.Kind != CodeItemKind.Class)
                {
                    continue;
                }

                var methodModels = classModel.GetMethods();
                var testMethods  = target.Children;
                foreach (var testMehod in testMethods)
                {
                    var methodModel = methodModels.FirstOrDefault(p => p.Name == testMehod.CodeItem.Name);
                    if (methodModel == null)
                    {
                        continue;
                    }

                    testAnchors[methodModel.StartPoint.Line - 1] = testMehod;
                }
            }
            _testAnchors       = testAnchors;
            _testAnchorMapping = new LineMapping(_textView.TextSnapshot.LineCount);
            UpdateAllLines();
        }