using Perforce.P4; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Diagnostics; namespace UnitTests { /// <summary> ///This is a test class for P4ChangeTest and is intended ///to contain all P4ChangeTest Unit Tests ///</summary> [TestClass()] public class P4ChangeTest { String TestDir = "c:\\MyTestDir"; private TestContext testContextInstance; /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> 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 /// <summary> ///A test for Delete ///</summary> [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; } } /// <summary> ///A test for Fetch ///</summary> [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; } } /// <summary> ///A test for Parse ///</summary> [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. "; /// <summary> ///A test for Save ///</summary> [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; } } /// <summary> ///A test for ToString ///</summary> // ToString is validated in SaveTest() //[TestMethod()] //public void ToStringTest() //{ //} /// <summary> ///A test for User ///</summary> [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); } /// <summary> ///A test for Restricted ///</summary> [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 } /// <summary> ///A test for Pending ///</summary> [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 } /// <summary> ///A test for Modified ///</summary> //[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); //} /// <summary> ///A test for Jobs ///</summary> [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); } /// <summary> ///A test for Files ///</summary> [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); } /// <summary> ///A test for Description ///</summary> [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); } /// <summary> ///A test for Client ///</summary> [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); } /// <summary> ///A test for ChangeNumber ///</summary> [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); } } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 19640 | Liz Lam | "Forking branch Main of perforce-software-p4connect to liz_lam-p4connect." | ||
//guest/perforce_software/p4connect/main/src/P4Bridge/p4api.net-unit-test/P4ChangeTest.cs | |||||
#1 | 16209 | Norman Morse | Move entire source tree into "main" branch so workshop code will act correctly. | ||
//guest/perforce_software/p4connect/src/P4Bridge/p4api.net-unit-test/P4ChangeTest.cs | |||||
#1 | 10940 | Norman Morse |
Inital Workshop release of P4Connect. Released under BSD-2 license |