Browse Source

Add [GeneratedCode] and [ExcludeFromCodeCoverage] to Name Generator output members (#15616)

release/11.1.0-rc1
Stephen Monaco 2 years ago
committed by Max Katz
parent
commit
75da92ff6d
  1. 12
      src/tools/Avalonia.Generators/NameGenerator/InitializeComponentCodeGenerator.cs
  2. 5
      src/tools/Avalonia.Generators/NameGenerator/OnlyPropertiesCodeGenerator.cs
  3. 3
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedProps.txt
  4. 3
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedPropsWithDevTools.txt
  5. 3
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/ControlWithoutWindow.txt
  6. 5
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/CustomControls.txt
  7. 4
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/DataTemplates.txt
  8. 8
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/FieldModifier.txt
  9. 3
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControl.txt
  10. 5
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControls.txt
  11. 2
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NoNamedControls.txt
  12. 12
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/SignUpView.txt
  13. 3
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControl.txt
  14. 5
      tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControls.txt
  15. 8
      tests/Avalonia.Generators.Tests/InitializeComponent/InitializeComponentTests.cs
  16. 1
      tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/AttachedProps.txt
  17. 1
      tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/ControlWithoutWindow.txt
  18. 3
      tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/CustomControls.txt
  19. 2
      tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/DataTemplates.txt
  20. 6
      tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/FieldModifier.txt
  21. 1
      tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControl.txt
  22. 3
      tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControls.txt
  23. 10
      tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/SignUpView.txt
  24. 1
      tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControl.txt
  25. 3
      tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControls.txt
  26. 9
      tests/Avalonia.Generators.Tests/OnlyProperties/OnlyPropertiesTests.cs

12
src/tools/Avalonia.Generators/NameGenerator/InitializeComponentCodeGenerator.cs

@ -6,6 +6,8 @@ namespace Avalonia.Generators.NameGenerator;
internal class InitializeComponentCodeGenerator : ICodeGenerator
{
private string _generatorName = typeof(InitializeComponentCodeGenerator).FullName;
private string _generatorVersion = typeof(InitializeComponentCodeGenerator).Assembly.GetName().Version.ToString();
private readonly bool _diagnosticsAreConnected;
private const string AttachDevToolsCodeBlock = @"
#if DEBUG
@ -31,6 +33,7 @@ internal class InitializeComponentCodeGenerator : ICodeGenerator
var initializations = new List<string>();
const string thisFindNameScopeVariable = " var __thisNameScope__ = this.FindNameScope();";
bool hasNames = false;
foreach (var resolvedName in names)
{
if (!hasNames)
@ -39,7 +42,12 @@ internal class InitializeComponentCodeGenerator : ICodeGenerator
}
var (typeName, name, fieldModifier) = resolvedName;
properties.Add($" {fieldModifier} {typeName} {name};");
var propertySource =
$"""
[global::System.CodeDom.Compiler.GeneratedCode("{_generatorName}", "{_generatorVersion}")]
{fieldModifier} {typeName} {name};
""";
properties.Add(propertySource);
initializations.Add($" {name} = __thisNameScope__?.Find<{typeName}>(\"{name}\");");
hasNames = true;
@ -64,6 +72,8 @@ namespace {nameSpace}
/// </summary>
/// <param name=""loadXaml"">Should the XAML be loaded into the component.</param>
{(attachDevTools ? AttachDevToolsParameterDocumentation : string.Empty)}
[global::System.CodeDom.Compiler.GeneratedCode(""{_generatorName}"", ""{_generatorVersion}"")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true{(attachDevTools ? ", bool attachDevTools = true" : string.Empty)})
{{
if (loadXaml)

5
src/tools/Avalonia.Generators/NameGenerator/OnlyPropertiesCodeGenerator.cs

@ -7,10 +7,15 @@ namespace Avalonia.Generators.NameGenerator;
internal class OnlyPropertiesCodeGenerator : ICodeGenerator
{
private string _generatorName = typeof(OnlyPropertiesCodeGenerator).FullName;
private string _generatorVersion = typeof(OnlyPropertiesCodeGenerator).Assembly.GetName().Version.ToString();
public string GenerateCode(string className, string nameSpace, IXamlType xamlType, IEnumerable<ResolvedName> names)
{
var namedControls = names
.Select(info => " " +
$"[global::System.CodeDom.Compiler.GeneratedCode(\"{_generatorName}\", \"{_generatorVersion}\")]\n" +
" " +
$"{info.FieldModifier} {info.TypeName} {info.Name} => " +
$"this.FindNameScope()?.Find<{info.TypeName}>(\"{info.Name}\");")
.ToList();

3
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedProps.txt

@ -8,6 +8,7 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox;
/// <summary>
@ -15,6 +16,8 @@ namespace Sample.App
/// </summary>
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true)
{
if (loadXaml)

3
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/AttachedPropsWithDevTools.txt

@ -8,6 +8,7 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox;
/// <summary>
@ -16,6 +17,8 @@ namespace Sample.App
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
/// <param name="attachDevTools">Should the dev tools be attached.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true, bool attachDevTools = true)
{
if (loadXaml)

3
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/ControlWithoutWindow.txt

@ -8,6 +8,7 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox;
/// <summary>
@ -15,6 +16,8 @@ namespace Sample.App
/// </summary>
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true)
{
if (loadXaml)

5
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/CustomControls.txt

@ -8,8 +8,11 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.ReactiveUI.RoutedViewHost ClrNamespaceRoutedViewHost;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.ReactiveUI.RoutedViewHost UriRoutedViewHost;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Controls.CustomTextBox UserNameTextBox;
/// <summary>
@ -17,6 +20,8 @@ namespace Sample.App
/// </summary>
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true)
{
if (loadXaml)

4
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/DataTemplates.txt

@ -8,7 +8,9 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.ListBox NamedListBox;
/// <summary>
@ -16,6 +18,8 @@ namespace Sample.App
/// </summary>
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true)
{
if (loadXaml)

8
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/FieldModifier.txt

@ -8,11 +8,17 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
public global::Avalonia.Controls.TextBox FirstNameTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
public global::Avalonia.Controls.TextBox LastNameTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
protected global::Avalonia.Controls.TextBox PasswordTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
private global::Avalonia.Controls.TextBox ConfirmPasswordTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Button SignUpButton;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Button RegisterButton;
/// <summary>
@ -20,6 +26,8 @@ namespace Sample.App
/// </summary>
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true)
{
if (loadXaml)

3
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControl.txt

@ -8,6 +8,7 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox;
/// <summary>
@ -15,6 +16,8 @@ namespace Sample.App
/// </summary>
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true)
{
if (loadXaml)

5
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NamedControls.txt

@ -8,8 +8,11 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox PasswordTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Button SignUpButton;
/// <summary>
@ -17,6 +20,8 @@ namespace Sample.App
/// </summary>
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true)
{
if (loadXaml)

2
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/NoNamedControls.txt

@ -15,6 +15,8 @@ namespace Sample.App
/// </summary>
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true)
{
if (loadXaml)

12
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/SignUpView.txt

@ -8,15 +8,25 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Controls.CustomTextBox UserNameTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBlock UserNameValidation;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox PasswordTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBlock PasswordValidation;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.ListBox AwesomeListView;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox ConfirmPasswordTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBlock ConfirmPasswordValidation;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Documents.Run SignUpButtonDescription;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Button SignUpButton;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBlock CompoundValidation;
/// <summary>
@ -24,6 +34,8 @@ namespace Sample.App
/// </summary>
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true)
{
if (loadXaml)

3
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControl.txt

@ -8,6 +8,7 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox;
/// <summary>
@ -15,6 +16,8 @@ namespace Sample.App
/// </summary>
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true)
{
if (loadXaml)

5
tests/Avalonia.Generators.Tests/InitializeComponent/GeneratedInitializeComponent/xNamedControls.txt

@ -8,8 +8,11 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox PasswordTextBox;
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Button SignUpButton;
/// <summary>
@ -17,6 +20,8 @@ namespace Sample.App
/// </summary>
/// <param name="loadXaml">Should the XAML be loaded into the component.</param>
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.InitializeComponentCodeGenerator", "$GeneratorVersion")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true)
{
if (loadXaml)

8
tests/Avalonia.Generators.Tests/InitializeComponent/InitializeComponentTests.cs

@ -48,15 +48,17 @@ public class InitializeComponentTests
var names = nameResolver.ResolveNames(classInfo.Xaml);
var generator = new InitializeComponentCodeGenerator(types, devToolsMode);
var generatorVersion = typeof(InitializeComponentCodeGenerator).Assembly.GetName().Version.ToString();
var code = generator
.GenerateCode("SampleView", "Sample.App", classInfo.XamlType, names)
.Replace("\r", string.Empty);
var expected = await InitializeComponentCode.Load(expectation);
var expected = (await InitializeComponentCode.Load(expectation))
.Replace("\r", string.Empty)
.Replace("$GeneratorVersion", generatorVersion);
CSharpSyntaxTree.ParseText(code);
Assert.Equal(expected.Replace("\r", string.Empty), code);
Assert.Equal(expected, code);
}
}

1
tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/AttachedProps.txt

@ -6,6 +6,7 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("UserNameTextBox");
}
}

1
tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/ControlWithoutWindow.txt

@ -6,6 +6,7 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("UserNameTextBox");
}
}

3
tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/CustomControls.txt

@ -6,8 +6,11 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.ReactiveUI.RoutedViewHost ClrNamespaceRoutedViewHost => this.FindNameScope()?.Find<global::Avalonia.ReactiveUI.RoutedViewHost>("ClrNamespaceRoutedViewHost");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.ReactiveUI.RoutedViewHost UriRoutedViewHost => this.FindNameScope()?.Find<global::Avalonia.ReactiveUI.RoutedViewHost>("UriRoutedViewHost");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Controls.CustomTextBox UserNameTextBox => this.FindNameScope()?.Find<global::Controls.CustomTextBox>("UserNameTextBox");
}
}

