using Perforce.P4; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; using System.Diagnostics; namespace p4api.net.unit.test { /// ///This is a test class for RepositoryTest and is intended ///to contain RepositoryTest Unit Tests /// public partial class RepositoryTest { /// ///A test for CreateDepot /// [TestMethod()] public void CreateDepotTest() { bool unicode = false; string uri = "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, 8, unicode); Server server = new Server(new ServerAddress(uri)); try { Repository rep = new Repository(server); using (Connection con = rep.Connection) { con.UserName = user; con.Client = new Client(); con.Client.Name = ws_client; bool connected = con.Connect(null); Assert.IsTrue(connected); Assert.AreEqual(con.Status, ConnectionStatus.Connected); Depot d = new Depot(); d.Id = "NewDepot"; d.Description = "created by perforce"; d.Owner = "admin"; d.Type = DepotType.Stream; d.Map = "NewDepot/..."; Depot newDepot = rep.CreateDepot(d, null); Assert.IsNotNull(newDepot); } } finally { Utilities.RemoveTestServer(p4d, TestDir); } unicode = !unicode; } } /// ///A test for CreateDepot with an invalid path /// [TestMethod()] public void CreateInvalidPathDepotTest() { bool unicode = false; string uri = "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, 8, unicode); Server server = new Server(new ServerAddress(uri)); try { Repository rep = new Repository(server); using (Connection con = rep.Connection) { con.UserName = user; con.Client = new Client(); con.Client.Name = ws_client; bool connected = con.Connect(null); Assert.IsTrue(connected); Assert.AreEqual(con.Status, ConnectionStatus.Connected); Depot d = new Depot(); d.Id = "NewDepot"; d.Description = "created by perforce"; d.Owner = "admin"; d.Type = DepotType.Stream; d.Map = "123"; try { Depot newDepot = rep.CreateDepot(d, null); } catch (P4Exception e) { Assert.AreEqual(822155706, e.ErrorCode, "Error in depot specification. " + "Map entry '123' must have only 1 wildcard which must be a trailing '/...' or '\\...'."); } } } finally { Utilities.RemoveTestServer(p4d, TestDir); } unicode = !unicode; } } /// ///A test for CreateDepot attempting to add another spec depot /// [TestMethod()] public void CreateExtraSpecDepotTest() { bool unicode = false; string uri = "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, 8, unicode); Server server = new Server(new ServerAddress(uri)); try { Repository rep = new Repository(server); using (Connection con = rep.Connection) { con.UserName = user; con.Client = new Client(); con.Client.Name = ws_client; bool connected = con.Connect(null); Assert.IsTrue(connected); Assert.AreEqual(con.Status, ConnectionStatus.Connected); Depot d = new Depot(); d.Id = "NewDepot"; d.Description = "created by perforce"; d.Owner = "admin"; d.Type = DepotType.Spec;//.Local; d.Map = "123"; try { Depot newDepot = rep.CreateDepot(d, null); } catch (P4Exception e) { Assert.AreEqual(822286756, e.ErrorCode, "Error in depot specification.\n" + "There is already a spec depot called 'speque'.\n"); } } } finally { Utilities.RemoveTestServer(p4d, TestDir); } unicode = !unicode; } } /// ///A test for DeleteDepot /// [TestMethod()] public void DeleteDepotTest() { bool unicode = false; string uri = "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, 8, unicode); Server server = new Server(new ServerAddress(uri)); try { Repository rep = new Repository(server); using (Connection con = rep.Connection) { con.UserName = user; con.Client = new Client(); con.Client.Name = ws_client; bool connected = con.Connect(null); Assert.IsTrue(connected); Assert.AreEqual(con.Status, ConnectionStatus.Connected); Depot d = new Depot(); d.Id = "NewDepot"; d.Description = "created by perforce"; d.Owner = "admin"; d.Type = DepotType.Local; d.Map = "NewDepot/..."; Depot newDepot = rep.CreateDepot(d, null); Assert.IsNotNull(newDepot); rep.DeleteDepot(newDepot, null); IList dlist = rep.GetDepots(); Assert.IsFalse(dlist.Contains(newDepot)); } } finally { Utilities.RemoveTestServer(p4d, TestDir); } unicode = !unicode; } } /// ///A test for DeleteDepot for a depot with files in it /// [TestMethod()] public void DeleteDepotWithFilesTest() { bool unicode = false; string uri = "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, 8, unicode); Server server = new Server(new ServerAddress(uri)); try { Repository rep = new Repository(server); using (Connection con = rep.Connection) { con.UserName = user; con.Client = new Client(); con.Client.Name = ws_client; bool connected = con.Connect(null); Assert.IsTrue(connected); Assert.AreEqual(con.Status, ConnectionStatus.Connected); String depotName = "flow"; Depot depot = rep.GetDepot(depotName, null); Assert.IsNotNull(depot); try { rep.DeleteDepot(depot, null); } catch (P4Exception e) { Assert.AreEqual(822417475, e.ErrorCode, "Depot flow isn't empty. To delete a depot, all file revisions must be removed " + "and all lazy copy references from other depots must be severed. Use 'p4 obliterate'" + "or 'p4 snap' to break file linkages from other depots, then clear this depot with " + "'p4 obliteror 'p4 snap' to break file linkages from other depots, then clear this depot " + "with 'p4 obliterate', then retry the deletion."); } } } finally { Utilities.RemoveTestServer(p4d, TestDir); } unicode = !unicode; } } /// ///A test for GetDepot /// [TestMethod()] public void GetDepotTest() { bool unicode = false; string uri = "localhost:6666"; string user = "admin"; string pass = string.Empty; string ws_client = "admin_space"; string targetDepot = "flow"; for (int i = 0; i < 2; i++) // run once for ascii, once for unicode { Process p4d = Utilities.DeployP4TestServer(TestDir, 8, unicode); Server server = new Server(new ServerAddress(uri)); try { Repository rep = new Repository(server); using (Connection con = rep.Connection) { con.UserName = user; con.Client = new Client(); con.Client.Name = ws_client; bool connected = con.Connect(null); Assert.IsTrue(connected); Assert.AreEqual(con.Status, ConnectionStatus.Connected); Depot d = rep.GetDepot(targetDepot, null); Assert.IsNotNull(d); Assert.AreEqual(targetDepot, d.Id); } } finally { Utilities.RemoveTestServer(p4d, TestDir); } unicode = !unicode; } } /// ///A test for GetDepots /// [TestMethod()] public void GetDepotsTest() { bool unicode = false; string uri = "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, 8, unicode); Server server = new Server(new ServerAddress(uri)); try { Repository rep = new Repository(server); using (Connection con = rep.Connection) { con.UserName = user; con.Client = new Client(); con.Client.Name = ws_client; bool connected = con.Connect(null); Assert.IsTrue(connected); Assert.AreEqual(con.Status, ConnectionStatus.Connected); IList dlist = rep.GetDepots(); Assert.IsTrue(dlist[0].Id.Equals("depot")); Assert.IsTrue(dlist[1].Map.Equals("flow/...")); Assert.IsTrue(dlist[2].Type.Equals(DepotType.Stream)); Assert.IsTrue(dlist[3].Description.Equals("Depot For 'Rocket' project\n\nEVENTS/new_stream_events/events0100_create_depots.pl-Event_001-perforce-CREATE_DEPOTS-Creating depots...\n")); DateTime modified = new DateTime(2010, 10, 19, 10, 40, 3); Assert.AreEqual(modified, dlist[0].Modified); } } finally { Utilities.RemoveTestServer(p4d, TestDir); } unicode = !unicode; } } } }