From 9349cf314963a2b74727b86e37b41642c7212d6d Mon Sep 17 00:00:00 2001
From: Sean Dague
Date: Fri, 12 Sep 2008 18:13:43 +0000
Subject: move the actual [Test] methods for databases to OpenSim.Data.Tests
 classes.  This did mean loosing 1 unit test that was actually testing an
 sqlite function directly instead of the interface.

---
 OpenSim/Data/SQLite/Tests/SQLiteAssetTest.cs  |  63 +--------
 OpenSim/Data/SQLite/Tests/SQLiteRegionTest.cs |  95 +------------
 OpenSim/Data/SQLite/Tests/SQLiteUserTest.cs   |  18 +--
 OpenSim/Data/Tests/BasicAssetTest.cs          | 104 +++++++++++++++
 OpenSim/Data/Tests/BasicInventoryTest.cs      | 184 ++++++++++++++++++++++++++
 OpenSim/Data/Tests/BasicInventoryTests.cs     | 184 --------------------------
 OpenSim/Data/Tests/BasicRegionTest.cs         | 132 ++++++++++++++++++
 OpenSim/Data/Tests/BasicUserTest.cs           |  63 +++++++++
 8 files changed, 492 insertions(+), 351 deletions(-)
 create mode 100644 OpenSim/Data/Tests/BasicAssetTest.cs
 create mode 100644 OpenSim/Data/Tests/BasicInventoryTest.cs
 delete mode 100644 OpenSim/Data/Tests/BasicInventoryTests.cs
 create mode 100644 OpenSim/Data/Tests/BasicRegionTest.cs
 create mode 100644 OpenSim/Data/Tests/BasicUserTest.cs

(limited to 'OpenSim/Data')

diff --git a/OpenSim/Data/SQLite/Tests/SQLiteAssetTest.cs b/OpenSim/Data/SQLite/Tests/SQLiteAssetTest.cs
index b88e29a..b399543 100644
--- a/OpenSim/Data/SQLite/Tests/SQLiteAssetTest.cs
+++ b/OpenSim/Data/SQLite/Tests/SQLiteAssetTest.cs
@@ -30,6 +30,7 @@ using System.Collections.Generic;
 using NUnit.Framework;
 using NUnit.Framework.SyntaxHelpers;
 using OpenSim.Framework;
+using OpenSim.Data.Tests;
 using OpenSim.Data.SQLite;
 using OpenSim.Region.Environment.Scenes;
 using OpenMetaverse;
