示例#1
0
        public void ModelVisitor_GeneratesLineMappingsForLastModel_WhenMultipleModelsArePresent()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            var host         = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            };

            host.NamespaceImports.Clear();
            var inputFile    = "TestFiles/Input/MultipleModels.cshtml";
            var outputFile   = "TestFiles/Output/DesignTime/MultipleModels.cs";
            var expectedCode = ResourceFile.ReadResource(_assembly, outputFile, sourceFile: false);

            // Act
            GeneratorResults results;

            using (var stream = ResourceFile.GetResourceStream(_assembly, inputFile, sourceFile: true))
            {
                results = host.GenerateCode(inputFile, stream);
            }

            // Assert
            Assert.False(results.Success);
            var parserError = Assert.Single(results.ParserErrors);

            Assert.Equal("Only one 'model' statement is allowed in a file.", parserError.Message);
#if GENERATE_BASELINES
            ResourceFile.UpdateFile(_assembly, outputFile, expectedCode, results.GeneratedCode);
#else
            Assert.Equal(expectedCode, results.GeneratedCode, ignoreLineEndingDifferences: true);
#endif
        }
示例#2
0
        public void BasicVisitor_GeneratesCorrectLineMappings()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            };

            host.NamespaceImports.Clear();
            var expectedLineMappings = new[]
            {
                BuildLineMapping(
                    documentAbsoluteIndex: 13,
                    documentLineIndex: 0,
                    documentCharacterIndex: 13,
                    generatedAbsoluteIndex: 1499,
                    generatedLineIndex: 34,
                    generatedCharacterIndex: 13,
                    contentLength: 4),
                BuildLineMapping(
                    documentAbsoluteIndex: 43,
                    documentLineIndex: 2,
                    documentCharacterIndex: 5,
                    generatedAbsoluteIndex: 1583,
                    generatedLineIndex: 39,
                    generatedCharacterIndex: 6,
                    contentLength: 21),
            };

            // Act and Assert
            RunDesignTimeTest(host, "Basic", expectedLineMappings);
        }
示例#3
0
        public void MvcRazorHost_GeneratesCorrectLineMappingsAndUsingStatementsForViewImports()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            var host         = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            };

            host.NamespaceImports.Clear();
            var expectedLineMappings = new[]
            {
                BuildLineMapping(
                    documentAbsoluteIndex: 8,
                    documentLineIndex: 0,
                    documentCharacterIndex: 8,
                    generatedAbsoluteIndex: 661,
                    generatedLineIndex: 21,
                    generatedCharacterIndex: 8,
                    contentLength: 26),
            };

            // Act and Assert
            RunDesignTimeTest(host, "_ViewImports", expectedLineMappings);
        }
示例#4
0
        public void ModelVisitor_GeneratesCorrectLineMappings()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            var host         = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            };

            host.NamespaceImports.Clear();
            var expectedLineMappings = new[]
            {
                BuildLineMapping(
                    documentAbsoluteIndex: 7,
                    documentLineIndex: 0,
                    documentCharacterIndex: 7,
                    generatedAbsoluteIndex: 394,
                    generatedLineIndex: 11,
                    generatedCharacterIndex: 28,
                    contentLength: 30),
            };

            // Act and Assert
            RunDesignTimeTest(host, "Model", expectedLineMappings);
        }
示例#5
0
        public void BasicVisitor_GeneratesCorrectLineMappings()
        {
            // Arrange
            var fileProvider = new TestFileProvider();

            using (var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            })
            {
                host.NamespaceImports.Clear();
                var expectedLineMappings = new[]
                {
                    BuildLineMapping(
                        documentAbsoluteIndex: 13,
                        documentLineIndex: 0,
                        documentCharacterIndex: 13,
                        generatedAbsoluteIndex: 1492,
                        generatedLineIndex: 34,
                        generatedCharacterIndex: 13,
                        contentLength: 4),
                    BuildLineMapping(
                        documentAbsoluteIndex: 43,
                        documentLineIndex: 2,
                        documentCharacterIndex: 5,
                        generatedAbsoluteIndex: 1576,
                        generatedLineIndex: 39,
                        generatedCharacterIndex: 6,
                        contentLength: 21),
                };

                // Act and Assert
                RunDesignTimeTest(host, "Basic", expectedLineMappings);
            }
        }
