using Perforce.P4;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Diagnostics;
namespace UnitTests
{
///
///This is a test class for P4ChangeTest and is intended
///to contain all P4ChangeTest Unit Tests
///
[TestClass()]
public class P4ChangeTest
{
String TestDir = "c:\\MyTestDir";
private TestContext testContextInstance;
///
///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 Delete
///
[TestMethod()]
public void DeleteTest()
{
bool unicode = false;
string server = "localhost:6666";
string user = "admin";
string pass = string.Empty;
string ws_client = "admin_space";
for (int i = 0; i < 2; i++) // run once for ascii, once for unicode
{
Process p4d = Utilities.DeployP4TestServer(TestDir, unicode);
try
{
using (P4Server target = new P4Server(server, user, pass, ws_client))
{
P4Change actual = P4Change.Fetch(target, 6);
Assert.IsNotNull(actual);
Assert.IsTrue(actual.Delete(false, true));
}
}
catch (Exception ex)
{
Assert.Fail("Exception Thrown: {0} : {1}", ex.ToString(), ex.Message);
}
finally
{
Utilities.RemoveTestServer(p4d, TestDir);
}
unicode = !unicode;
}
}
///
///A test for Fetch
///
[TestMethod()]
public void FetchTest()
{
bool unicode = false;
string server = "localhost:6666";
string user = "admin";
string pass = string.Empty;
string ws_client = "admin_space";
for (int i = 0; i < 2; i++) // run once for ascii, once for unicode
{
Process p4d = Utilities.DeployP4TestServer(TestDir, unicode);
try
{
using (P4Server target = new P4Server(server, user, pass, ws_client))
{
P4Change actual = P4Change.Fetch(target, 1);
Assert.IsNotNull(actual);
Assert.AreEqual("admin", actual.User);
}
}
catch (Exception ex)
{
Assert.Fail("Exception Thrown: {0} : {1}", ex.ToString(), ex.Message);
}
finally
{
Utilities.RemoveTestServer(p4d, TestDir);
}
unicode = !unicode;
}
}
///
///A test for Parse
///
[TestMethod()]
public void ParseTest()
{
P4Server pserver = new P4Server(false);
P4Change target = new P4Change(pserver, -1);
string spec = ChangeSpec;
bool expected = true; // TODO: Initialize to an appropriate value
bool actual;
actual = target.Parse(spec);
Assert.AreEqual(expected, actual);
Assert.AreEqual(168750, target.ChangeNumber);
}
private static String ChangeSpec =
@"# A Perforce Change Specification.
#
# Change: The change number. 'new' on a new changelist.
# Date: The date this specification was last modified.
# Client: The client on which the changelist was created. Read-only.
# User: The user who created the changelist.
# Status: Either 'pending' or 'submitted'. Read-only.
# Type: Either 'public' or 'restricted'. Default is 'public'.
# Description: Comments about the changelist. Required.
# Jobs: What opened jobs are to be closed by this changelist.
# You may delete jobs from this list. (New changelists only.)
# Files: What opened files from the default changelist are to be added
# to this changelist. You may delete files from this list.
# (New changelists only.)
Change: 168750
Date: 2008/10/15 16:42:12
Client: ksawicki_perforce_1666
User: ksawicki
Status: submitted
Description:
Refactor to centralized open action that handles showing a dialog for which changelist things should be opened into.
";
///
///A test for Save
///
[TestMethod()]
public void SaveTest()
{
bool unicode = false;
string server = "localhost:6666";
string user = "admin";
string pass = string.Empty;
string ws_client = "admin_space";
for (int i = 0; i < 2; i++) // run once for ascii, once for unicode
{
Process p4d = Utilities.DeployP4TestServer(TestDir, unicode);
try
{
using (P4Server target = new P4Server(server, user, pass, ws_client))
{
P4Change newChange = new P4Change(target, "admin", "admin_space");
newChange.Restricted = false;
newChange.Description = "New change list for Unit tests";
Assert.IsTrue(newChange.Save());
Assert.AreNotEqual(-1, newChange.ChangeNumber);
P4Change actual = P4Change.Fetch(target, newChange.ChangeNumber);
Assert.IsNotNull(actual);
Assert.AreEqual("admin", actual.User);
}
}
catch (Exception ex)
{
Assert.Fail("Exception Thrown: {0} : {1}", ex.ToString(), ex.Message);
}
finally
{
Utilities.RemoveTestServer(p4d, TestDir);
}
unicode = !unicode;
}
}
///
///A test for ToString
///
// ToString is validated in SaveTest()
//[TestMethod()]
//public void ToStringTest()
//{
//}
///
///A test for User
///
[TestMethod()]
public void UserTest()
{
P4Server pserver = new P4Server(false);
P4Change target = new P4Change(pserver, 42);
string expected = "Charlie";
string actual;
target.User = expected;
actual = target.User;
Assert.AreEqual(expected, actual);
expected = "Charlie";
target = new P4Change(pserver, expected, "Ws");
actual = target.User;
Assert.AreEqual(expected, actual);
}
///
///A test for Restricted
///
[TestMethod()]
public void RestrictedTest()
{
P4Server pserver = new P4Server(false);
P4Change target = new P4Change(pserver, 42);
bool expected = false;
target.Restricted = expected;
bool actual = target.Restricted;
Assert.AreEqual(expected, actual);
expected = true;
target.Restricted = expected;
actual = target.Restricted;
Assert.AreEqual(expected, actual); // can only test default value of false
}
///
///A test for Pending
///
[TestMethod()]
public void PendingTest()
{
P4Server pserver = new P4Server(false);
P4Change target = new P4Change(pserver, "fred", "FredClient");
bool actual;
actual = target.Pending;
Assert.AreEqual(true, actual); // can only test default value of false
}
///
///A test for Modified
///
//[TestMethod()]
//public void ModifiedTest()
//{
// P4Server pserver = new P4Server(false);
// P4Change target = new P4Change(pserver, "fred", "FredClient");
// DateTime expected = DateTime.Now;
// DateTime actual;
// target.Modified = expected;
// actual = target.Modified;
// Assert.AreEqual(expected, actual);
//}
///
///A test for Jobs
///
[TestMethod()]
public void JobsTest()
{
P4Server pserver = new P4Server(false);
P4Change target = new P4Change(pserver, "fred", "FredClient");
StringList expected = new String[] { "12", "42" };
StringList actual;
target.Jobs = expected;
actual = target.Jobs;
Assert.AreEqual(expected, actual);
}
///
///A test for Files
///
[TestMethod()]
public void FilesTest()
{
P4Server pserver = new P4Server(false);
P4Change target = new P4Change(pserver, "fred", "FredClient");
StringList expected = new String[] { "//depot/code/stuff/i.c", "//depot/code/stuff/j.c" };
StringList actual;
target.Files = expected;
actual = target.Files;
Assert.AreEqual(expected, actual);
}
///
///A test for Description
///
[TestMethod()]
public void DescriptionTest()
{
P4Server pserver = new P4Server(false);
P4Change target = new P4Change(pserver, "fred", "FredClient");
string expected = "This is a test";
string actual;
target.Description = expected;
actual = target.Description;
Assert.AreEqual(expected, actual);
}
///
///A test for Client
///
[TestMethod()]
public void ClientTest()
{
String expected = "FredClient";
P4Server pserver = new P4Server(false);
P4Change target = new P4Change(pserver, "fred", expected);
string actual;
actual = target.Client;
Assert.AreEqual(expected, actual);
}
///
///A test for ChangeNumber
///
[TestMethod()]
public void ChangeNumberTest()
{
P4Server pserver = new P4Server(false);
P4Change target = new P4Change(pserver, "fred", "FredClient");
long actual;
actual = target.ChangeNumber;
Assert.AreEqual(-1, actual);
target = new P4Change(pserver, 42);
actual = target.ChangeNumber;
Assert.AreEqual(42, actual);
}
}
}