@@ -37,26 +38,19 @@ using OpenMetaverse;
 namespace OpenSim.Data.SQLite.Tests
 {
     [TestFixture]
-    public class SQLiteAssetTest
+    public class SQLiteAssetTest : BasicAssetTest
     {
         public string file = "assettest.db";
         public string connect;
-        public SQLiteAssetData db;
-        public UUID uuid1;
-        public UUID uuid2;
-        public UUID uuid3;
-
         
         [TestFixtureSetUp]
         public void Init()
         {
+            SuperInit();
             System.Console.WriteLine("SQLiteAssetTest");
             connect = "URI=file:" + file + ",version=3";
             db = new SQLiteAssetData();
             db.Initialise(connect);
-            uuid1 = UUID.Random();
-            uuid2 = UUID.Random();
-            uuid3 = UUID.Random();
         }
 
         [TestFixtureTearDown]
@@ -64,56 +58,5 @@ namespace OpenSim.Data.SQLite.Tests
         {
             System.IO.File.Delete(file);
         }
-        
-        [Test]
-        public void T001_LoadEmpty()
-        {
-            Assert.That(db.ExistsAsset(uuid1), Is.False);
-            Assert.That(db.ExistsAsset(uuid2), Is.False);
-            Assert.That(db.ExistsAsset(uuid3), Is.False);
-        }
-        
-        [Test]
-        public void T010_StoreSimpleAsset()
-        {
-            AssetBase a1 = new AssetBase(uuid1, "asset one");
-            AssetBase a2 = new AssetBase(uuid2, "asset two");
-            AssetBase a3 = new AssetBase(uuid3, "asset three");
-            db.CreateAsset(a1);
-            db.CreateAsset(a2);
-            db.CreateAsset(a3);
-
-            AssetBase a1a = db.FetchAsset(uuid1);
-            Assert.That(a1.ID.ToString(), Text.Matches(a1a.ID.ToString()));
-            Assert.That(a1.Name, Text.Matches(a1a.Name));
-
-            AssetBase a2a = db.FetchAsset(uuid2);
-            Assert.That(a2.ID.ToString(), Text.Matches(a2a.ID.ToString()));
-            Assert.That(a2.Name, Text.Matches(a2a.Name));
-
-            AssetBase a3a = db.FetchAsset(uuid3);
-            Assert.That(a3.ID.ToString(), Text.Matches(a3a.ID.ToString()));
-            Assert.That(a3.Name, Text.Matches(a3a.Name));
-        }
-
-        [Test]
-        public void T011_ExistsSimpleAsset()
-        {
-            Assert.That(db.ExistsAsset(uuid1), Is.True);
-            Assert.That(db.ExistsAsset(uuid2), Is.True);
-            Assert.That(db.ExistsAsset(uuid3), Is.True);
-        }
-
-        // this has questionable use, but it is in the interface at the moment.
-        [Test]
-        public void T012_DeleteAsset()
-        {
-            db.DeleteAsset(uuid1);
-            db.DeleteAsset(uuid2);
-            db.DeleteAsset(uuid3);
-            Assert.That(db.ExistsAsset(uuid1), Is.False);
-            Assert.That(db.ExistsAsset(uuid2), Is.False);
-            Assert.That(db.ExistsAsset(uuid3), Is.False);
-        }
     }
 }
\ No newline at end of file
diff --git a/OpenSim/Data/SQLite/Tests/SQLiteRegionTest.cs b/OpenSim/Data/SQLite/Tests/SQLiteRegionTest.cs
index 2e93fd6..94b5bf1 100644
--- a/OpenSim/Data/SQLite/Tests/SQLiteRegionTest.cs
+++ b/OpenSim/Data/SQLite/Tests/SQLiteRegionTest.cs
@@ -30,6 +30,7 @@ using System.Collections.Generic;
 using NUnit.Framework;
 using NUnit.Framework.SyntaxHelpers;
 using OpenSim.Framework;
+using OpenSim.Data.Tests;
 using OpenSim.Data.SQLite;
 using OpenSim.Region.Environment.Scenes;
 using OpenMetaverse;
