forked from icsharpcode/CodeConverter
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDefaultMemberAttributeTests.cs
More file actions
93 lines (80 loc) · 2.3 KB
/
DefaultMemberAttributeTests.cs
File metadata and controls
93 lines (80 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using System.Threading.Tasks;
using ICSharpCode.CodeConverter.Tests.TestRunners;
using Xunit;
namespace ICSharpCode.CodeConverter.Tests.CSharp.MemberTests;
public class DefaultMemberAttributeTests : ConverterTestBase
{
[Fact]
public async Task TestDefaultMemberAttributeConversionAsync()
{
await TestConversionVisualBasicToCSharpAsync(
@"
<System.Reflection.DefaultMember(""Caption"")>
Public Class ClassWithReflectionDefaultMember
Public Property Caption As String
End Class
<System.Reflection.DefaultMember(NameOf(LoosingProperties.Caption))>
Public Class LoosingProperties
Public Property Caption As String
Sub S()
Dim x = New LoosingProperties()
x.Caption = ""Hello""
Dim y = New ClassWithReflectionDefaultMember() 'from C#
y.Caption = ""World""
End Sub
End Class", @"using System.Reflection;
[DefaultMember(""Caption"")]
public partial class ClassWithReflectionDefaultMember
{
public string Caption { get; set; }
}
[DefaultMember(nameof(Caption))]
public partial class LoosingProperties
{
public string Caption { get; set; }
public void S()
{
var x = new LoosingProperties();
x.Caption = ""Hello"";
var y = new ClassWithReflectionDefaultMember(); // from C#
y.Caption = ""World"";
}
}
");
}
/// <summary>
/// Regression test for https://github.com/icsharpcode/CodeConverter/issues/1091
/// When an interface has [DefaultMember(""Value"")] and VB code explicitly accesses .Value,
/// the converter must NOT strip the .Value member access in the C# output.
/// </summary>
[Fact]
public async Task Issue1091_ExplicitAccessToDefaultMemberPropertyIsPreservedAsync()
{
await TestConversionVisualBasicToCSharpAsync(
@"
<System.Reflection.DefaultMember(""Value"")>
Public Interface IWithDefaultValue
Property Value As Object
End Interface
Public Module Module1
Sub Test(p As IWithDefaultValue)
Dim v = p.Value
p.Value = v
End Sub
End Module", @"using System.Reflection;
[DefaultMember(""Value"")]
public partial interface IWithDefaultValue
{
object Value { get; set; }
}
public static partial class Module1
{
public static void Test(IWithDefaultValue p)
{
var v = p.Value;
p.Value = v;
}
}
");
}
}