using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Diagnostics;
using System.IO;
using Perforce.P4;
namespace x64TestApp
{
class Program
{
const String TestDir = "c:\\MyTestDir";
public class Assert
{
public static void IsTrue(bool b)
{
if (b)
return;
throw new Exception("Assert FAILED!");
}
public static void AreEqual(object a, object b)
{
if (a.Equals(b))
return;
throw new Exception("Assert FAILED!");
}
public static void AreEqual(string a, string b, bool ignoreCase)
{
if (ignoreCase && a.Equals(b, StringComparison.OrdinalIgnoreCase))
{
return;
}
else if (ignoreCase && a.Equals(b))
{
return;
}
throw new Exception("Assert FAILED!");
}
}
static void Main(string[] args)
{
// testGetP4ConfigP4EnvVarWithCWD
bool unicode = false;
string server = "localhost:6666";
string user = "admin";
string pass = string.Empty;
string ws_client = "admin_space";
string oldConfig = P4Server.Get("P4CONFIG");
for (int i = 0; i < 2; i++) // run once for ascii, once for unicode
{
Process p4d = Utilities.DeployP4TestServer(TestDir, unicode);
try
{
using (Repository rep = new Repository(new Server(new ServerAddress(string.Empty))))
{
string expected = "C:\\MyTestDir\\admin_space\\MyCode\\myP4Config.txt";
P4Server.Set("P4CONFIG", "myP4Config.txt");
if (System.IO.File.Exists(expected))
{
System.IO.File.Delete(expected);
}
//make sure it returns null if no config file
string actual = P4Server.GetConfig("C:\\MyTestDir\\admin_space\\MyCode");
if (actual != null)
{
Assert.AreEqual(actual, "noconfig", true);
}
using (System.IO.StreamWriter sw = new StreamWriter(expected))
{
sw.WriteLine(string.Format("P4PORT={0}", server));
sw.WriteLine(string.Format("P4USER={0}", user));
sw.WriteLine(string.Format("P4CLIENT={0}", ws_client));
}
actual = P4Server.GetConfig("C:\\MyTestDir\\admin_space\\MyCode");
Assert.AreEqual(actual, expected, true);
System.Environment.CurrentDirectory = "C:\\MyTestDir\\admin_space\\MyCode";
actual = rep.Connection.GetP4ConfigFile(System.Environment.CurrentDirectory);
Console.WriteLine("ConfigFile={0}", actual);
Options opts = new Options();
opts.Add("ProgramName", "P4UnitTest");
opts.Add("cwd", System.Environment.CurrentDirectory);
using (Connection con = rep.Connection)
{
Assert.IsTrue(rep.Connection.Connect(opts));
actual = rep.Connection.GetP4EnvironmentVar("P4CONFIG");
Console.WriteLine("P4CONFIG={0}", actual);
Assert.AreEqual(actual, "myP4Config.txt", true);
actual = rep.Connection.GetP4ConfigFile();
Console.WriteLine("ConfigFile={0}", actual);
Assert.AreEqual(actual, expected, true);
}
}
}
finally
{
Utilities.RemoveTestServer(p4d, TestDir);
P4Server.Set("P4CONFIG", oldConfig);
if (System.IO.File.Exists("C:\\MyTestDir\\admin_space\\MyCode\\myP4Config.txt"))
{
System.IO.File.Delete("C:\\MyTestDir\\admin_space\\MyCode\\myP4Config.txt");
}
}
unicode = !unicode;
}
Console.WriteLine("Hit enter to exit");
Console.ReadLine();
}
}
}