Browse Source

Add more test cases

pull/1165/head
Siegfried Pammer 7 years ago
parent
commit
74fc5ba8a4
  1. 96
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.cs
  2. 5078
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.il
  3. 3489
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.opt.il
  4. 3289
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.opt.roslyn.il
  5. 4792
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.roslyn.il

96
ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.cs

@ -2,8 +2,17 @@ @@ -2,8 +2,17 @@
namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
{
internal static class Extension
{
public static dynamic ToDynamic(this int i, dynamic info)
{
throw null;
}
}
internal class DynamicTests
{
private class Base
{
public Base(object baseObj)
@ -19,6 +28,31 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -19,6 +28,31 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
}
}
private struct MyValueType
{
private readonly dynamic _getOnlyProperty;
public dynamic Field;
#if CS60
public dynamic GetOnlyProperty => _getOnlyProperty;
#else
public dynamic GetOnlyProperty {
get {
return _getOnlyProperty;
}
}
#endif
public dynamic Property {
get;
set;
}
public void Method(dynamic a)
{
}
}
private static dynamic field;
private static object objectField;
public dynamic Property {
@ -90,10 +124,26 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -90,10 +124,26 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
a.Test5(a, a.Number, a.String);
a[0] = 3;
a.Index[a.Number] = 5;
a.Index[a.Number] += 5;
a.Setter = new DynamicTests();
a.Setter2 = 5;
}
private static void StructMemberAccess(MyValueType valueType)
{
valueType.Field = 0;
valueType.Field += 5;
valueType.Field[1] = 5;
valueType.Field.CallMe();
DynamicTests.Casts(valueType.GetOnlyProperty);
valueType.GetOnlyProperty.CallMe();
valueType.Property = 0;
valueType.Property += 5;
valueType.Property[1] = 5;
valueType.Property.CallMe(5.ToDynamic((object)valueType.Property.Call()));
valueType.Method(valueType.GetOnlyProperty + valueType.Field);
}
private static void RequiredCasts()
{
((dynamic)objectField).A = 5;
@ -187,13 +237,13 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -187,13 +237,13 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
DynamicTests.MemberAccess(a * b);
DynamicTests.MemberAccess(a * 1);
DynamicTests.MemberAccess(a * null);
DynamicTests.MemberAccess(a / b);
DynamicTests.MemberAccess(a / 1);
DynamicTests.MemberAccess(a / null);
DynamicTests.MemberAccess(a % b);
DynamicTests.MemberAccess(a % 1);
DynamicTests.MemberAccess(a % null);
}
DynamicTests.MemberAccess(a / b);
DynamicTests.MemberAccess(a / 1);
DynamicTests.MemberAccess(a / null);
DynamicTests.MemberAccess(a % b);
DynamicTests.MemberAccess(a % 1);
DynamicTests.MemberAccess(a % null);
}
private static void UncheckedArithmeticBinaryOperators(dynamic a, dynamic b)
@ -208,13 +258,13 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -208,13 +258,13 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
DynamicTests.MemberAccess(unchecked(a * b));
DynamicTests.MemberAccess(a * 1);
DynamicTests.MemberAccess(a * null);
DynamicTests.MemberAccess(a / b);
DynamicTests.MemberAccess(a / 1);
DynamicTests.MemberAccess(a / null);
DynamicTests.MemberAccess(a % b);
DynamicTests.MemberAccess(a % 1);
DynamicTests.MemberAccess(a % null);
}
DynamicTests.MemberAccess(a / b);
DynamicTests.MemberAccess(a / 1);
DynamicTests.MemberAccess(a / null);
DynamicTests.MemberAccess(a % b);
DynamicTests.MemberAccess(a % 1);
DynamicTests.MemberAccess(a % null);
}
private static void RelationalOperators(dynamic a, dynamic b)
@ -246,6 +296,26 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -246,6 +296,26 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
MemberAccess(checked((int)a));
}
private static void M(object o)
{
}
private static void M2(dynamic d)
{
}
private static void M3(int i)
{
}
private static void NotDynamicDispatch(dynamic d)
{
DynamicTests.M(d);
M((object)d);
DynamicTests.M2(d);
M2((object)d);
}
private static void CompoundAssignment(dynamic a, dynamic b)
{
a.Setter2 += 5;
@ -274,7 +344,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -274,7 +344,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
private static void UnaryOperators(dynamic a)
{
// TODO : beautify inc/dec on locals
// TODO : beautify inc/dec on locals and fields
//a--;
//a++;
//--a;

5078
ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.il

File diff suppressed because it is too large Load Diff

3489
ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.opt.il

File diff suppressed because it is too large Load Diff

3289
ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.opt.roslyn.il

File diff suppressed because it is too large Load Diff

4792
ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.roslyn.il

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save