2
tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/DataTemplates.txt

@ -6,7 +6,9 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("UserNameTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.ListBox NamedListBox => this.FindNameScope()?.Find<global::Avalonia.Controls.ListBox>("NamedListBox");
}
}

6
tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/FieldModifier.txt

@ -6,11 +6,17 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
public global::Avalonia.Controls.TextBox FirstNameTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("FirstNameTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
public global::Avalonia.Controls.TextBox LastNameTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("LastNameTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
protected global::Avalonia.Controls.TextBox PasswordTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("PasswordTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
private global::Avalonia.Controls.TextBox ConfirmPasswordTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("ConfirmPasswordTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Button SignUpButton => this.FindNameScope()?.Find<global::Avalonia.Controls.Button>("SignUpButton");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Button RegisterButton => this.FindNameScope()?.Find<global::Avalonia.Controls.Button>("RegisterButton");
}
}

1
tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControl.txt

@ -6,6 +6,7 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("UserNameTextBox");
}
}

3
tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/NamedControls.txt

@ -6,8 +6,11 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("UserNameTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox PasswordTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("PasswordTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Button SignUpButton => this.FindNameScope()?.Find<global::Avalonia.Controls.Button>("SignUpButton");
}
}

10
tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/SignUpView.txt

@ -6,15 +6,25 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Controls.CustomTextBox UserNameTextBox => this.FindNameScope()?.Find<global::Controls.CustomTextBox>("UserNameTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBlock UserNameValidation => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBlock>("UserNameValidation");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox PasswordTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("PasswordTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBlock PasswordValidation => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBlock>("PasswordValidation");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.ListBox AwesomeListView => this.FindNameScope()?.Find<global::Avalonia.Controls.ListBox>("AwesomeListView");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox ConfirmPasswordTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("ConfirmPasswordTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBlock ConfirmPasswordValidation => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBlock>("ConfirmPasswordValidation");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Documents.Run SignUpButtonDescription => this.FindNameScope()?.Find<global::Avalonia.Controls.Documents.Run>("SignUpButtonDescription");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Button SignUpButton => this.FindNameScope()?.Find<global::Avalonia.Controls.Button>("SignUpButton");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBlock CompoundValidation => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBlock>("CompoundValidation");
}
}