示例#6
0
        public void InjectVisitorWithSemicolon_GeneratesCorrectLineMappings()
        {
            // Arrange
            var fileProvider = new TestFileProvider();

            using (var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            })
            {
                host.NamespaceImports.Clear();
                var expectedLineMappings = new[]
                {
                    BuildLineMapping(
                        documentAbsoluteIndex: 7,
                        documentLineIndex: 0,
                        documentCharacterIndex: 7,
                        generatedAbsoluteIndex: 398,
                        generatedLineIndex: 11,
                        generatedCharacterIndex: 28,
                        contentLength: 7),
                    BuildLineMapping(
                        documentAbsoluteIndex: 24,
                        documentLineIndex: 1,
                        documentCharacterIndex: 8,
                        generatedAbsoluteIndex: 769,
                        generatedLineIndex: 25,
                        generatedCharacterIndex: 8,
                        contentLength: 20),
                    BuildLineMapping(
                        documentAbsoluteIndex: 58,
                        documentLineIndex: 2,
                        documentCharacterIndex: 8,
                        generatedAbsoluteIndex: 1003,
                        generatedLineIndex: 33,
                        generatedCharacterIndex: 8,
                        contentLength: 23),
                    BuildLineMapping(
                        documentAbsoluteIndex: 93,
                        documentLineIndex: 3,
                        documentCharacterIndex: 8,
                        generatedAbsoluteIndex: 1240,
                        generatedLineIndex: 41,
                        generatedCharacterIndex: 8,
                        contentLength: 21),
                    BuildLineMapping(
                        documentAbsoluteIndex: 129,
                        documentLineIndex: 4,
                        documentCharacterIndex: 8,
                        generatedAbsoluteIndex: 1475,
                        generatedLineIndex: 49,
                        generatedCharacterIndex: 8,
                        contentLength: 24),
                };

                // Act and Assert
                RunDesignTimeTest(host, "InjectWithSemicolon", expectedLineMappings);
            }
        }
示例#7
0
        public void MvcRazorHost_GeneratesTagHelperModelExpressionCode_DesignTime()
        {
            // Arrange
            var fileProvider = new TestFileProvider();

            using (var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            })
            {
                var expectedLineMappings = new[]
                {
                    BuildLineMapping(
                        documentAbsoluteIndex: 33,
                        documentLineIndex: 2,
                        documentCharacterIndex: 14,
                        generatedAbsoluteIndex: 647,
                        generatedLineIndex: 17,
                        generatedCharacterIndex: 48,
                        contentLength: 91),
                    BuildLineMapping(
                        documentAbsoluteIndex: 7,
                        documentLineIndex: 0,
                        documentCharacterIndex: 7,
                        generatedAbsoluteIndex: 829,
                        generatedLineIndex: 19,
                        generatedCharacterIndex: 28,
                        contentLength: 8),
                    BuildLineMapping(
                        documentAbsoluteIndex: 145,
                        documentLineIndex: 4,
                        documentCharacterIndex: 17,
                        generatedAbsoluteIndex: 2523,
                        generatedLineIndex: 50,
                        generatedCharacterIndex: 133,
                        contentLength: 3),
                    BuildLineMapping(
                        documentAbsoluteIndex: 172,
                        documentLineIndex: 5,
                        documentCharacterIndex: 18,
                        generatedAbsoluteIndex: 2890,
                        generatedLineIndex: 56,
                        generatedCharacterIndex: 125,
                        contentLength: 5),
                };

                // Act and Assert
                RunDesignTimeTest(
                    host,
                    testName: "ModelExpressionTagHelper",
                    expectedLineMappings: expectedLineMappings);
            }
        }
示例#8
0
        public void MvcRazorHost_GeneratesTagHelperModelExpressionCode_DesignTime()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            var host         = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            };
            var expectedLineMappings = new List <LineMapping>
            {
                BuildLineMapping(
                    documentAbsoluteIndex: 7,
                    documentLineIndex: 0,
                    documentCharacterIndex: 7,
                    generatedAbsoluteIndex: 432,
                    generatedLineIndex: 12,
                    generatedCharacterIndex: 7,
                    contentLength: 8),
                BuildLineMapping(
                    documentAbsoluteIndex: 31,
                    documentLineIndex: 2,
                    documentCharacterIndex: 14,
                    generatedAbsoluteIndex: 798,
                    generatedLineIndex: 25,
                    generatedCharacterIndex: 14,
                    contentLength: 85),
                BuildLineMapping(
                    documentAbsoluteIndex: 135,
                    documentLineIndex: 4,
                    documentCharacterIndex: 17,
                    generatedAbsoluteIndex: 2258,
                    generatedLineIndex: 55,
                    generatedCharacterIndex: 95,
                    contentLength: 3),
                BuildLineMapping(
                    documentAbsoluteIndex: 161,
                    documentLineIndex: 5,
                    documentCharacterIndex: 18,
                    generatedAbsoluteIndex: 2565,
                    generatedLineIndex: 61,
                    generatedCharacterIndex: 87,
                    contentLength: 5),
            };

            // Act and Assert
            RunDesignTimeTest(host,
                              testName: "ModelExpressionTagHelper",
                              expectedLineMappings: expectedLineMappings);
        }
