Projektdateien hinzufügen.
This commit is contained in:
93
tests/IMSApiDotNet.PropertiesSmoke/Program.cs
Normal file
93
tests/IMSApiDotNet.PropertiesSmoke/Program.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using com.itac.mes.imsapi.client.dotnet;
|
||||
|
||||
internal sealed class Probe : IMSApiDotNetBase
|
||||
{
|
||||
public string Get(string key, string fallback = null) => Prop(key, fallback);
|
||||
public override int imsapiGetLibraryVersion(ref string libraryVersion)
|
||||
{
|
||||
libraryVersion = "probe";
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
internal static class Program
|
||||
{
|
||||
private static int Main(string[] args)
|
||||
{
|
||||
string assemblyLocation = typeof(IMSApiDotNetBase).Assembly.Location;
|
||||
string assemblyDirectory = Path.GetDirectoryName(Path.GetFullPath(assemblyLocation));
|
||||
if (string.IsNullOrWhiteSpace(assemblyDirectory))
|
||||
{
|
||||
Console.Error.WriteLine("Unable to resolve IMSApiDotNet.dll directory.");
|
||||
return 2;
|
||||
}
|
||||
|
||||
string file = Path.Combine(assemblyDirectory, "ihas.properties");
|
||||
string oldCwd = Directory.GetCurrentDirectory();
|
||||
string wrongDirectory = Path.Combine(Path.GetTempPath(), "IMSApiDotNet-ihas-wrong-" + Guid.NewGuid().ToString("N"));
|
||||
Directory.CreateDirectory(wrongDirectory);
|
||||
|
||||
try
|
||||
{
|
||||
// Correct file: it MUST be located next to the loaded IMSApiDotNet.dll.
|
||||
File.WriteAllText(file,
|
||||
"# FIX6 DLL-directory property smoke test\r\n" +
|
||||
"file.only=from-dll-directory\r\n" +
|
||||
"precedence=from-file\r\n" +
|
||||
"itac.appid=FromDllProperties\r\n" +
|
||||
"itac.artes.clusternodes=https://partner.itacsoftware.com:8181/mes\r\n");
|
||||
|
||||
// Deliberately place conflicting files elsewhere. Neither the current
|
||||
// working directory nor itac.propdir may control the physical file
|
||||
// lookup anymore.
|
||||
File.WriteAllText(Path.Combine(wrongDirectory, "ihas.properties"),
|
||||
"file.only=WRONG-DIRECTORY\r\n" +
|
||||
"itac.appid=WrongDirectory\r\n");
|
||||
Directory.SetCurrentDirectory(wrongDirectory);
|
||||
IMSApiDotNet.setProperty("itac.propdir", wrongDirectory);
|
||||
|
||||
// Programmatic values still override the same key from ihas.properties.
|
||||
IMSApiDotNet.setProperty("precedence", "from-setProperty");
|
||||
|
||||
var p = new Probe();
|
||||
if (p.Get("file.only") != "from-dll-directory") return Fail("file.only", p.Get("file.only"), "from-dll-directory");
|
||||
if (p.Get("precedence") != "from-setProperty") return Fail("precedence", p.Get("precedence"), "from-setProperty");
|
||||
if (p.Get("missing", "fallback") != "fallback") return Fail("missing", p.Get("missing", "fallback"), "fallback");
|
||||
if (p.Get("itac.appid") != "FromDllProperties") return Fail("itac.appid", p.Get("itac.appid"), "FromDllProperties");
|
||||
if (p.Get("itac.artes.clusternodes") != "https://partner.itacsoftware.com:8181/mes")
|
||||
return Fail("itac.artes.clusternodes", p.Get("itac.artes.clusternodes"), "https://partner.itacsoftware.com:8181/mes");
|
||||
|
||||
// Verify the real public API reports the raw file value. Programmatic
|
||||
// setProperty must not replace this diagnostic line.
|
||||
IMSApiDotNet.setProperty("itac.artes.clusternodes", "https://override.invalid/mes");
|
||||
string libraryVersion = null;
|
||||
var api = IMSApiDotNet.loadLibrary();
|
||||
int versionRc = api.imsapiGetLibraryVersion(ref libraryVersion);
|
||||
if (versionRc != 0) return Fail("imsapiGetLibraryVersion rc", versionRc.ToString(), "0");
|
||||
if (libraryVersion == null || libraryVersion.IndexOf("itac.artes.clusternodes=https://partner.itacsoftware.com:8181/mes", StringComparison.Ordinal) < 0)
|
||||
return Fail("libraryVersion cluster node", libraryVersion, "raw ihas.properties cluster node");
|
||||
if (libraryVersion.IndexOf(file, StringComparison.OrdinalIgnoreCase) < 0)
|
||||
return Fail("libraryVersion ihas.properties path", libraryVersion, file);
|
||||
|
||||
Console.WriteLine("PASS dll-directory");
|
||||
Console.WriteLine(libraryVersion);
|
||||
Console.WriteLine("IMSApiDotNet.dll: " + assemblyLocation);
|
||||
Console.WriteLine("ihas.properties: " + file);
|
||||
return 0;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Directory.SetCurrentDirectory(oldCwd);
|
||||
try { if (File.Exists(file)) File.Delete(file); } catch { }
|
||||
try { if (Directory.Exists(wrongDirectory)) Directory.Delete(wrongDirectory, true); } catch { }
|
||||
}
|
||||
}
|
||||
|
||||
private static int Fail(string key, string actual, string expected)
|
||||
{
|
||||
Console.Error.WriteLine("FAIL " + key + ": actual=<" + actual + "> expected=<" + expected + ">");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user