diff --git a/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs b/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs index c0f5e3763..c341835e0 100644 --- a/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs +++ b/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs @@ -312,6 +312,12 @@ namespace ICSharpCode.Decompiler.Tests await RunForLibrary(cscOptions: cscOptions); } + [Test] + public async Task Operators([ValueSource(nameof(defaultOptions))] CompilerOptions cscOptions) + { + await RunForLibrary(cscOptions: cscOptions); + } + [Test] public async Task Generics([ValueSource(nameof(defaultOptions))] CompilerOptions cscOptions) { diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/Operators.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/Operators.cs new file mode 100644 index 000000000..35e4a4a18 --- /dev/null +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/Operators.cs @@ -0,0 +1,215 @@ +// Copyright (c) Daniel Grunwald +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; + +namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty +{ + public class AllOperators + { + public static AllOperators operator +(AllOperators a, AllOperators b) + { + return null; + } + + public static AllOperators operator -(AllOperators a, AllOperators b) + { + return null; + } + + public static AllOperators operator *(AllOperators a, AllOperators b) + { + return null; + } + + public static AllOperators operator /(AllOperators a, AllOperators b) + { + return null; + } + + public static AllOperators operator %(AllOperators a, AllOperators b) + { + return null; + } + + public static AllOperators operator &(AllOperators a, AllOperators b) + { + return null; + } + + public static AllOperators operator |(AllOperators a, AllOperators b) + { + return null; + } + + public static AllOperators operator ^(AllOperators a, AllOperators b) + { + return null; + } + + public static AllOperators operator <<(AllOperators a, int b) + { + return null; + } + + public static AllOperators operator >>(AllOperators a, int b) + { + return null; + } + + public static AllOperators operator ~(AllOperators a) + { + return null; + } + + public static AllOperators operator !(AllOperators a) + { + return null; + } + + public static AllOperators operator -(AllOperators a) + { + return null; + } + + public static AllOperators operator +(AllOperators a) + { + return null; + } + + public static AllOperators operator ++(AllOperators a) + { + return null; + } + + public static AllOperators operator --(AllOperators a) + { + return null; + } + + public static bool operator true(AllOperators a) + { + return false; + } + + public static bool operator false(AllOperators a) + { + return false; + } + + public static bool operator ==(AllOperators a, AllOperators b) + { + return false; + } + + public static bool operator !=(AllOperators a, AllOperators b) + { + return false; + } + + public static bool operator <(AllOperators a, AllOperators b) + { + return false; + } + + public static bool operator >(AllOperators a, AllOperators b) + { + return false; + } + + public static bool operator <=(AllOperators a, AllOperators b) + { + return false; + } + + public static bool operator >=(AllOperators a, AllOperators b) + { + return false; + } + + public static implicit operator AllOperators(int a) + { + return null; + } + + public static explicit operator int(AllOperators a) + { + return 0; + } + } + + public class UseAllOperators + { + private AllOperators a = new AllOperators(); + private AllOperators b = new AllOperators(); + private AllOperators c; + public void Test() + { + c = a + b; + c = a - b; + c = a * b; + c = a / b; + c = a % b; + c = a & b; + c = a | b; + c = a ^ b; + c = a << 5; + c = a >> 5; + c = ~a; + c = !a; + c = -a; + c = +a; + c = ++a; + c = --a; + if (a) + { + Console.WriteLine("a"); + } + if (!a) + { + Console.WriteLine("!a"); + } + if (a == b) + { + Console.WriteLine("a == b"); + } + if (a != b) + { + Console.WriteLine("a != b"); + } + if (a < b) + { + Console.WriteLine("a < b"); + } + if (a > b) + { + Console.WriteLine("a > b"); + } + if (a <= b) + { + Console.WriteLine("a <= b"); + } + if (a >= b) + { + Console.WriteLine("a >= b"); + } + int num = (int)a; + a = num; + } + } +} \ No newline at end of file