示例#9
0
        public void ModelVisitor_GeneratesCorrectLineMappings()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            var host         = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            };

            host.NamespaceImports.Clear();
            var expectedLineMappings = new[]
            {
                BuildLineMapping(7, 0, 7, 188, 6, 7, 30),
            };

            // Act and Assert
            RunDesignTimeTest(host, "Model", expectedLineMappings);
        }
示例#10
0
        public void ModelVisitor_GeneratesLineMappingsForLastModel_WhenMultipleModelsArePresent()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            using (var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            })
            {
                host.NamespaceImports.Clear();
                var inputFile = "TestFiles/Input/MultipleModels.cshtml";
                var outputFile = "TestFiles/Output/DesignTime/MultipleModels.cs";
                var expectedCode = ResourceFile.ReadResource(_assembly, outputFile, sourceFile: false);

                // Act
                GeneratorResults results;
                using (var stream = ResourceFile.GetResourceStream(_assembly, inputFile, sourceFile: true))
                {
                    results = host.GenerateCode(inputFile, stream);
                }

                // Assert
                Assert.False(results.Success);
                var parserError = Assert.Single(results.ParserErrors);
                Assert.Equal("Only one 'model' statement is allowed in a file.", parserError.Message);
#if GENERATE_BASELINES
                ResourceFile.UpdateFile(_assembly, outputFile, expectedCode, results.GeneratedCode);
#else
                Assert.Equal(expectedCode, results.GeneratedCode, ignoreLineEndingDifferences: true);
#endif
            }
        }
示例#11
0
        public void ModelVisitor_GeneratesCorrectLineMappings()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            using (var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            })
            {
                host.NamespaceImports.Clear();
                var expectedLineMappings = new[]
                {
                BuildLineMapping(
                    documentAbsoluteIndex: 7,
                    documentLineIndex: 0,
                    documentCharacterIndex: 7,
                    generatedAbsoluteIndex: 394,
                    generatedLineIndex: 11,
                    generatedCharacterIndex: 28,
                    contentLength: 30),
                };

                // Act and Assert
                RunDesignTimeTest(host, "Model", expectedLineMappings);
            }
        }
示例#12
0
        public void InjectVisitorWithSemicolon_GeneratesCorrectLineMappings()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            using (var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            })
            {
                host.NamespaceImports.Clear();
                var expectedLineMappings = new[]
                {
                BuildLineMapping(
                    documentAbsoluteIndex: 7,
                    documentLineIndex: 0,
                    documentCharacterIndex: 7,
                    generatedAbsoluteIndex: 399,
                    generatedLineIndex: 11,
                    generatedCharacterIndex: 28,
                    contentLength: 7),
                BuildLineMapping(
                    documentAbsoluteIndex: 24,
                    documentLineIndex: 1,
                    documentCharacterIndex: 8,
                    generatedAbsoluteIndex: 771,
                    generatedLineIndex: 25,
                    generatedCharacterIndex: 8,
                    contentLength: 20),
                BuildLineMapping(
                    documentAbsoluteIndex: 58,
                    documentLineIndex: 2,
                    documentCharacterIndex: 8,
                    generatedAbsoluteIndex: 1001,
                    generatedLineIndex: 33,
                    generatedCharacterIndex: 8,
                    contentLength: 23),
                BuildLineMapping(
                    documentAbsoluteIndex: 93,
                    documentLineIndex: 3,
                    documentCharacterIndex: 8,
                    generatedAbsoluteIndex: 1234,
                    generatedLineIndex: 41,
                    generatedCharacterIndex: 8,
                    contentLength: 21),
                BuildLineMapping(
                    documentAbsoluteIndex: 129,
                    documentLineIndex: 4,
                    documentCharacterIndex: 8,
                    generatedAbsoluteIndex: 1465,
                    generatedLineIndex: 49,
                    generatedCharacterIndex: 8,
                    contentLength: 24),
                };

                // Act and Assert
                RunDesignTimeTest(host, "InjectWithSemicolon", expectedLineMappings);
            }
        }
