Ejemplo n.º 1
0
        public void Contains(string addHintName, string checkHintName)
        {
            AdditionalSourcesCollection asc = new AdditionalSourcesCollection(".cs");

            asc.Add(addHintName, SourceText.From("", Encoding.UTF8));
            Assert.True(asc.Contains(checkHintName));
        }
Ejemplo n.º 2
0
        [InlineData("abc\u00A0.cs")] // unicode non-breaking space
        public void HintName_InvalidValues(string hintName)
        {
            AdditionalSourcesCollection asc = new AdditionalSourcesCollection(".cs");
            var exception = Assert.Throws <ArgumentException>(nameof(hintName), () => asc.Add(hintName, SourceText.From("public class D{}", Encoding.UTF8)));

            Assert.Contains(hintName, exception.Message);
        }
        public void Hint_Name_Must_Be_Unique(string hintName1, string hintName2)
        {
            AdditionalSourcesCollection asc = new AdditionalSourcesCollection();

            asc.Add(hintName1, SourceText.From("", Encoding.UTF8));
            Assert.Throws <ArgumentException>("hintName", () => asc.Add(hintName2, SourceText.From("", Encoding.UTF8)));
        }
        public void AddedSources_Are_Deterministic()
        {
            // a few manual simple ones
            AdditionalSourcesCollection asc = new AdditionalSourcesCollection(".cs");

            asc.Add("file3.cs", SourceText.From("", Encoding.UTF8));
            asc.Add("file1.cs", SourceText.From("", Encoding.UTF8));
            asc.Add("file2.cs", SourceText.From("", Encoding.UTF8));
            asc.Add("file5.cs", SourceText.From("", Encoding.UTF8));
            asc.Add("file4.cs", SourceText.From("", Encoding.UTF8));

            var sources   = asc.ToImmutableAndFree();
            var hintNames = sources.Select(s => s.HintName).ToArray();

            Assert.Equal(
                new[] { "file3.cs", "file1.cs", "file2.cs", "file5.cs", "file4.cs" },
                hintNames
                );

            // generate a long random list, remembering the order we added them
            Random r = new Random();

            string[] names = new string[1000];
            asc = new AdditionalSourcesCollection(".cs");
            for (int i = 0; i < 1000; i++)
            {
                names[i] = CSharpTestBase.GetUniqueName() + ".cs";
                asc.Add(names[i], SourceText.From("", Encoding.UTF8));
            }

            sources   = asc.ToImmutableAndFree();
            hintNames = sources.Select(s => s.HintName).ToArray();
            Assert.Equal(names, hintNames);
        }
Ejemplo n.º 5
0
 public IncrementalExecutionContext(DriverStateTable.Builder?tableBuilder, GeneratorRunStateTable.Builder generatorRunStateBuilder, AdditionalSourcesCollection sources)
 {
     TableBuilder             = tableBuilder;
     GeneratorRunStateBuilder = generatorRunStateBuilder;
     Sources     = sources;
     Diagnostics = DiagnosticBag.GetInstance();
 }
Ejemplo n.º 6
0
        public void Remove(string addHintName, string removeHintName)
        {
            AdditionalSourcesCollection asc = new AdditionalSourcesCollection(".cs");

            asc.Add(addHintName, SourceText.From("", Encoding.UTF8));
            asc.RemoveSource(removeHintName);
            var sources = asc.ToImmutableAndFree();

            Assert.Empty(sources);
        }
        public void HintName_ValidValues(string hintName)
        {
            AdditionalSourcesCollection asc = new AdditionalSourcesCollection();

            asc.Add(hintName, SourceText.From("public class D{}", Encoding.UTF8));
            Assert.True(asc.Contains(hintName));

            var sources = asc.ToImmutableAndFree();

            Assert.True(sources[0].HintName.EndsWith(".cs"));
        }
        public void SourceTextRequiresEncoding()
        {
            AdditionalSourcesCollection asc = new AdditionalSourcesCollection();

            // fine
            asc.Add("file1.cs", SourceText.From("", Encoding.UTF8));
            asc.Add("file2.cs", SourceText.From("", Encoding.UTF32));
            asc.Add("file3.cs", SourceText.From("", Encoding.Unicode));

            // no encoding
            Assert.Throws <ArgumentException>(() => asc.Add("file4.cs", SourceText.From("")));

            // explicit null encoding
            Assert.Throws <ArgumentException>(() => asc.Add("file5.cs", SourceText.From("", encoding: null)));
        }
Ejemplo n.º 9
0
        public void Hint_Name_Must_Be_Unique_When_Combining_Sources()
        {
            AdditionalSourcesCollection asc = new AdditionalSourcesCollection(".cs");

            asc.Add("hintName1", SourceText.From("", Encoding.UTF8));
            asc.Add("hintName2", SourceText.From("", Encoding.UTF8));

            AdditionalSourcesCollection asc2 = new AdditionalSourcesCollection(".cs");

            asc2.Add("hintName3", SourceText.From("", Encoding.UTF8));
            asc2.Add("hintName1", SourceText.From("", Encoding.UTF8));

            var exception = Assert.Throws <ArgumentException>("hintName", () => asc.CopyTo(asc2));

            Assert.Contains("hintName1", exception.Message);
        }
Ejemplo n.º 10
0
        public void SourceTextRequiresEncoding()
        {
            AdditionalSourcesCollection asc = new AdditionalSourcesCollection(".cs");

            // fine
            asc.Add("file1.cs", SourceText.From("", Encoding.UTF8));
            asc.Add("file2.cs", SourceText.From("", Encoding.UTF32));
            asc.Add("file3.cs", SourceText.From("", Encoding.Unicode));

            // no encoding
            Assert.Throws <ArgumentException>(() => asc.Add("file4.cs", SourceText.From("")));

            // explicit null encoding
            Assert.Throws <ArgumentException>(() => asc.Add("file5.cs", SourceText.From("", encoding: null)));

            var exception = Assert.Throws <ArgumentException>(() => asc.Add("file5.cs", SourceText.From("", encoding: null)));

            // check the exception contains the expected hintName
            Assert.Contains("file5.cs", exception.Message);
        }
Ejemplo n.º 11
0
 private void AddSourceForAdditionalFile(AdditionalSourcesCollection sources, AdditionalText file) => sources.Add(GetGeneratedFileName(file.Path), SourceText.From("", Encoding.UTF8));
Ejemplo n.º 12
0
 internal IncrementalGeneratorPostInitializationContext(AdditionalSourcesCollection additionalSources, CancellationToken cancellationToken)
 {
     AdditionalSources = additionalSources;
     CancellationToken = cancellationToken;
 }
Ejemplo n.º 13
0
 internal SourceProductionContext(AdditionalSourcesCollection sources, DiagnosticBag diagnostics, CancellationToken cancellationToken)
 {
     CancellationToken = cancellationToken;
     Sources           = sources;
     Diagnostics       = diagnostics;
 }