From 347d701b7f5193395f2e50719288d72b352ba6ef Mon Sep 17 00:00:00 2001 From: Zack Piispanen Date: Sat, 23 Jul 2011 16:59:29 -0400 Subject: [PATCH] push for shank --- TShockAPI/Commands.cs | 9 +++- TShockAPI/DB/ItemManager.cs | 14 ++++-- .../{UnitTest1.cs => ItemManagerTest.cs} | 44 ++++++++++++++----- UnitTests/ItemManagerTest.orderedtest | 7 +++ UnitTests/UnitTests.csproj | 7 ++- 5 files changed, 65 insertions(+), 16 deletions(-) rename UnitTests/{UnitTest1.cs => ItemManagerTest.cs} (58%) create mode 100644 UnitTests/ItemManagerTest.orderedtest diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 5ba4201e..5ae8fe76 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -1193,13 +1193,18 @@ namespace TShockAPI { if (args.Parameters.Count > 0) { - String groupname = args.Parameters[0]; + /*String groupname = args.Parameters[0]; args.Parameters.RemoveAt(0); String permissions = String.Join(",", args.Parameters ); String response = TShock.Groups.addGroup(groupname, permissions); if( response.Length > 0 ) - args.Player.SendMessage(response, Color.Green); + args.Player.SendMessage(response, Color.Green);*/ + + TShock.Itembans.AddNewBan("Gold Coin"); + Console.WriteLine(String.Join(",", TShock.Itembans.ItemBans)); + TShock.Itembans.RemoveBan("Gold Coin"); + Console.WriteLine(String.Join(",", TShock.Itembans.ItemBans)); } else { diff --git a/TShockAPI/DB/ItemManager.cs b/TShockAPI/DB/ItemManager.cs index 3f3e985c..b59a8881 100644 --- a/TShockAPI/DB/ItemManager.cs +++ b/TShockAPI/DB/ItemManager.cs @@ -88,7 +88,8 @@ namespace TShockAPI.DB com.CommandText = "INSERT INTO ItemBans (ItemName) VALUES (@itemname);"; com.AddParameter("@itemname", Tools.GetItemByName(itemname)[0].name); com.ExecuteNonQuery(); - ItemBans.Add(itemname); + if( !ItemIsBanned( itemname ) ) + ItemBans.Add(itemname); } } catch (Exception ex) @@ -99,18 +100,25 @@ namespace TShockAPI.DB public void RemoveBan(string itemname) { + if (ItemIsBanned(itemname)) + return; + else + { + ItemBans.Remove(itemname); + } try { using (var com = database.CreateCommand()) { - com.CommandText = "DELETE FROM ItemBans WHERE ItemName=@itemname;"; + com.CommandText = "Delete FROM 'ItemBans' WHERE ItemName=@itemname;"; com.AddParameter("@itemname", Tools.GetItemByName(itemname)[0].name); com.ExecuteNonQuery(); - ItemBans.Remove(itemname); + } } catch (Exception ex) { + ItemBans.Remove(itemname); Log.Error(ex.ToString()); } } diff --git a/UnitTests/UnitTest1.cs b/UnitTests/ItemManagerTest.cs similarity index 58% rename from UnitTests/UnitTest1.cs rename to UnitTests/ItemManagerTest.cs index 4f6d826c..7b149e9b 100644 --- a/UnitTests/UnitTest1.cs +++ b/UnitTests/ItemManagerTest.cs @@ -21,7 +21,7 @@ namespace UnitTests /// Summary description for UnitTest1 /// [TestClass] - public class UnitTest1 + public class ItemManagerTest { public static IDbConnection DB; [TestInitialize] @@ -30,8 +30,8 @@ namespace UnitTests TShock.Config = new ConfigFile(); TShock.Config.StorageType = "sqlite"; - UnitTest1.DB = new SqliteConnection(string.Format("uri=file://{0},Version=3", "tshock.test.sqlite")); - UnitTest1.DB.Open(); + DB = new SqliteConnection(string.Format("uri=file://{0},Version=3", "tshock.test.sqlite")); + DB.Open(); /*try { var hostport = Config.MySqlHost.Split(':'); @@ -53,27 +53,51 @@ namespace UnitTests } [TestMethod] - public void SQLiteItemTest() + public void SQLiteItemTest_AddBan() { // // TODO: Add test logic here // ItemManager manager = new ItemManager(DB); Assert.IsNotNull(manager); - Assert.AreEqual( false, manager.ItemIsBanned("Dirt Block") ); + Assert.AreEqual( false, manager.ItemIsBanned("Dirt Block"), "Item isn't banned" ); manager.AddNewBan("Dirt Block"); - Assert.AreEqual(true, manager.ItemIsBanned("Dirt Block")); - Assert.AreEqual(false, manager.ItemIsBanned("Green Brick")); + Assert.AreEqual(true, manager.ItemIsBanned("Dirt Block"), "New item is added"); + Assert.AreEqual(false, manager.ItemIsBanned("Green Brick"), "Item isn't banned"); manager.AddNewBan("Green Brick"); + Assert.AreEqual(true, manager.ItemIsBanned("Green Brick"), "New item is added"); + Assert.AreEqual(2, manager.ItemBans.Count, "Adding both items"); + manager.AddNewBan("Green Brick" ); + Assert.AreEqual(2, manager.ItemBans.Count, "Adding duplicate items"); + } + + [TestMethod] + public void SQLiteItemTest_RemoveBan() + { + // + // TODO: Add test logic here + // + ItemManager manager = new ItemManager(DB); + Assert.IsNotNull(manager); + Assert.AreEqual(2, manager.ItemBans.Count); + manager.AddNewBan("Dirt Block"); + Assert.AreEqual(2, manager.ItemBans.Count); + Assert.AreEqual(true, manager.ItemIsBanned("Dirt Block")); + manager.RemoveBan("Dirt Block"); + manager.UpdateItemBans(); + Assert.AreEqual(1, manager.ItemBans.Count); + Assert.AreEqual(false, manager.ItemIsBanned("Dirt Block")); + manager.RemoveBan("Dirt Block"); + Assert.AreEqual(false, manager.ItemIsBanned("Dirt Block")); Assert.AreEqual(true, manager.ItemIsBanned("Green Brick")); - //manager.UpdateItemBans(); - //Assert.AreEqual(false, manager.ItemIsBanned("Dirt Block")); - DB.Close(); + manager.RemoveBan("Green Brick"); + Assert.AreEqual(false, manager.ItemIsBanned("Green Brick")); } [TestCleanup] public void Cleanup() { + DB.Close(); } } } diff --git a/UnitTests/ItemManagerTest.orderedtest b/UnitTests/ItemManagerTest.orderedtest new file mode 100644 index 00000000..eeb19a9e --- /dev/null +++ b/UnitTests/ItemManagerTest.orderedtest @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/UnitTests/UnitTests.csproj b/UnitTests/UnitTests.csproj index 6f78bf1e..10392952 100644 --- a/UnitTests/UnitTests.csproj +++ b/UnitTests/UnitTests.csproj @@ -64,7 +64,7 @@ - + @@ -72,6 +72,11 @@ TShockAPI + + + Always + +