示例#13
0
        public void MvcRazorHost_GeneratesCorrectLineMappingsAndUsingStatementsForViewImports()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            using (var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            })
            {
                host.NamespaceImports.Clear();
                var expectedLineMappings = new[]
                {
                BuildLineMapping(
                    documentAbsoluteIndex: 8,
                    documentLineIndex: 0,
                    documentCharacterIndex: 8,
                    generatedAbsoluteIndex: 661,
                    generatedLineIndex: 21,
                    generatedCharacterIndex: 8,
                    contentLength: 26),
                };

                // Act and Assert
                RunDesignTimeTest(host, "_ViewImports", expectedLineMappings);
            }
        }
示例#14
0
        public void MvcRazorHost_GeneratesTagHelperModelExpressionCode_DesignTime()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            using (var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            })
            {
                var expectedLineMappings = new[]
                {
                BuildLineMapping(
                    documentAbsoluteIndex: 33,
                    documentLineIndex: 2,
                    documentCharacterIndex: 14,
                    generatedAbsoluteIndex: 590,
                    generatedLineIndex: 16,
                    generatedCharacterIndex: 48,
                    contentLength: 83),
                BuildLineMapping(
                    documentAbsoluteIndex: 7,
                    documentLineIndex: 0,
                    documentCharacterIndex: 7,
                    generatedAbsoluteIndex: 764,
                    generatedLineIndex: 18,
                    generatedCharacterIndex: 28,
                    contentLength: 8),
                BuildLineMapping(
                    documentAbsoluteIndex: 137,
                    documentLineIndex: 4,
                    documentCharacterIndex: 17,
                    generatedAbsoluteIndex: 2180,
                    generatedLineIndex: 47,
                    generatedCharacterIndex: 95,
                    contentLength: 3),
                BuildLineMapping(
                    documentAbsoluteIndex: 164,
                    documentLineIndex: 5,
                    documentCharacterIndex: 18,
                    generatedAbsoluteIndex: 2501,
                    generatedLineIndex: 53,
                    generatedCharacterIndex: 87,
                    contentLength: 5),
                };

                // Act and Assert
                RunDesignTimeTest(
                    host,
                    testName: "ModelExpressionTagHelper",
                    expectedLineMappings: expectedLineMappings);
            }
        }
示例#15
0
        public void MvcRazorHost_GeneratesTagHelperModelExpressionCode_DesignTime()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            };
            var expectedLineMappings = new List<LineMapping>
            {
                BuildLineMapping(
                    documentAbsoluteIndex: 7,
                    documentLineIndex: 0,
                    documentCharacterIndex: 7,
                    generatedAbsoluteIndex: 432,
                    generatedLineIndex: 12,
                    generatedCharacterIndex: 7,
                    contentLength: 8),
                BuildLineMapping(
                    documentAbsoluteIndex: 31,
                    documentLineIndex: 2,
                    documentCharacterIndex: 14,
                    generatedAbsoluteIndex: 798,
                    generatedLineIndex: 25,
                    generatedCharacterIndex: 14,
                    contentLength: 85),
                BuildLineMapping(
                    documentAbsoluteIndex: 135,
                    documentLineIndex: 4,
                    documentCharacterIndex: 17,
                    generatedAbsoluteIndex: 2258,
                    generatedLineIndex: 55,
                    generatedCharacterIndex: 95,
                    contentLength: 3),
                BuildLineMapping(
                    documentAbsoluteIndex: 161,
                    documentLineIndex: 5,
                    documentCharacterIndex: 18,
                    generatedAbsoluteIndex: 2565,
                    generatedLineIndex: 61,
                    generatedCharacterIndex: 87,
                    contentLength: 5),
            };

            // Act and Assert
            RunDesignTimeTest(host,
                              testName: "ModelExpressionTagHelper",
                              expectedLineMappings: expectedLineMappings);
        }
示例#16
0
        public void ModelVisitor_GeneratesCorrectLineMappings()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            };
            host.NamespaceImports.Clear();
            var expectedLineMappings = new[]
            {
                BuildLineMapping(7, 0, 7, 194, 6, 7, 30),
            };

            // Act and Assert
            RunDesignTimeTest(host, "Model", expectedLineMappings);
        }
