using Perforce.P4;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Diagnostics;
namespace p4api.net.unit.test
{
///
///This is a test class for ServerMetaDataTest and is intended
///to contain all ServerMetaDataTest Unit Tests
///
[TestClass()]
public class ServerMetaDataTest
{
String TestDir = "c:\\MyTestDir";
private TestContext testContextInstance;
static string name = "newServer";
static ServerAddress address = new ServerAddress("perforce:1984");
static string root = @"C:\TestDepot\";
static DateTime date = new DateTime(2011, 03, 21);
private static string datetimeoffset = null;
static int uptime = 192455;
static ServerVersion version = new ServerVersion("P4D", "NTX86","2011.1", "12345", new DateTime(2011, 03, 21));
static ServerLicense license = new ServerLicense(300, new DateTime(2012, 04, 09));
static string licenseIp = "server.site.com";
static bool caseSensitive = false;
static bool unicodeEnabled = false;
static bool moveEnabled = true;
static ServerMetaData target = null;
static void setTarget()
{
target = new ServerMetaData(name, address, root, date, datetimeoffset,
uptime, version, license, licenseIp,
caseSensitive, unicodeEnabled, moveEnabled);
}
///
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
#region Additional test attributes
//
//You can use the following additional attributes as you write your tests:
//
//Use ClassInitialize to run code before running the first test in the class
//[ClassInitialize()]
//public static void MyClassInitialize(TestContext testContext)
//{
//}
//
//Use ClassCleanup to run code after all tests in a class have run
//[ClassCleanup()]
//public static void MyClassCleanup()
//{
//}
//
//Use TestInitialize to run code before running each test
//[TestInitialize()]
//public void MyTestInitialize()
//{
//}
//
//Use TestCleanup to run code after each test has run
//[TestCleanup()]
//public void MyTestCleanup()
//{
//}
//
#endregion
///
///A test for Address
///
[TestMethod()]
[DeploymentItem("p4api.net.dll")]
public void AddressTest()
{
ServerAddress expected = new ServerAddress("perforce:1984");
setTarget();
Assert.AreEqual(target.Address, expected);
}
///
///A test for CaseSensitive
///
[TestMethod()]
[DeploymentItem("p4api.net.dll")]
public void CaseSensitiveTest()
{
setTarget();
Assert.AreEqual(target.CaseSensitive, false);
}
///
///A test for Date
///
[TestMethod()]
[DeploymentItem("p4api.net.dll")]
public void DateTest()
{
DateTime expected = new DateTime(2011, 03, 21);
setTarget();
Assert.AreEqual(expected, target.Date);
}
///
///A test for License
///
[TestMethod()]
[DeploymentItem("p4api.net.dll")]
public void LicenseTest()
{
int expected = 300;
setTarget();
Assert.AreEqual(expected, target.License.Users);
}
///
///A test for LicenseIp
///
[TestMethod()]
[DeploymentItem("p4api.net.dll")]
public void LicenseIpTest()
{
string expected = "server.site.com";
setTarget();
Assert.AreEqual(expected, target.LicenseIp);
}
///
///A test for Name
///
[TestMethod()]
[DeploymentItem("p4api.net.dll")]
public void NameTest()
{
string expected = "newServer";
setTarget();
Assert.AreEqual(expected, target.Name);
}
///
///A test for Root
///
[TestMethod()]
[DeploymentItem("p4api.net.dll")]
public void RootTest()
{
string expected = @"C:\TestDepot\";
setTarget();
Assert.AreEqual(expected, target.Root);
}
///
///A test for UnicodeEnabled
///
[TestMethod()]
[DeploymentItem("p4api.net.dll")]
public void UnicodeEnabledTest()
{
setTarget();
Assert.AreEqual(target.UnicodeEnabled, false);
}
///
///A test for Uptime
///
[TestMethod()]
[DeploymentItem("p4api.net.dll")]
public void UptimeTest()
{
int expected = 192455;
setTarget();
Assert.AreEqual(expected, target.Uptime);
}
///
///A test for Version
///
[TestMethod()]
[DeploymentItem("p4api.net.dll")]
public void VersionTest()
{
setTarget();
Assert.AreEqual(target.Version.Major, "2011.1");
Assert.AreEqual(target.Version.Minor, "12345");
Assert.AreEqual(target.Version.Platform, "NTX86");
Assert.AreEqual(target.Version.Product, "P4D");
Assert.AreEqual(target.Version.Date, new DateTime(2011, 03, 21));
}
///
///A test for SetPassword
///
[TestMethod()]
public void ServerInfoTest()
{
bool unicode = false;
string uri = "localhost:6666";
for (int i = 0; i < 3; i++) // run once for ascii, once for unicode, once
// for the security level 3 server
{
String zippedFile = "a.exe";
if (i == 1)
{
zippedFile = "u.exe";
}
if (i == 2)
{
zippedFile = "s3.exe";
}
Process p4d = Utilities.DeployP4TestServer(TestDir, 10, zippedFile);
Server server = new Server(new ServerAddress(uri));
try
{
Repository rep = new Repository(server);
using (Connection target = rep.Connection)
{
Assert.AreEqual(target.Status, ConnectionStatus.Disconnected);
Assert.AreEqual(target.Server.State, ServerState.Unknown);
target.Connect(null);
Assert.AreEqual(target.Status, ConnectionStatus.Connected);
Assert.AreEqual(target.Server.State, ServerState.Online);
ServerMetaData p4info = rep.GetServerMetaData(null);
Assert.IsNotNull(p4info);
}
}
finally
{
Utilities.RemoveTestServer(p4d, TestDir);
}
unicode = !unicode;
}
}
}
}