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 CreateChangelist
///
[TestMethod()]
public void CreateChangelistTest()
{
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, 7, 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);
Changelist c = new Changelist();
c.Description = "New changelist for unit test";
Options uFlags = new Options(ChangeCmdFlags.IncludeJobs);
Changelist newGuy = rep.CreateChangelist(c, null);
Assert.IsNotNull(newGuy);
Assert.AreNotEqual(-1, newGuy.Id);
// newGuy = rep.GetChangelist()
Assert.AreEqual("admin", newGuy.OwnerName);
}
}
finally
{
Utilities.RemoveTestServer(p4d, TestDir);
}
unicode = !unicode;
}
}
///
///A test for UpdateChangelist
///
[TestMethod()]
public void UpdateChangelistTest()
{
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, 7, 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);
Changelist c = rep.GetChangelist(5);
c.Description = "new desc";
rep.UpdateChangelist(c);
Changelist d = rep.GetChangelist(5);
Assert.AreEqual(d.Description, "new desc");
}
}
finally
{
Utilities.RemoveTestServer(p4d, TestDir);
}
unicode = !unicode;
}
}
///
///A test for DeleteChangelist
///
[TestMethod()]
public void DeleteChangelistTest()
{
bool unicode = false;
string uri = "localhost:6666";
string user = "admin";
string pass = string.Empty;
string ws_client = "admin_space";
//string targetChangelist = "admin_space2";
for (int i = 0; i < 2; i++) // run once for ascii, once for unicode
{
Process p4d = Utilities.DeployP4TestServer(TestDir, 7, 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);
Changelist c = new Changelist();
c.Description = "New changelist for unit test";
Changelist newGuy = rep.CreateChangelist(c, null);
//ChangeOptions uFlags = new ChangeOptions(ChangelistFlags.Force);
rep.DeleteChangelist(newGuy, null); //uFlags);
Changelist deadGuy = null;
try
{
deadGuy = rep.GetChangelist(newGuy.Id);
}
catch { }
Assert.IsNull(deadGuy);
}
}
finally
{
Utilities.RemoveTestServer(p4d, TestDir);
}
unicode = !unicode;
}
}
///
///A test for GetChangelist
///
[TestMethod()]
public void GetChangelistTest()
{
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, 6, 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);
Changelist c = rep.GetChangelist(5, null);
Assert.IsNotNull(c);
Assert.AreEqual("admin", c.OwnerName);
Assert.AreEqual(c.Files.Count, 1);
Assert.AreEqual(c.Jobs.Count, 1);
Assert.IsTrue(c.Files[0].DepotPath.Path.Contains("//depot/MyCode/NewFile.txt"));
if (unicode == false)
{
c = rep.GetChangelist(4, null);
Assert.AreEqual("admin", c.OwnerName);
Assert.AreEqual(c.Files.Count, 2);
Assert.AreEqual(c.Jobs.Count, 1);
Assert.IsTrue(c.Files[0].DepotPath.Path.Contains("//depot/TheirCode/ReadMe.txt"));
Assert.AreEqual(c.Files[0].Digest, "C7DECE3DB80A73F3F53AF4BCF6AC0576");
Assert.AreEqual(c.Files[0].FileSize, 30);
}
}
}
finally
{
Utilities.RemoveTestServer(p4d, TestDir);
}
unicode = !unicode;
}
}
///
///A test for GetChangelists
///
[TestMethod()]
public void GetChangelistsTest()
{
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, 6, 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 u = rep.GetChangelists(
new Options(ChangesCmdFlags.LongDescription, "admin_space", 10, ChangeListStatus.Pending, null));
Assert.IsNotNull(u);
Assert.AreEqual(3, u.Count);
}
}
finally
{
Utilities.RemoveTestServer(p4d, TestDir);
}
unicode = !unicode;
}
}
}
}