示例#17
0
        public void InjectVisitorWithModel_GeneratesCorrectLineMappings()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            var host = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            };
            host.NamespaceImports.Clear();
            var expectedLineMappings = new[]
            {
                BuildLineMapping(
                    documentAbsoluteIndex: 7,
                    documentLineIndex: 0,
                    documentCharacterIndex: 7,
                    generatedAbsoluteIndex: 214,
                    generatedLineIndex: 6,
                    generatedCharacterIndex: 7,
                    contentLength: 7),
                BuildLineMapping(
                    documentAbsoluteIndex: 24,
                    documentLineIndex: 1,
                    documentCharacterIndex: 8,
                    generatedAbsoluteIndex: 731,
                    generatedLineIndex: 26,
                    generatedCharacterIndex: 8,
                    contentLength: 20),
                BuildLineMapping(
                    documentAbsoluteIndex: 54,
                    documentLineIndex: 2,
                    documentCharacterIndex: 8,
                    generatedAbsoluteIndex: 957,
                    generatedLineIndex: 34,
                    generatedCharacterIndex: 8,
                    contentLength: 23),
            };

            // Act and Assert
            RunDesignTimeTest(host, "InjectWithModel", expectedLineMappings);
        }
示例#18
0
        public void MvcRazorHost_GeneratesTagHelperModelExpressionCode_DesignTime()
        {
            // Arrange
            var fileProvider = new TestFileProvider();
            var host         = new MvcRazorHostWithNormalizedNewLine(new DefaultChunkTreeCache(fileProvider))
            {
                DesignTimeMode = true
            };

            var expectedLineMappings = new[]
            {
                BuildLineMapping(
                    documentAbsoluteIndex: 33,
                    documentLineIndex: 2,
                    documentCharacterIndex: 14,
                    generatedAbsoluteIndex: 654,
                    generatedLineIndex: 17,
                    generatedCharacterIndex: 48,
                    contentLength: 91),
                BuildLineMapping(
                    documentAbsoluteIndex: 140,
                    documentLineIndex: 3,
                    documentCharacterIndex: 14,
                    generatedAbsoluteIndex: 797,
                    generatedLineIndex: 18,
                    generatedCharacterIndex: 48,
                    contentLength: 102),
                BuildLineMapping(
                    documentAbsoluteIndex: 7,
                    documentLineIndex: 0,
                    documentCharacterIndex: 7,
                    generatedAbsoluteIndex: 990,
                    generatedLineIndex: 20,
                    generatedCharacterIndex: 28,
                    contentLength: 8),
                BuildLineMapping(
                    documentAbsoluteIndex: 263,
                    documentLineIndex: 5,
                    documentCharacterIndex: 17,
                    generatedAbsoluteIndex: 2841,
                    generatedLineIndex: 52,
                    generatedCharacterIndex: 133,
                    contentLength: 3),
                BuildLineMapping(
                    documentAbsoluteIndex: 290,
                    documentLineIndex: 6,
                    documentCharacterIndex: 18,
                    generatedAbsoluteIndex: 3208,
                    generatedLineIndex: 58,
                    generatedCharacterIndex: 125,
                    contentLength: 5),
                BuildLineMapping(
                    documentAbsoluteIndex: 322,
                    documentLineIndex: 8,
                    documentCharacterIndex: 19,
                    generatedAbsoluteIndex: 3627,
                    generatedLineIndex: 64,
                    generatedCharacterIndex: 153,
                    contentLength: 5),
                BuildLineMapping(
                    documentAbsoluteIndex: 357,
                    documentLineIndex: 9,
                    documentCharacterIndex: 19,
                    generatedAbsoluteIndex: 4055,
                    generatedLineIndex: 70,
                    generatedCharacterIndex: 161,
                    contentLength: 4),
                BuildLineMapping(
                    documentAbsoluteIndex: 378,
                    documentLineIndex: 9,
                    documentCharacterIndex: 40,
                    generatedAbsoluteIndex: 4317,
                    generatedLineIndex: 75,
                    generatedCharacterIndex: 163,
                    contentLength: 6),
            };

            // Act and Assert
            RunDesignTimeTest(
                host,
                testName: "ModelExpressionTagHelper",
                expectedLineMappings: expectedLineMappings);
        }