A few more tests

This commit is contained in:
Zack Piispanen 2011-07-23 22:27:21 -04:00
parent 1c7d71431f
commit d515616f72
4 changed files with 161 additions and 54 deletions

View file

@ -285,6 +285,56 @@ namespace TShockAPI.DB
}
}
public void ReloadForUnitTest(String n)
{
using (var com = database.CreateCommand())
{
com.CommandText = "SELECT * FROM Regions WHERE WorldID=@worldid";
com.AddParameter("@worldid", n);
using (var reader = com.ExecuteReader())
{
Regions.Clear();
while (reader.Read())
{
int X1 = reader.Get<int>("X1");
int Y1 = reader.Get<int>("Y1");
int height = reader.Get<int>("height");
int width = reader.Get<int>("width");
int Protected = reader.Get<int>("Protected");
string MergedIDs = DbExt.Get<string>(reader, "UserIds");
string name = DbExt.Get<string>(reader, "RegionName");
System.Console.WriteLine(MergedIDs);
string[] SplitIDs = MergedIDs.Split(',');
Region r = new Region(new Rectangle(X1, Y1, width, height), name, Protected, Main.worldID.ToString());
r.RegionAllowedIDs = new int[SplitIDs.Length];
try
{
for (int i = 0; i < SplitIDs.Length; i++)
{
if (SplitIDs.Length == 1 && SplitIDs[0].Equals(""))
{
break;
}
//System.Console.WriteLine(SplitIDs[i]);
r.RegionAllowedIDs[i] = Convert.ToInt32(SplitIDs[i]);
}
}
catch (Exception e)
{
Log.Error("Your database contains invalid UserIDs (they should be ints).");
Log.Error("A lot of things will fail because of this. You must manually delete and re-create the allowed field.");
Log.Error(e.Message);
Log.Error(e.StackTrace);
}
Regions.Add(r);
}
reader.Close();
}
}
}
public bool AddRegion(int tx, int ty, int width, int height, string regionname, string worldid)
{
try
@ -301,11 +351,9 @@ namespace TShockAPI.DB
com.AddParameter("@worldid", worldid);
com.AddParameter("@userids", "");
com.AddParameter("@protected", 1);
if (com.ExecuteNonQuery() > 0)
{
Regions.Add(new Region(new Rectangle(tx, ty, width, height), regionname, 0, worldid));
return true;
}
com.ExecuteNonQuery();
Regions.Add(new Region(new Rectangle(tx, ty, width, height), regionname, 0, worldid));
return true;
}
}
@ -326,7 +374,7 @@ namespace TShockAPI.DB
com.AddParameter("@name", name.ToLower());
com.AddParameter("@worldid", Main.worldID.ToString());
com.ExecuteNonQuery();
ReloadAllRegions();
Regions.Remove(getRegion(name));
return true;
}
}
@ -347,9 +395,31 @@ namespace TShockAPI.DB
com.AddParameter("@name", name);
com.AddParameter("@bool", state ? 1 : 0);
com.AddParameter("@worldid", Main.worldID.ToString());
int q = com.ExecuteNonQuery();
ReloadAllRegions();
return (q > 0);
com.ExecuteNonQuery();
getRegion(name).DisableBuild = state ? 1 : 0;
return true;
}
}
catch (Exception ex)
{
Log.Error(ex.ToString());
return false;
}
}
public bool SetRegionStateTest(string name, string world, bool state)
{
try
{
using (var com = database.CreateCommand())
{
com.CommandText = "UPDATE Regions SET Protected=@bool WHERE RegionName=@name AND WorldID=@worldid";
com.AddParameter("@name", name);
com.AddParameter("@bool", state ? 1 : 0);
com.AddParameter("@worldid", world);
com.ExecuteNonQuery();
getRegion(name).DisableBuild = state ? 1 : 0;
return true;
}
}
catch (Exception ex)
@ -392,7 +462,7 @@ namespace TShockAPI.DB
public static List<string> ListIDs(string MergedIDs)
{
List<string> SplitIDs = new List<string>();
var sb = new StringBuilder();
/*var sb = new StringBuilder();
for (int i = 0; i < MergedIDs.Length; i++)
{
char c = MergedIDs[i];
@ -406,6 +476,12 @@ namespace TShockAPI.DB
SplitIDs.Add(sb.ToString());
sb.Clear();
}
}*/
String[] s = MergedIDs.Split(',');
for( int i = 0; i < s.Length; i++ )
{
if (!s[i].Equals(""))
SplitIDs.Add(s[i]);
}
return SplitIDs;
}
@ -482,6 +558,16 @@ namespace TShockAPI.DB
}
return regions;
}
public Region getRegion(String name)
{
foreach (Region r in Regions)
{
if (r.RegionName.Equals(name))
return r;
}
return new Region();
}
}
public class Region