1
tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControl.txt

@ -6,6 +6,7 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("UserNameTextBox");
}
}

3
tests/Avalonia.Generators.Tests/OnlyProperties/GeneratedCode/xNamedControls.txt

@ -6,8 +6,11 @@ namespace Sample.App
{
partial class SampleView
{
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox UserNameTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("UserNameTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.TextBox PasswordTextBox => this.FindNameScope()?.Find<global::Avalonia.Controls.TextBox>("PasswordTextBox");
[global::System.CodeDom.Compiler.GeneratedCode("Avalonia.Generators.NameGenerator.OnlyPropertiesCodeGenerator", "$GeneratorVersion")]
internal global::Avalonia.Controls.Button SignUpButton => this.FindNameScope()?.Find<global::Avalonia.Controls.Button>("SignUpButton");
}
}

9
tests/Avalonia.Generators.Tests/OnlyProperties/OnlyPropertiesTests.cs

@ -41,12 +41,17 @@ public class OnlyPropertiesTests
var names = nameResolver.ResolveNames(classInfo.Xaml);
var generator = new OnlyPropertiesCodeGenerator();
var generatorVersion = typeof(OnlyPropertiesCodeGenerator).Assembly.GetName().Version.ToString();
var code = generator
.GenerateCode("SampleView", "Sample.App", classInfo.XamlType, names)
.Replace("\r", string.Empty);
var expected = await OnlyPropertiesCode.Load(expectation);
var expected = (await OnlyPropertiesCode.Load(expectation))
.Replace("\r", string.Empty)
.Replace("$GeneratorVersion", generatorVersion);
CSharpSyntaxTree.ParseText(code);
Assert.Equal(expected.Replace("\r", string.Empty), code);
Assert.Equal(expected, code);
}
}

Loading…
Cancel
Save