Delegate ABI Test (dotnet/coreclr#5507)
authorpapaslavik <v.nikolaev@samsung.com>
Tue, 7 Jun 2016 16:25:58 +0000 (19:25 +0300)
committerJan Kotas <jkotas@microsoft.com>
Tue, 7 Jun 2016 16:25:58 +0000 (09:25 -0700)
Detects issue dotnet/coreclr#5275

Commit migrated from https://github.com/dotnet/coreclr/commit/0d5ef45c53c05b9d76c8cb7b7ab0cd303daf25e6

src/coreclr/tests/src/CoreMangLib/cti/system/delegate/DelegateABI.csproj [new file with mode: 0644]
src/coreclr/tests/src/CoreMangLib/cti/system/delegate/delegateabi.cs [new file with mode: 0644]

diff --git a/src/coreclr/tests/src/CoreMangLib/cti/system/delegate/DelegateABI.csproj b/src/coreclr/tests/src/CoreMangLib/cti/system/delegate/DelegateABI.csproj
new file mode 100644 (file)
index 0000000..86ef371
--- /dev/null
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95DFC527-4DC1-495E-97D7-E94EE1F7140D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\11.0\UITestExtensionPackages</ReferencePath>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <NuGetPackageImportStamp>7a9bfb7d</NuGetPackageImportStamp>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <ReferenceLocalMscorlib>false</ReferenceLocalMscorlib>
+    <CLRTestKind>BuildAndRun</CLRTestKind>
+    <CLRTestPriority>1</CLRTestPriority>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+  </PropertyGroup>
+  <ItemGroup>
+    <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
+      <Visible>False</Visible>
+    </CodeAnalysisDependentAssemblyPaths>
+  </ItemGroup>
+  <ItemGroup>
+    <!-- Add Compile Object Here -->
+    <Compile Include="delegateabi.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="project.json" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="../../../../Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj" />
+    <ProjectReference Include="../../../../Common/CoreCLRTestLibrary/CoreCLRTestLibrary.csproj" />
+  </ItemGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+  <PropertyGroup Condition=" '$(MsBuildProjectDirOverride)' != '' ">
+  </PropertyGroup>
+</Project>
diff --git a/src/coreclr/tests/src/CoreMangLib/cti/system/delegate/delegateabi.cs b/src/coreclr/tests/src/CoreMangLib/cti/system/delegate/delegateabi.cs
new file mode 100644 (file)
index 0000000..e13ccaf
--- /dev/null
@@ -0,0 +1,68 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+
+namespace ClassLibrary
+{
+    public class test
+    {
+        public delegate float FloatTest(float a);
+
+        static float testfloat(float a)
+        {
+            if(a != -1.1f)
+            {
+                throw new Exception();
+            }
+            return -2.2f;
+        }
+
+        public delegate int IntTest(int a);
+
+        static int testint(int a)
+        {
+           if(a != -1)
+           {
+                throw new Exception();
+           }
+           return -2;
+        }
+
+       static int Main(string[] args)
+       {
+            try
+            {
+                IntTest inttest = testint;
+                int r = inttest(-1);
+                if (r != -2)
+                {
+                    Console.WriteLine("FAIL - int return value mismatch");
+                    return 101;
+                }
+            }
+            catch (Exception)
+            {
+                Console.WriteLine("FAIL - int argument value mismatch");
+                return 102;
+            }
+            try
+            {
+                FloatTest floattest = testfloat;
+                float r = floattest(-1.1f);
+                if (r != -2.2f)
+                {
+                    Console.WriteLine("FAIL - float return value mismatch");
+                    return 103;
+                }
+            }
+            catch (Exception)
+            {
+                Console.WriteLine("FAIL - float argument value mismatch");
+                return 104;
+            }
+            return 100;
+       }
+   }
+}