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); } } }