diff options
Diffstat (limited to 'ICSharpCode.Decompiler/Tests/TestRunner.cs')
-rw-r--r-- | ICSharpCode.Decompiler/Tests/TestRunner.cs | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/ICSharpCode.Decompiler/Tests/TestRunner.cs b/ICSharpCode.Decompiler/Tests/TestRunner.cs new file mode 100644 index 00000000..215725b0 --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/TestRunner.cs @@ -0,0 +1,198 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team +// +// 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; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using DiffLib; +using ICSharpCode.Decompiler.Ast; +using ICSharpCode.Decompiler.Tests.Helpers; +using Microsoft.CSharp; +using Mono.Cecil; +using NUnit.Framework; + +namespace ICSharpCode.Decompiler.Tests +{ + [TestFixture] + public class TestRunner : DecompilerTestBase + { + [Test] + public void Async() + { + TestFile(@"..\..\Tests\Async.cs"); + } + + [Test, Ignore("disambiguating overloads is not yet implemented")] + public void CallOverloadedMethod() + { + TestFile(@"..\..\Tests\CallOverloadedMethod.cs"); + } + + [Test, Ignore("unncessary primitive casts")] + public void CheckedUnchecked() + { + TestFile(@"..\..\Tests\CheckedUnchecked.cs"); + } + + [Test, Ignore("Missing cast on null")] + public void DelegateConstruction() + { + TestFile(@"..\..\Tests\DelegateConstruction.cs"); + } + + [Test, Ignore("Not yet implemented")] + public void ExpressionTrees() + { + TestFile(@"..\..\Tests\ExpressionTrees.cs"); + } + + [Test] + public void ExceptionHandling() + { + AssertRoundtripCode(@"..\..\Tests\ExceptionHandling.cs", optimize: false); + AssertRoundtripCode(@"..\..\Tests\ExceptionHandling.cs", optimize: false); + } + + [Test] + public void Generics() + { + TestFile(@"..\..\Tests\Generics.cs"); + } + + [Test] + public void CustomShortCircuitOperators() + { + TestFile(@"..\..\Tests\CustomShortCircuitOperators.cs"); + } + + [Test] + public void ControlFlowWithDebug() + { + AssertRoundtripCode(@"..\..\Tests\ControlFlow.cs", optimize: false, useDebug: true); + AssertRoundtripCode(@"..\..\Tests\ControlFlow.cs", optimize: false, useDebug: true); + } + + [Test] + public void DoubleConstants() + { + TestFile(@"..\..\Tests\DoubleConstants.cs"); + } + + [Test] + public void IncrementDecrement() + { + TestFile(@"..\..\Tests\IncrementDecrement.cs"); + } + + [Test] + public void InitializerTests() + { + TestFile(@"..\..\Tests\InitializerTests.cs"); + } + + [Test] + public void LiftedOperators() + { + TestFile(@"..\..\Tests\LiftedOperators.cs"); + } + + [Test] + public void Lock() + { + //TestFile(@"..\..\Tests\Lock.cs", compilerVersion: 2); + TestFile(@"..\..\Tests\Lock.cs", compilerVersion: 4); + } + + [Test] + public void Loops() + { + TestFile(@"..\..\Tests\Loops.cs"); + } + + [Test] + public void MultidimensionalArray() + { + TestFile(@"..\..\Tests\MultidimensionalArray.cs"); + } + + [Test] + public void PInvoke() + { + TestFile(@"..\..\Tests\PInvoke.cs"); + } + + [Test] + public void PropertiesAndEvents() + { + TestFile(@"..\..\Tests\PropertiesAndEvents.cs"); + } + + [Test] + public void QueryExpressions() + { + TestFile(@"..\..\Tests\QueryExpressions.cs"); + } + + [Test, Ignore("switch transform doesn't recreate the exact original switch")] + public void Switch() + { + TestFile(@"..\..\Tests\Switch.cs"); + } + + [Test] + public void UndocumentedExpressions() + { + TestFile(@"..\..\Tests\UndocumentedExpressions.cs"); + } + + [Test, Ignore("has incorrect casts to IntPtr")] + public void UnsafeCode() + { + TestFile(@"..\..\Tests\UnsafeCode.cs"); + } + + [Test] + public void ValueTypes() + { + TestFile(@"..\..\Tests\ValueTypes.cs"); + } + + [Test, Ignore("Redundant yield break; not removed")] + public void YieldReturn() + { + TestFile(@"..\..\Tests\YieldReturn.cs"); + } + + [Test] + public void TypeAnalysis() + { + TestFile(@"..\..\Tests\TypeAnalysisTests.cs"); + } + + static void TestFile(string fileName, bool useDebug = false, int compilerVersion = 4) + { + AssertRoundtripCode(fileName, optimize: false, useDebug: useDebug, compilerVersion: compilerVersion); + AssertRoundtripCode(fileName, optimize: true, useDebug: useDebug, compilerVersion: compilerVersion); + AssertRoundtripCode(fileName, optimize: false, useDebug: useDebug, compilerVersion: compilerVersion); + AssertRoundtripCode(fileName, optimize: true, useDebug: useDebug, compilerVersion: compilerVersion); + } + } +} |