@@ -37,16 +38,15 @@ using OpenMetaverse;
 namespace OpenSim.Data.SQLite.Tests
 {
     [TestFixture]
-    public class SQLiteRegionTest
+    public class SQLiteRegionTest : BasicRegionTest
     {
         public string file = "regiontest.db";
         public string connect;
-        public SQLiteRegionData db;
-        public UUID region = UUID.Zero;
         
         [TestFixtureSetUp]
         public void Init()
         {
+            SuperInit();
             connect = "URI=file:" + file + ",version=3";
             db = new SQLiteRegionData();
             db.Initialise(connect);
@@ -57,94 +57,5 @@ namespace OpenSim.Data.SQLite.Tests
         {
             System.IO.File.Delete(file);
         }
-        
-        [Test]
-        public void T001_LoadEmpty()
-        {
-            List<SceneObjectGroup> objs = db.LoadObjects(region);
-            Assert.AreEqual(0, objs.Count);
-        }
-        
-        // SOG round trips
-        //  * store objects, make sure they save
-        //  * update 
-
-        [Test]
-        public void T010_StoreSimpleObject()
-        {
-            SceneObjectGroup sog = NewSOG("object1");
-            SceneObjectGroup sog2 = NewSOG("object2");
-            
-            db.StoreObject(sog, region);
-            db.StoreObject(sog2, region);
-
-            // This tests the ADO.NET driver
-            List<SceneObjectGroup> objs = db.LoadObjects(region);
-            Assert.AreEqual(2, objs.Count);
-
-            // This confirms things actually went to disk
-            db = new SQLiteRegionData();
-            db.Initialise(connect);
-
-            List<SceneObjectGroup> objs2 = db.LoadObjects(region);
-            Assert.AreEqual(2, objs2.Count);
-        }
-        
-        [Test]
-        public void T011_ObjectNames()
-        {
-            List<SceneObjectGroup> objs = db.LoadObjects(region);
-            foreach (SceneObjectGroup sog in objs)
-            {
-                SceneObjectPart p = sog.RootPart;
-                Assert.That("", Text.DoesNotMatch(p.Name));
-                Assert.That(p.Name, Text.Matches(p.Description));
-            }
-        }
-
-        [Test]
-        public void T012_UpdateObject()
-        {
-            string text = "object1 text";
-            SceneObjectGroup sog = FindSOG("object1", region);
-            sog.RootPart.Text = text;
-            db.StoreObject(sog, region);
-
-            sog = FindSOG("object1", region);
-            Assert.That(text, Text.Matches(sog.RootPart.Text));
-        }
-
-        // Extra private methods
-
-        private SceneObjectGroup FindSOG(string name, UUID r)
-        {
-            List<SceneObjectGroup> objs = db.LoadObjects(r);
-            foreach (SceneObjectGroup sog in objs)
-            {
-                SceneObjectPart p = sog.RootPart;
-                if (p.Name == name) {
-                    return sog;
-                }
-            }
-            return null;
-        }
-
-        private SceneObjectGroup NewSOG(string name)
-        {
-            SceneObjectGroup sog = new SceneObjectGroup();
-            SceneObjectPart sop = new SceneObjectPart();
-            sop.LocalId = 1;
-            sop.Name = name;
-            sop.Description = name;
-            sop.Text = "";
-            sop.SitName = "";
-            sop.TouchName = "";
-            sop.UUID = UUID.Random();
-            sop.Shape = PrimitiveBaseShape.Default;
-            sog.AddPart(sop);
-            sog.RootPart = sop;
-            return sog;
-        }
-
     }
 }
\ No newline at end of file
diff --git a/OpenSim/Data/SQLite/Tests/SQLiteUserTest.cs b/OpenSim/Data/SQLite/Tests/SQLiteUserTest.cs
index d00a177..d4aaf99 100644
--- a/OpenSim/Data/SQLite/Tests/SQLiteUserTest.cs
+++ b/OpenSim/Data/SQLite/Tests/SQLiteUserTest.cs
@@ -30,6 +30,7 @@ using System.Collections.Generic;
 using NUnit.Framework;
 using NUnit.Framework.SyntaxHelpers;
 using OpenSim.Framework;
+using OpenSim.Data.Tests;
 using OpenSim.Data.SQLite;
 using OpenSim.Region.Environment.Scenes;
 using OpenMetaverse;
@@ -37,25 +38,18 @@ using OpenMetaverse;
 namespace OpenSim.Data.SQLite.Tests
 {
     [TestFixture]
-    public class SQLiteUserTest
+    public class SQLiteUserTest : BasicUserTest
     {
         public string file = "usertest.db";
         public string connect;
-        public SQLiteUserData db;
-        public UUID uuid1;
-        public UUID uuid2;
-        public UUID uuid3;
-
         
         [TestFixtureSetUp]
         public void Init()
         {
+            SuperInit();
             connect = "URI=file:" + file + ",version=3";
             db = new SQLiteUserData();
             db.Initialise(connect);
-            uuid1 = UUID.Random();
-            uuid2 = UUID.Random();
-            uuid3 = UUID.Random();
         }
 
         [TestFixtureTearDown]
@@ -63,11 +57,5 @@ namespace OpenSim.Data.SQLite.Tests
         {
             System.IO.File.Delete(file);
         }
-        
-        [Test]
-        public void T001_LoadEmpty()
-        {
-            Assert.That(db.GetUserByUUID(uuid1), Is.Null);
-        }
     }
 }
\ No newline at end of file
diff --git a/OpenSim/Data/Tests/BasicAssetTest.cs b/OpenSim/Data/Tests/BasicAssetTest.cs
new file mode 100644
index 0000000..1e2069f
--- /dev/null
+++ b/OpenSim/Data/Tests/BasicAssetTest.cs
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSim Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+using OpenSim.Data;
+using OpenSim.Framework;
+using OpenSim.Region.Environment.Scenes;
+using OpenMetaverse;
+
+namespace OpenSim.Data.Tests
+{
+    public class BasicAssetTest
+    {
+        public AssetDataBase db;
+        public UUID uuid1;
+        public UUID uuid2;
+        public UUID uuid3;
+
+        public void SuperInit()
+        {
+            uuid1 = UUID.Random();
+            uuid2 = UUID.Random();
+            uuid3 = UUID.Random();
+        }
+        
+        [Test]
+        public void T001_LoadEmpty()
+        {
+            Assert.That(db.ExistsAsset(uuid1), Is.False);
+            Assert.That(db.ExistsAsset(uuid2), Is.False);
+            Assert.That(db.ExistsAsset(uuid3), Is.False);
+        }
+        
+        [Test]
+        public void T010_StoreSimpleAsset()
+        {
+            AssetBase a1 = new AssetBase(uuid1, "asset one");
+            AssetBase a2 = new AssetBase(uuid2, "asset two");
+            AssetBase a3 = new AssetBase(uuid3, "asset three");
+            db.CreateAsset(a1);
+            db.CreateAsset(a2);
+            db.CreateAsset(a3);
+
+            AssetBase a1a = db.FetchAsset(uuid1);
+            Assert.That(a1.ID.ToString(), Text.Matches(a1a.ID.ToString()));
+            Assert.That(a1.Name, Text.Matches(a1a.Name));
+
+            AssetBase a2a = db.FetchAsset(uuid2);
+            Assert.That(a2.ID.ToString(), Text.Matches(a2a.ID.ToString()));
+            Assert.That(a2.Name, Text.Matches(a2a.Name));
+
+            AssetBase a3a = db.FetchAsset(uuid3);
+            Assert.That(a3.ID.ToString(), Text.Matches(a3a.ID.ToString()));
+            Assert.That(a3.Name, Text.Matches(a3a.Name));
+        }
+
+        [Test]
+        public void T011_ExistsSimpleAsset()
+        {
+            Assert.That(db.ExistsAsset(uuid1), Is.True);
+            Assert.That(db.ExistsAsset(uuid2), Is.True);
+            Assert.That(db.ExistsAsset(uuid3), Is.True);
+        }
+
+        // this has questionable use, but it is in the interface at the moment.
+        // [Test]
+        // public void T012_DeleteAsset()
+        // {
+        //     db.DeleteAsset(uuid1);
+        //     db.DeleteAsset(uuid2);
+        //     db.DeleteAsset(uuid3);
+        //     Assert.That(db.ExistsAsset(uuid1), Is.False);
+        //     Assert.That(db.ExistsAsset(uuid2), Is.False);
+        //     Assert.That(db.ExistsAsset(uuid3), Is.False);
+        // }
+    }
+}
\ No newline at end of file
diff --git a/OpenSim/Data/Tests/BasicInventoryTest.cs b/OpenSim/Data/Tests/BasicInventoryTest.cs
new file mode 100644
index 0000000..a6f81f9
--- /dev/null
+++ b/OpenSim/Data/Tests/BasicInventoryTest.cs
@@ -0,0 +1,184 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSim Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+using OpenSim.Framework;
+using OpenSim.Data;
+using OpenSim.Region.Environment.Scenes;
+using OpenMetaverse;
+
+namespace OpenSim.Data.Tests
+{
+    public class BasicInventoryTest
+    {
+        public IInventoryDataPlugin db;
+        public UUID zero = UUID.Zero;
+        public UUID uuid1;
+        public UUID uuid2;
+        public UUID uuid3;
+        public UUID owner1;
+        public UUID owner2;
+        public UUID owner3;
+        public string name1;
+        public string name2;
+        public string name3;
+
+        public void SuperInit()
+        {
+            uuid1 = UUID.Random();
+            uuid2 = UUID.Random();
+            uuid3 = UUID.Random();
+            owner1 = UUID.Random();
+            owner2 = UUID.Random();
+            owner3 = UUID.Random();
+            name1 = "Root Folder for " + owner1.ToString();
+            name2 = "First Level folder";
+            name3 = "First Level folder 2";
+        }
+        
+        [Test]
+        public void T001_LoadEmpty()
+        {
+            Assert.That(db.getInventoryItem(uuid1), Is.Null);
+            Assert.That(db.getUserRootFolder(owner1), Is.Null);
+        }
+
+        // 01x - folder tests
+        [Test]
+        public void T010_FolderNonParent()
+        {
+            InventoryFolderBase f1 = NewFolder(uuid2, uuid1, owner1, name2);
+            // the folder will go in
+            db.addInventoryFolder(f1);
+            InventoryFolderBase f1a = db.getUserRootFolder(owner1);
+            Assert.That(f1a, Is.Null);
+        }
+
+        [Test]
+        public void T011_FolderCreate()
+        {
+            InventoryFolderBase f1 = NewFolder(uuid1, zero, owner1, name1);
+            // TODO: this is probably wrong behavior, but is what we have
+            // db.updateInventoryFolder(f1);
+            // InventoryFolderBase f1a = db.getUserRootFolder(owner1);
+            // Assert.That(uuid1, Is.EqualTo(f1a.ID))
+            // Assert.That(name1, Text.Matches(f1a.Name));
+            // Assert.That(db.getUserRootFolder(owner1), Is.Null);
+
+            // succeed with true
+            db.addInventoryFolder(f1);
+            InventoryFolderBase f1a = db.getUserRootFolder(owner1);
+            Assert.That(uuid1, Is.EqualTo(f1a.ID));
+            Assert.That(name1, Text.Matches(f1a.Name));
+        }
+
+        // we now have the following tree
+        // uuid1
+        //   +--- uuid2
+        //   +--- uuid3
+
+        [Test]
+        public void T012_FolderList()
+        {
+            InventoryFolderBase f2 = NewFolder(uuid3, uuid1, owner1, name3);
+            db.addInventoryFolder(f2);
+           
+            Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1));
+
+            Assert.That(db.getInventoryFolders(uuid1).Count, Is.EqualTo(2));
+
+            Assert.That(db.getInventoryFolders(uuid2).Count, Is.EqualTo(0));
+
+            Assert.That(db.getInventoryFolders(uuid3).Count, Is.EqualTo(0));
+
+            Assert.That(db.getInventoryFolders(UUID.Random()).Count, Is.EqualTo(0));
+
+        }
+        
+        [Test]
+        public void T013_FolderHierarchy()
+        {
+            Assert.That(db.getFolderHierarchy(zero).Count, Is.EqualTo(0));
+
+            Assert.That(db.getFolderHierarchy(uuid1).Count, Is.EqualTo(2));
+
+            Assert.That(db.getFolderHierarchy(uuid2).Count, Is.EqualTo(0));
+
+            Assert.That(db.getFolderHierarchy(uuid3).Count, Is.EqualTo(0));
+            
+            Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0));
+        }
+
+        
+        [Test]
+        public void T014_MoveFolder()
+        {
+            InventoryFolderBase f2 = db.getInventoryFolder(uuid2);
+            f2.ParentID = uuid3;
+            db.moveInventoryFolder(f2);
+           
+            Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1));
+
+            Assert.That(db.getInventoryFolders(uuid1).Count, Is.EqualTo(1));
+
+            Assert.That(db.getInventoryFolders(uuid2).Count, Is.EqualTo(0));
+
+            Assert.That(db.getInventoryFolders(uuid3).Count, Is.EqualTo(1));
+
+            Assert.That(db.getInventoryFolders(UUID.Random()).Count, Is.EqualTo(0));
+        }
+
+        [Test]
+        public void T015_FolderHierarchy()
+        {
+            Assert.That(db.getFolderHierarchy(zero).Count, Is.EqualTo(0));
+
+            Assert.That(db.getFolderHierarchy(uuid1).Count, Is.EqualTo(2));
+
+            Assert.That(db.getFolderHierarchy(uuid2).Count, Is.EqualTo(0));
+
+            Assert.That(db.getFolderHierarchy(uuid3).Count, Is.EqualTo(1));
+            
+            Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0));
+        }
+
+
+
+        private InventoryFolderBase NewFolder(UUID id, UUID parent, UUID owner, string name)
+        {
+            InventoryFolderBase f = new InventoryFolderBase();
+            f.ID = id;
+            f.ParentID = parent;
+            f.Owner = owner;
+            f.Name = name;
+            return f;
+        }
+    }
+}
\ No newline at end of file
diff --git a/OpenSim/Data/Tests/BasicInventoryTests.cs b/OpenSim/Data/Tests/BasicInventoryTests.cs
deleted file mode 100644
index a6f81f9..0000000
--- a/OpenSim/Data/Tests/BasicInventoryTests.cs
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSim Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using NUnit.Framework;
-using NUnit.Framework.SyntaxHelpers;
-using OpenSim.Framework;
-using OpenSim.Data;
-using OpenSim.Region.Environment.Scenes;
-using OpenMetaverse;
-
-namespace OpenSim.Data.Tests
-{
-    public class BasicInventoryTest
-    {
-        public IInventoryDataPlugin db;
-        public UUID zero = UUID.Zero;
-        public UUID uuid1;
-        public UUID uuid2;
-        public UUID uuid3;
-        public UUID owner1;
-        public UUID owner2;
-        public UUID owner3;
-        public string name1;
-        public string name2;
-        public string name3;
-
-        public void SuperInit()
-        {
-            uuid1 = UUID.Random();
-            uuid2 = UUID.Random();
-            uuid3 = UUID.Random();
-            owner1 = UUID.Random();
-            owner2 = UUID.Random();
-            owner3 = UUID.Random();
-            name1 = "Root Folder for " + owner1.ToString();
-            name2 = "First Level folder";
-            name3 = "First Level folder 2";
-        }
-        
-        [Test]
-        public void T001_LoadEmpty()
-        {
-            Assert.That(db.getInventoryItem(uuid1), Is.Null);
-            Assert.That(db.getUserRootFolder(owner1), Is.Null);
-        }
-
-        // 01x - folder tests
-        [Test]
-        public void T010_FolderNonParent()
-        {
-            InventoryFolderBase f1 = NewFolder(uuid2, uuid1, owner1, name2);
-            // the folder will go in
-            db.addInventoryFolder(f1);
-            InventoryFolderBase f1a = db.getUserRootFolder(owner1);
-            Assert.That(f1a, Is.Null);
-        }
-
-        [Test]
-        public void T011_FolderCreate()
-        {
-            InventoryFolderBase f1 = NewFolder(uuid1, zero, owner1, name1);
-            // TODO: this is probably wrong behavior, but is what we have
-            // db.updateInventoryFolder(f1);
-            // InventoryFolderBase f1a = db.getUserRootFolder(owner1);
-            // Assert.That(uuid1, Is.EqualTo(f1a.ID))
-            // Assert.That(name1, Text.Matches(f1a.Name));
-            // Assert.That(db.getUserRootFolder(owner1), Is.Null);
-
-            // succeed with true
-            db.addInventoryFolder(f1);
-            InventoryFolderBase f1a = db.getUserRootFolder(owner1);
-            Assert.That(uuid1, Is.EqualTo(f1a.ID));
-            Assert.That(name1, Text.Matches(f1a.Name));
-        }
-
-        // we now have the following tree
-        // uuid1
-        //   +--- uuid2
-        //   +--- uuid3
-
-        [Test]
-        public void T012_FolderList()
-        {
-            InventoryFolderBase f2 = NewFolder(uuid3, uuid1, owner1, name3);
-            db.addInventoryFolder(f2);
-           
-            Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1));
-
-            Assert.That(db.getInventoryFolders(uuid1).Count, Is.EqualTo(2));
-
-            Assert.That(db.getInventoryFolders(uuid2).Count, Is.EqualTo(0));
-
-            Assert.That(db.getInventoryFolders(uuid3).Count, Is.EqualTo(0));
-
-            Assert.That(db.getInventoryFolders(UUID.Random()).Count, Is.EqualTo(0));
-
-        }
-        
-        [Test]
-        public void T013_FolderHierarchy()
-        {
-            Assert.That(db.getFolderHierarchy(zero).Count, Is.EqualTo(0));
-
-            Assert.That(db.getFolderHierarchy(uuid1).Count, Is.EqualTo(2));
-
-            Assert.That(db.getFolderHierarchy(uuid2).Count, Is.EqualTo(0));
-
-            Assert.That(db.getFolderHierarchy(uuid3).Count, Is.EqualTo(0));
-            
-            Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0));
-        }
-
-        
-        [Test]
-        public void T014_MoveFolder()
-        {
-            InventoryFolderBase f2 = db.getInventoryFolder(uuid2);
-            f2.ParentID = uuid3;
-            db.moveInventoryFolder(f2);
-           
-            Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1));
-
-            Assert.That(db.getInventoryFolders(uuid1).Count, Is.EqualTo(1));
-
-            Assert.That(db.getInventoryFolders(uuid2).Count, Is.EqualTo(0));
-
-            Assert.That(db.getInventoryFolders(uuid3).Count, Is.EqualTo(1));
-
-            Assert.That(db.getInventoryFolders(UUID.Random()).Count, Is.EqualTo(0));
-        }
-
-        [Test]
-        public void T015_FolderHierarchy()
-        {
-            Assert.That(db.getFolderHierarchy(zero).Count, Is.EqualTo(0));
-
-            Assert.That(db.getFolderHierarchy(uuid1).Count, Is.EqualTo(2));
-
-            Assert.That(db.getFolderHierarchy(uuid2).Count, Is.EqualTo(0));
-
-            Assert.That(db.getFolderHierarchy(uuid3).Count, Is.EqualTo(1));
-            
-            Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0));
-        }
-
-
-
-        private InventoryFolderBase NewFolder(UUID id, UUID parent, UUID owner, string name)
-        {
-            InventoryFolderBase f = new InventoryFolderBase();
-            f.ID = id;
-            f.ParentID = parent;
-            f.Owner = owner;
-            f.Name = name;
-            return f;
-        }
-    }
-}
\ No newline at end of file
diff --git a/OpenSim/Data/Tests/BasicRegionTest.cs b/OpenSim/Data/Tests/BasicRegionTest.cs
new file mode 100644
index 0000000..39692f1
--- /dev/null
+++ b/OpenSim/Data/Tests/BasicRegionTest.cs
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSim Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+using OpenSim.Framework;
+using OpenSim.Data;
+using OpenSim.Region.Environment.Interfaces;
+using OpenSim.Region.Environment.Scenes;
+using OpenMetaverse;
+
+namespace OpenSim.Data.Tests
+{
+    public class BasicRegionTest
+    {
+        public IRegionDataStore db;
+        public UUID region;
+
+        public void SuperInit()
+        {
+            region = UUID.Random();
+        }
+
+        [Test]
+        public void T001_LoadEmpty()
+        {
+            List<SceneObjectGroup> objs = db.LoadObjects(region);
+            Assert.AreEqual(0, objs.Count);
+        }
+        
+        // SOG round trips
+        //  * store objects, make sure they save
+        //  * update 
+
+        [Test]
+        public void T010_StoreSimpleObject()
+        {
+            SceneObjectGroup sog = NewSOG("object1");
+            SceneObjectGroup sog2 = NewSOG("object2");
+            
+            db.StoreObject(sog, region);
+            db.StoreObject(sog2, region);
+
+            // This tests the ADO.NET driver
+            List<SceneObjectGroup> objs = db.LoadObjects(region);
+            Assert.AreEqual(2, objs.Count);
+        }
+        
+        [Test]
+        public void T011_ObjectNames()
+        {
+            List<SceneObjectGroup> objs = db.LoadObjects(region);
+            foreach (SceneObjectGroup sog in objs)
+            {
+                SceneObjectPart p = sog.RootPart;
+                Assert.That("", Text.DoesNotMatch(p.Name));
+                Assert.That(p.Name, Text.Matches(p.Description));
+            }
+        }
+
+        [Test]
+        public void T012_UpdateObject()
+        {
+            string text = "object1 text";
+            SceneObjectGroup sog = FindSOG("object1", region);
+            sog.RootPart.Text = text;
+            db.StoreObject(sog, region);
+
+            sog = FindSOG("object1", region);
+            Assert.That(text, Text.Matches(sog.RootPart.Text));
+        }
+
+        // Extra private methods
+
+        private SceneObjectGroup FindSOG(string name, UUID r)
+        {
+            List<SceneObjectGroup> objs = db.LoadObjects(r);
+            foreach (SceneObjectGroup sog in objs)
+            {
+                SceneObjectPart p = sog.RootPart;
+                if (p.Name == name) {
+                    return sog;
+                }
+            }
+            return null;
+        }
+
+        private SceneObjectGroup NewSOG(string name)
+        {
+            SceneObjectGroup sog = new SceneObjectGroup();
+            SceneObjectPart sop = new SceneObjectPart();
+            sop.LocalId = 1;
+            sop.Name = name;
+            sop.Description = name;
+            sop.Text = "";
+            sop.SitName = "";
+            sop.TouchName = "";
+            sop.UUID = UUID.Random();
+            sop.Shape = PrimitiveBaseShape.Default;
+            sog.AddPart(sop);
+            sog.RootPart = sop;
+            return sog;
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/OpenSim/Data/Tests/BasicUserTest.cs b/OpenSim/Data/Tests/BasicUserTest.cs
new file mode 100644
index 0000000..9e79193
--- /dev/null
+++ b/OpenSim/Data/Tests/BasicUserTest.cs
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSim Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+using OpenSim.Data;
+using OpenSim.Framework;
+using OpenSim.Region.Environment.Scenes;
+using OpenMetaverse;
+
+namespace OpenSim.Data.Tests
+{
+    public class BasicUserTest
+    {
+        public UserDataBase db;
+        public UUID uuid1;
+        public UUID uuid2;
+        public UUID uuid3;
+
+        public void SuperInit()
+        {
+            uuid1 = UUID.Random();
+            uuid2 = UUID.Random();
+            uuid3 = UUID.Random();
+        }
+
+        [Test]
+        public void T001_LoadEmpty()
+        {
+            Assert.That(db.GetUserByUUID(UUID.Zero), Is.Null);
+            Assert.That(db.GetUserByUUID(uuid1), Is.Null);
+            Assert.That(db.GetUserByUUID(uuid2), Is.Null);
+            Assert.That(db.GetUserByUUID(uuid3), Is.Null);
+            Assert.That(db.GetUserByUUID(UUID.Random()), Is.Null);
+        }
+    }
+}
\ No newline at end of file
-- 
cgit v1.1