View file

@ -24,6 +24,7 @@ namespace UnitTests
public class ItemManagerTest
{
public static IDbConnection DB;
public static ItemManager manager;
[TestInitialize]
public void Initialize()
{
@ -32,33 +33,12 @@ namespace UnitTests
DB = new SqliteConnection(string.Format("uri=file://{0},Version=3", "tshock.test.sqlite"));
DB.Open();
/*try
{
var hostport = Config.MySqlHost.Split(':');
DB = new MySqlConnection();
DB.ConnectionString = String.Format("Server='{0}'; Port='{1}'; Database='{2}'; Uid='{3}'; Pwd='{4}';",
hostport[0],
hostport.Length > 1 ? hostport[1] : "3306",
Config.MySqlDbName,
Config.MySqlUsername,
Config.MySqlPassword
);
DB.Open();
}
catch (MySqlException ex)
{
Log.Error(ex.ToString());
throw new Exception("MySql not setup correctly");
}*/
manager = new ItemManager(DB);
}
[TestMethod]
public void SQLiteItemTest_AddBan()
{
//
// TODO: Add test logic here
//
ItemManager manager = new ItemManager(DB);
Assert.IsNotNull(manager);
Assert.IsFalse( manager.ItemIsBanned("Dirt Block"), "Item isn't banned" );
manager.AddNewBan("Dirt Block");
@ -74,10 +54,7 @@ namespace UnitTests
[TestMethod]
public void SQLiteItemTest_RemoveBan()
{
//
// TODO: Add test logic here
//
ItemManager manager = new ItemManager(DB);
manager = new ItemManager(DB);
Assert.IsNotNull(manager);
Assert.AreEqual(2, manager.ItemBans.Count);
manager.AddNewBan("Dirt Block");

View file

@ -29,51 +29,91 @@ namespace UnitTests
DB.Open();
manager = new RegionManager(DB);
manager.ReloadForUnitTest("test");
}
[TestMethod]
public void AddRegion()
{
Region r = new Region( new Rectangle(100,100,100,100), "test", 0, "test world");
Region r = new Region( new Rectangle(100,100,100,100), "test", 1, "test");
Assert.IsTrue(manager.AddRegion(r.RegionArea.X, r.RegionArea.Y, r.RegionArea.Width, r.RegionArea.Height, r.RegionName, r.RegionWorldID));
Assert.AreEqual(1, manager.Regions.Count);
Assert.IsNotNull(manager.getRegion("test"));
Region r2 = new Region(new Rectangle(201, 201, 100, 100), "test2", 0, "test world");
Region r2 = new Region(new Rectangle(201, 201, 100, 100), "test2", 1, "test");
manager.AddRegion(r2.RegionArea.X, r2.RegionArea.Y, r2.RegionArea.Width, r2.RegionArea.Height, r2.RegionName, r2.RegionWorldID);
Assert.AreEqual(2, manager.Regions.Count);
Assert.IsNotNull(manager.getRegion("test2"));
}
[TestMethod]
public void DeleteRegion()
{
Assert.IsTrue(2 == manager.Regions.Count);
Assert.IsTrue(manager.DeleteRegion("test"));
Assert.IsTrue(1 == manager.Regions.Count);
Assert.IsTrue(manager.DeleteRegion("test2"));
Assert.AreEqual(0, manager.Regions.Count);
Assert.IsTrue(0 == manager.Regions.Count);
}
[TestMethod]
public void InRegion()
{
//
// TODO: Add test logic here
//
Assert.IsTrue(manager.InArea(100, 100));
Assert.IsTrue(manager.InArea(150, 150));
Assert.IsTrue(manager.InArea(200, 200));
Assert.IsTrue(manager.InArea(201, 201));
Assert.IsTrue(manager.InArea(251, 251));
Assert.IsTrue(manager.InArea(301, 301));
Assert.IsFalse(manager.InArea(311, 311));
Assert.IsFalse(manager.InArea(99, 99));
}
[TestMethod]
public void TestMethod2()
public void SetRegionState()
{
//
// TODO: Add test logic here
//
Assert.IsTrue(manager.getRegion("test").DisableBuild == 1);
manager.SetRegionStateTest("test", "test", false);
Assert.IsTrue(manager.getRegion("test").DisableBuild == 0);
manager.SetRegionStateTest("test", "test", true);
Assert.IsTrue(manager.getRegion("test").DisableBuild == 1);
Assert.IsTrue(manager.getRegion("test2").DisableBuild == 1);
manager.SetRegionStateTest("test2", "test", false);
Assert.IsTrue(manager.getRegion("test2").DisableBuild == 0);
manager.SetRegionStateTest("test2", "test", true);
Assert.IsTrue(manager.getRegion("test2").DisableBuild == 1);
}
[TestMethod]
public void TestMethod3()
public void CanBuild()
{
//
// TODO: Add test logic here
//
/**
* For now, this test is useless. Need to implement user groups so we can alter Canbuild permission.
*/
TSPlayer t = new TSPlayer(0);
Assert.IsFalse( manager.CanBuild( 100,100,t) );
}
[TestMethod]
public void AddUser()
{
/**
* For now, this test is useless. Need to implement users so we have names to get ids from.
*/
}
[TestMethod]
public void ListID()
{
Assert.IsTrue(RegionManager.ListIDs("1,2,3,4,5").Count == 5);
Assert.IsTrue(RegionManager.ListIDs("").Count == 0);
}
[TestMethod]
public void ListRegions()
{
//needs a little more work.
}
[TestCleanup]

View file

@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<OrderedTest name="RegionManagerTest" storage="c:\users\virus\git\tshock\unittests\regionmanagertest.orderedtest" id="7601a790-d2fb-45d2-a612-1ae4de84eb61" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<OrderedTest name="regionmanagertest" storage="c:\users\virus\git\tshock\unittests\regionmanagertest.orderedtest" id="7601a790-d2fb-45d2-a612-1ae4de84eb61" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Execution id="e2bb6bb7-7bc7-43d5-bb81-e2d13d377599" />
<TestLinks>
<TestLink id="8d92e80b-8c9d-7a14-5c3a-eba6790be784" name="AddRegion" storage="bin\release\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="a8d03dce-530d-a255-9115-3b783c8a973c" name="DeleteRegion" storage="bin\release\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="57686a56-2684-8c17-1564-ed9a3c37b167" name="InRegion" storage="bin\release\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="c77a874e-5605-7aec-f487-110deaa7fafb" name="TestMethod2" storage="bin\release\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="521a8e25-1f75-066f-b839-56fee4f2a1b1" name="TestMethod3" storage="bin\release\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="05a473bf-6457-6122-6150-b1aa82e8f869" name="SetRegionState" storage="bin\release\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="999dec4b-8a9b-3d06-02fb-622ecb449e82" name="CanBuild" storage="bin\release\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="80e781d1-fd68-212a-9099-8791ad55ed9f" name="AddUser" storage="bin\release\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="dc9d05c0-db88-716a-bbe0-aff585f7681d" name="ListID" storage="bin\release\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="e13e8546-b310-71c3-e068-1ecd18bfec8f" name="ListRegions" storage="bin\release\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="a8d03dce-530d-a255-9115-3b783c8a973c" name="DeleteRegion" storage="bin\release\unittests.dll" type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</TestLinks>
</OrderedTest>