Browse Source

Tests for type/property/field/event/namespace decompile

Assisted-by: Claude:claude-opus-4-7:Claude Code

Assisted-by: Claude:claude-opus-4-7:Claude Code
pull/3755/head
Siegfried Pammer 2 months ago
parent
commit
02741ee746
  1. 104
      ILSpy.Tests/MainWindow/MainWindowTests.cs

104
ILSpy.Tests/MainWindow/MainWindowTests.cs

@ -115,6 +115,110 @@ public class MainWindowTests @@ -115,6 +115,110 @@ public class MainWindowTests
firstMethod.Should().Be().CenteredInView();
}
[AvaloniaTest]
public async Task Selecting_Type_Node_Decompiles_Type_Definition()
{
var window = AppComposition.Current.GetExport<MainWindow>();
window.Show();
var vm = (MainWindowViewModel)window.DataContext!;
await vm.AssemblyTreeModel.WaitForAssembliesAsync(minimumCount: 3);
var coreLib = typeof(object).Assembly.GetName().Name!;
var typeNode = vm.AssemblyTreeModel.FindNode<TypeTreeNode>(
coreLib, "System", "System.Version");
vm.AssemblyTreeModel.SelectedItem = typeNode;
var tab = await vm.DockWorkspace.WaitForDecompiledTextAsync();
tab.Text.Should().Contain("class Version");
tab.Text.Should().Contain("Major");
tab.Text.Should().Contain("Minor");
}
[AvaloniaTest]
public async Task Selecting_Property_Node_Decompiles_Property()
{
var window = AppComposition.Current.GetExport<MainWindow>();
window.Show();
var vm = (MainWindowViewModel)window.DataContext!;
await vm.AssemblyTreeModel.WaitForAssembliesAsync(minimumCount: 3);
var coreLib = typeof(object).Assembly.GetName().Name!;
var typeNode = vm.AssemblyTreeModel.FindNode<TypeTreeNode>(
coreLib, "System", "System.Version");
typeNode.EnsureLazyChildren();
var propertyNode = typeNode.Children.OfType<PropertyTreeNode>()
.Single(p => p.PropertyDefinition.Name == "Major");
vm.AssemblyTreeModel.SelectedItem = propertyNode;
var tab = await vm.DockWorkspace.WaitForDecompiledTextAsync();
tab.Text.Should().Contain("public int Major");
}
[AvaloniaTest]
public async Task Selecting_Field_Node_Decompiles_Field()
{
var window = AppComposition.Current.GetExport<MainWindow>();
window.Show();
var vm = (MainWindowViewModel)window.DataContext!;
await vm.AssemblyTreeModel.WaitForAssembliesAsync(minimumCount: 3);
var coreLib = typeof(object).Assembly.GetName().Name!;
var typeNode = vm.AssemblyTreeModel.FindNode<TypeTreeNode>(
coreLib, "System", "System.Math");
typeNode.EnsureLazyChildren();
var fieldNode = typeNode.Children.OfType<FieldTreeNode>()
.Single(f => f.FieldDefinition.Name == "PI");
vm.AssemblyTreeModel.SelectedItem = fieldNode;
var tab = await vm.DockWorkspace.WaitForDecompiledTextAsync();
tab.Text.Should().Contain("public const double PI");
tab.Text.Should().Contain("3.14159");
}
[AvaloniaTest]
public async Task Selecting_Event_Node_Decompiles_Event()
{
var window = AppComposition.Current.GetExport<MainWindow>();
window.Show();
var vm = (MainWindowViewModel)window.DataContext!;
await vm.AssemblyTreeModel.WaitForAssembliesAsync(minimumCount: 3);
var coreLib = typeof(object).Assembly.GetName().Name!;
var typeNode = vm.AssemblyTreeModel.FindNode<TypeTreeNode>(
coreLib, "System", "System.AppDomain");
typeNode.EnsureLazyChildren();
var eventNode = typeNode.Children.OfType<EventTreeNode>()
.Single(e => e.EventDefinition.Name == "ProcessExit");
vm.AssemblyTreeModel.SelectedItem = eventNode;
var tab = await vm.DockWorkspace.WaitForDecompiledTextAsync();
tab.Text.Should().Contain("event EventHandler");
tab.Text.Should().Contain("ProcessExit");
}
[AvaloniaTest]
public async Task Selecting_Namespace_Node_Decompiles_Namespace()
{
var window = AppComposition.Current.GetExport<MainWindow>();
window.Show();
var vm = (MainWindowViewModel)window.DataContext!;
await vm.AssemblyTreeModel.WaitForAssembliesAsync(minimumCount: 3);
var coreLib = typeof(object).Assembly.GetName().Name!;
var namespaceNode = vm.AssemblyTreeModel.FindNode<NamespaceTreeNode>(
coreLib, "System.Runtime.Versioning");
vm.AssemblyTreeModel.SelectedItem = namespaceNode;
var tab = await vm.DockWorkspace.WaitForDecompiledTextAsync();
tab.Text.Should().Contain("TargetFrameworkAttribute");
tab.Text.Should().Contain("SupportedOSPlatformAttribute");
}
[AvaloniaTest]
public async Task Selecting_Assembly_Node_Emits_Header_And_Assembly_Attributes()
{

Loading…
Cancel
Save