Projektdateien hinzufügen.
This commit is contained in:
80
tests/IMSApiDotNet.LegacyBinarySmoke/Program.cs
Normal file
80
tests/IMSApiDotNet.LegacyBinarySmoke/Program.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using com.itac.mes.imsapi.client.dotnet;
|
||||
|
||||
internal static class Program
|
||||
{
|
||||
private static int Fail(string text)
|
||||
{
|
||||
Console.Error.WriteLine("ABI FAIL: " + text);
|
||||
return 2;
|
||||
}
|
||||
|
||||
private static int Main()
|
||||
{
|
||||
try
|
||||
{
|
||||
// This call is intentionally compiled against 10.0.0-3. The resulting EXE
|
||||
// must run unchanged after IMSApiDotNet.dll is replaced by either new target.
|
||||
IMSApiDotNet.setProperty("itac.appid", "LegacyBinarySmoke");
|
||||
|
||||
IMSApiDotNet a = IMSApiDotNet.loadLibrary();
|
||||
IMSApiDotNet b = IMSApiDotNet.loadLibrary();
|
||||
if (a == null || b == null) return Fail("loadLibrary returned null");
|
||||
if (!object.ReferenceEquals(a, b)) return Fail("legacy singleton behavior changed");
|
||||
|
||||
string version = null;
|
||||
int rc = a.imsapiGetLibraryVersion(ref version);
|
||||
if (rc != IMSApiDotNetConstants.RES_OK) return Fail("imsapiGetLibraryVersion return code " + rc);
|
||||
if (string.IsNullOrEmpty(version)) return Fail("empty library version");
|
||||
|
||||
// Reflection checks the declaring type and static/instance metadata that caused
|
||||
// MissingMethodException in existing applications.
|
||||
MethodInfo setProperty = typeof(IMSApiDotNetBase).GetMethod(
|
||||
"setProperty",
|
||||
BindingFlags.Public | BindingFlags.Static,
|
||||
null,
|
||||
new[] { typeof(string), typeof(string) },
|
||||
null);
|
||||
if (setProperty == null) return Fail("IMSApiDotNetBase.setProperty(string,string) static missing");
|
||||
if (setProperty.ReturnType != typeof(void)) return Fail("setProperty return type changed");
|
||||
if (setProperty.DeclaringType != typeof(IMSApiDotNetBase)) return Fail("setProperty declaring type changed");
|
||||
|
||||
MethodInfo loadLibrary = typeof(IMSApiDotNet).GetMethod(
|
||||
"loadLibrary",
|
||||
BindingFlags.Public | BindingFlags.Static,
|
||||
null,
|
||||
Type.EmptyTypes,
|
||||
null);
|
||||
if (loadLibrary == null || loadLibrary.ReturnType != typeof(IMSApiDotNet))
|
||||
return Fail("IMSApiDotNet.loadLibrary() signature changed");
|
||||
|
||||
if (!typeof(IMSApiDotNetConstants).IsAssignableFrom(typeof(IMSApiDotNetBase)))
|
||||
return Fail("IMSApiDotNetBase no longer derives from IMSApiDotNetConstants");
|
||||
|
||||
MethodInfo getError = typeof(IMSApiDotNetConstants).GetMethod(
|
||||
"getIMSApiDotNetErrorText",
|
||||
new[] { typeof(int) });
|
||||
if (getError == null || getError.ReturnType != typeof(string))
|
||||
return Fail("IMSApiDotNetConstants.getIMSApiDotNetErrorText(int) missing");
|
||||
|
||||
Console.WriteLine("ABI OK");
|
||||
Console.WriteLine("Loaded: " + typeof(IMSApiDotNet).Assembly.FullName);
|
||||
Console.WriteLine("Path: " + typeof(IMSApiDotNet).Assembly.Location);
|
||||
Console.WriteLine("API: " + version);
|
||||
return 0;
|
||||
}
|
||||
catch (MissingMethodException ex)
|
||||
{
|
||||
return Fail(ex.ToString());
|
||||
}
|
||||
catch (TypeLoadException ex)
|
||||
{
|
||||
return Fail(ex.ToString());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return Fail(ex.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user