From 7f70ae0ebd686507bc15ac6fc7eeb75ed0b9b64a Mon Sep 17 00:00:00 2001
From: AlexRa
Date: Mon, 17 May 2010 15:54:43 +0300
Subject: All data tests made DBMS-independent
---
OpenSim/Data/MSSQL/MSSQLEstateData.cs | 2 +-
OpenSim/Data/MySQL/Tests/MySQLEstateTest.cs | 116 ---
OpenSim/Data/MySQL/Tests/MySQLInventoryTest.cs | 99 --
OpenSim/Data/MySQL/Tests/MySQLRegionTest.cs | 112 ---
OpenSim/Data/SQLite/Tests/SQLiteEstateTest.cs | 65 --
OpenSim/Data/SQLite/Tests/SQLiteInventoryTest.cs | 66 --
OpenSim/Data/SQLite/Tests/SQLiteRegionTest.cs | 64 --
OpenSim/Data/Tests/BasicEstateTest.cs | 497 ----------
OpenSim/Data/Tests/BasicInventoryTest.cs | 339 -------
OpenSim/Data/Tests/BasicRegionTest.cs | 1061 ---------------------
OpenSim/Data/Tests/EstateTests.cs | 540 +++++++++++
OpenSim/Data/Tests/InventoryTests.cs | 347 +++++++
OpenSim/Data/Tests/RegionTests.cs | 1082 ++++++++++++++++++++++
13 files changed, 1970 insertions(+), 2420 deletions(-)
delete mode 100644 OpenSim/Data/MySQL/Tests/MySQLEstateTest.cs
delete mode 100644 OpenSim/Data/MySQL/Tests/MySQLInventoryTest.cs
delete mode 100644 OpenSim/Data/MySQL/Tests/MySQLRegionTest.cs
delete mode 100644 OpenSim/Data/SQLite/Tests/SQLiteEstateTest.cs
delete mode 100644 OpenSim/Data/SQLite/Tests/SQLiteInventoryTest.cs
delete mode 100644 OpenSim/Data/SQLite/Tests/SQLiteRegionTest.cs
delete mode 100644 OpenSim/Data/Tests/BasicEstateTest.cs
delete mode 100644 OpenSim/Data/Tests/BasicInventoryTest.cs
delete mode 100644 OpenSim/Data/Tests/BasicRegionTest.cs
create mode 100644 OpenSim/Data/Tests/EstateTests.cs
create mode 100644 OpenSim/Data/Tests/InventoryTests.cs
create mode 100644 OpenSim/Data/Tests/RegionTests.cs
(limited to 'OpenSim/Data')
diff --git a/OpenSim/Data/MSSQL/MSSQLEstateData.cs b/OpenSim/Data/MSSQL/MSSQLEstateData.cs
index 66931e2..80bf106 100644
--- a/OpenSim/Data/MSSQL/MSSQLEstateData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLEstateData.cs
@@ -37,7 +37,7 @@ using OpenSim.Region.Framework.Interfaces;
namespace OpenSim.Data.MSSQL
{
- public class MSSQLEstateData : IEstateDataStore
+ public class MSSQLEstateStore : IEstateDataStore
{
private const string _migrationStore = "EstateStore";
diff --git a/OpenSim/Data/MySQL/Tests/MySQLEstateTest.cs b/OpenSim/Data/MySQL/Tests/MySQLEstateTest.cs
deleted file mode 100644
index 01afcae..0000000
--- a/OpenSim/Data/MySQL/Tests/MySQLEstateTest.cs
+++ /dev/null
@@ -1,116 +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 OpenSimulator 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 NUnit.Framework;
-using OpenSim.Data.Tests;
-using log4net;
-using System.Reflection;
-using OpenSim.Tests.Common;
-using MySql.Data.MySqlClient;
-
-
-namespace OpenSim.Data.MySQL.Tests
-{
- [TestFixture, DatabaseTest]
- public class MySQLEstateTest : BasicEstateTest
- {
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- public string file;
- public string connect = "Server=localhost;Port=3306;Database=opensim-nunit;User ID=opensim-nunit;Password=opensim-nunit;Pooling=false;";
-
- [TestFixtureSetUp]
- public void Init()
- {
- SuperInit();
- // If we manage to connect to the database with the user
- // and password above it is our test database, and run
- // these tests. If anything goes wrong, ignore these
- // tests.
- try
- {
- // clear db incase to ensure we are in a clean state
- ClearDB();
-
- regionDb = new MySQLDataStore();
- regionDb.Initialise(connect);
- db = new MySQLEstateStore();
- db.Initialise(connect);
- }
- catch (Exception e)
- {
- m_log.Error("Exception {0}", e);
- Assert.Ignore();
- }
- }
-
- [TestFixtureTearDown]
- public void Cleanup()
- {
- if (regionDb != null)
- {
- regionDb.Dispose();
- }
- ClearDB();
- }
-
- private void ClearDB()
- {
- // if a new table is added, it has to be dropped here
- ExecuteSql("drop table if exists migrations");
- ExecuteSql("drop table if exists prims");
- ExecuteSql("drop table if exists primshapes");
- ExecuteSql("drop table if exists primitems");
- ExecuteSql("drop table if exists terrain");
- ExecuteSql("drop table if exists land");
- ExecuteSql("drop table if exists landaccesslist");
- ExecuteSql("drop table if exists regionban");
- ExecuteSql("drop table if exists regionsettings");
- ExecuteSql("drop table if exists estate_managers");
- ExecuteSql("drop table if exists estate_groups");
- ExecuteSql("drop table if exists estate_users");
- ExecuteSql("drop table if exists estateban");
- ExecuteSql("drop table if exists estate_settings");
- ExecuteSql("drop table if exists estate_map");
- }
-
- ///
- /// Execute a MySqlCommand
- ///
- /// sql string to execute
- private void ExecuteSql(string sql)
- {
- using (MySqlConnection dbcon = new MySqlConnection(connect))
- {
- dbcon.Open();
-
- MySqlCommand cmd = new MySqlCommand(sql, dbcon);
- cmd.ExecuteNonQuery();
- }
- }
- }
-}
diff --git a/OpenSim/Data/MySQL/Tests/MySQLInventoryTest.cs b/OpenSim/Data/MySQL/Tests/MySQLInventoryTest.cs
deleted file mode 100644
index 4575493..0000000
--- a/OpenSim/Data/MySQL/Tests/MySQLInventoryTest.cs
+++ /dev/null
@@ -1,99 +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 OpenSimulator 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 NUnit.Framework;
-using OpenSim.Data.Tests;
-using log4net;
-using System.Reflection;
-using OpenSim.Tests.Common;
-using MySql.Data.MySqlClient;
-
-
-namespace OpenSim.Data.MySQL.Tests
-{
- [TestFixture, DatabaseTest]
- public class MySQLInventoryTest : BasicInventoryTest
- {
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- public string file;
- public string connect = "Server=localhost;Port=3306;Database=opensim-nunit;User ID=opensim-nunit;Password=opensim-nunit;Pooling=false;";
-
- [TestFixtureSetUp]
- public void Init()
- {
- SuperInit();
- // If we manage to connect to the database with the user
- // and password above it is our test database, and run
- // these tests. If anything goes wrong, ignore these
- // tests.
- try
- {
- DropTables();
- db = new MySQLInventoryData();
- db.Initialise(connect);
- }
- catch (Exception e)
- {
- m_log.Error("Exception {0}", e);
- Assert.Ignore();
- }
- }
-
- [TestFixtureTearDown]
- public void Cleanup()
- {
- if (db != null)
- {
- db.Dispose();
- }
- DropTables();
- }
-
- private void DropTables()
- {
- ExecuteSql("drop table IF EXISTS inventoryitems");
- ExecuteSql("drop table IF EXISTS inventoryfolders");
- ExecuteSql("drop table IF EXISTS migrations");
- }
-
- ///
- /// Execute a MySqlCommand
- ///
- /// sql string to execute
- private void ExecuteSql(string sql)
- {
- using (MySqlConnection dbcon = new MySqlConnection(connect))
- {
- dbcon.Open();
-
- MySqlCommand cmd = new MySqlCommand(sql, dbcon);
- cmd.ExecuteNonQuery();
- }
- }
- }
-}
diff --git a/OpenSim/Data/MySQL/Tests/MySQLRegionTest.cs b/OpenSim/Data/MySQL/Tests/MySQLRegionTest.cs
deleted file mode 100644
index e7e57e4..0000000
--- a/OpenSim/Data/MySQL/Tests/MySQLRegionTest.cs
+++ /dev/null
@@ -1,112 +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 OpenSimulator 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 NUnit.Framework;
-using OpenSim.Data.Tests;
-using log4net;
-using System.Reflection;
-using OpenSim.Tests.Common;
-using MySql.Data.MySqlClient;
-
-namespace OpenSim.Data.MySQL.Tests
-{
- [TestFixture, DatabaseTest]
- public class MySQLRegionTest : BasicRegionTest
- {
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- public string file;
- public string connect = "Server=localhost;Port=3306;Database=opensim-nunit;User ID=opensim-nunit;Password=opensim-nunit;Pooling=false;";
-
- [TestFixtureSetUp]
- public void Init()
- {
- SuperInit();
- // If we manage to connect to the database with the user
- // and password above it is our test database, and run
- // these tests. If anything goes wrong, ignore these
- // tests.
- try
- {
- // this is important in case a previous run ended badly
- ClearDB();
-
- db = new MySQLDataStore();
- db.Initialise(connect);
- }
- catch (Exception e)
- {
- m_log.Error("Exception {0}", e);
- Assert.Ignore();
- }
- }
-
- [TestFixtureTearDown]
- public void Cleanup()
- {
- if (db != null)
- {
- db.Dispose();
- }
- ClearDB();
- }
-
- private void ClearDB()
- {
- ExecuteSql("drop table if exists migrations");
- ExecuteSql("drop table if exists prims");
- ExecuteSql("drop table if exists primshapes");
- ExecuteSql("drop table if exists primitems");
- ExecuteSql("drop table if exists terrain");
- ExecuteSql("drop table if exists land");
- ExecuteSql("drop table if exists landaccesslist");
- ExecuteSql("drop table if exists regionban");
- ExecuteSql("drop table if exists regionsettings");
- ExecuteSql("drop table if exists estate_managers");
- ExecuteSql("drop table if exists estate_groups");
- ExecuteSql("drop table if exists estate_users");
- ExecuteSql("drop table if exists estateban");
- ExecuteSql("drop table if exists estate_settings");
- ExecuteSql("drop table if exists estate_map");
- }
-
- ///
- /// Execute a MySqlCommand
- ///
- /// sql string to execute
- private void ExecuteSql(string sql)
- {
- using (MySqlConnection dbcon = new MySqlConnection(connect))
- {
- dbcon.Open();
-
- MySqlCommand cmd = new MySqlCommand(sql, dbcon);
- cmd.ExecuteNonQuery();
- }
- }
- }
-}
diff --git a/OpenSim/Data/SQLite/Tests/SQLiteEstateTest.cs b/OpenSim/Data/SQLite/Tests/SQLiteEstateTest.cs
deleted file mode 100644
index 30f6641..0000000
--- a/OpenSim/Data/SQLite/Tests/SQLiteEstateTest.cs
+++ /dev/null
@@ -1,65 +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 OpenSimulator 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.IO;
-using NUnit.Framework;
-using OpenSim.Data.Tests;
-using OpenSim.Tests.Common;
-
-namespace OpenSim.Data.SQLite.Tests
-{
- [TestFixture, DatabaseTest]
- public class SQLiteEstateTest : BasicEstateTest
- {
- public string file = "regiontest.db";
- public string connect;
-
- [TestFixtureSetUp]
- public void Init()
- {
- // SQLite doesn't work on power or z linux
- if (Directory.Exists("/proc/ppc64") || Directory.Exists("/proc/dasd"))
- {
- Assert.Ignore();
- }
-
- SuperInit();
- file = Path.GetTempFileName() + ".db";
- connect = "URI=file:" + file + ",version=3";
- db = new SQLiteEstateStore();
- db.Initialise(connect);
- regionDb = new SQLiteRegionData();
- regionDb.Initialise(connect);
- }
-
- [TestFixtureTearDown]
- public void Cleanup()
- {
- regionDb.Dispose();
- }
- }
-}
diff --git a/OpenSim/Data/SQLite/Tests/SQLiteInventoryTest.cs b/OpenSim/Data/SQLite/Tests/SQLiteInventoryTest.cs
deleted file mode 100644
index 98458a3..0000000
--- a/OpenSim/Data/SQLite/Tests/SQLiteInventoryTest.cs
+++ /dev/null
@@ -1,66 +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 OpenSimulator 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.IO;
-using NUnit.Framework;
-using OpenSim.Data.Tests;
-using OpenSim.Tests.Common;
-
-namespace OpenSim.Data.SQLite.Tests
-{
- [TestFixture, DatabaseTest]
- public class SQLiteInventoryTest : BasicInventoryTest
- {
- public string file;
- public string connect;
-
- [TestFixtureSetUp]
- public void Init()
- {
- // SQLite doesn't work on power or z linux
- if (Directory.Exists("/proc/ppc64") || Directory.Exists("/proc/dasd"))
- {
- Assert.Ignore();
- }
-
- SuperInit();
-
- file = Path.GetTempFileName() + ".db";
- connect = "URI=file:" + file + ",version=3";
-
- db = new SQLiteInventoryStore();
- db.Initialise(connect);
- }
-
- [TestFixtureTearDown]
- public void Cleanup()
- {
- db.Dispose();
- File.Delete(file);
- }
- }
-}
diff --git a/OpenSim/Data/SQLite/Tests/SQLiteRegionTest.cs b/OpenSim/Data/SQLite/Tests/SQLiteRegionTest.cs
deleted file mode 100644
index abb97cf..0000000
--- a/OpenSim/Data/SQLite/Tests/SQLiteRegionTest.cs
+++ /dev/null
@@ -1,64 +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 OpenSimulator 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.IO;
-using NUnit.Framework;
-using OpenSim.Data.Tests;
-using OpenSim.Tests.Common;
-
-namespace OpenSim.Data.SQLite.Tests
-{
- [TestFixture, DatabaseTest]
- public class SQLiteRegionTest : BasicRegionTest
- {
- public string file = "regiontest.db";
- public string connect;
-
- [TestFixtureSetUp]
- public void Init()
- {
- // SQLite doesn't work on power or z linux
- if (Directory.Exists("/proc/ppc64") || Directory.Exists("/proc/dasd"))
- {
- Assert.Ignore();
- }
-
- SuperInit();
- file = Path.GetTempFileName() + ".db";
- connect = "URI=file:" + file + ",version=3";
- db = new SQLiteRegionData();
- db.Initialise(connect);
- }
-
- [TestFixtureTearDown]
- public void Cleanup()
- {
- db.Dispose();
- File.Delete(file);
- }
- }
-}
diff --git a/OpenSim/Data/Tests/BasicEstateTest.cs b/OpenSim/Data/Tests/BasicEstateTest.cs
deleted file mode 100644
index d14d405..0000000
--- a/OpenSim/Data/Tests/BasicEstateTest.cs
+++ /dev/null
@@ -1,497 +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 OpenSimulator 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 log4net.Config;
-using NUnit.Framework;
-using NUnit.Framework.SyntaxHelpers;
-using OpenMetaverse;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using System.Text;
-using log4net;
-using System.Reflection;
-
-namespace OpenSim.Data.Tests
-{
- public class BasicEstateTest
- {
- public IEstateDataStore db;
- public IRegionDataStore regionDb;
-
- public static UUID REGION_ID = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed7");
-
- public static UUID USER_ID_1 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed1");
- public static UUID USER_ID_2 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed2");
-
- public static UUID MANAGER_ID_1 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed3");
- public static UUID MANAGER_ID_2 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed4");
-
- public static UUID GROUP_ID_1 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed5");
- public static UUID GROUP_ID_2 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed6");
-
- public void SuperInit()
- {
- OpenSim.Tests.Common.TestLogging.LogToConsole();
- }
-
- #region 0Tests
-
- [Test]
- public void T010_EstateSettingsSimpleStorage_MinimumParameterSet()
- {
- EstateSettingsSimpleStorage(
- REGION_ID,
- DataTestUtil.STRING_MIN,
- DataTestUtil.UNSIGNED_INTEGER_MIN,
- DataTestUtil.FLOAT_MIN,
- DataTestUtil.INTEGER_MIN,
- DataTestUtil.INTEGER_MIN,
- DataTestUtil.INTEGER_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.DOUBLE_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.STRING_MIN,
- DataTestUtil.UUID_MIN
- );
- }
-
- [Test]
- public void T011_EstateSettingsSimpleStorage_MaximumParameterSet()
- {
- EstateSettingsSimpleStorage(
- REGION_ID,
- DataTestUtil.STRING_MAX(64),
- DataTestUtil.UNSIGNED_INTEGER_MAX,
- DataTestUtil.FLOAT_MAX,
- DataTestUtil.INTEGER_MAX,
- DataTestUtil.INTEGER_MAX,
- DataTestUtil.INTEGER_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.DOUBLE_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.BOOLEAN_MAX,
- DataTestUtil.STRING_MAX(255),
- DataTestUtil.UUID_MAX
- );
- }
-
- [Test]
- public void T012_EstateSettingsSimpleStorage_AccurateParameterSet()
- {
- EstateSettingsSimpleStorage(
- REGION_ID,
- DataTestUtil.STRING_MAX(1),
- DataTestUtil.UNSIGNED_INTEGER_MIN,
- DataTestUtil.FLOAT_ACCURATE,
- DataTestUtil.INTEGER_MIN,
- DataTestUtil.INTEGER_MIN,
- DataTestUtil.INTEGER_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.DOUBLE_ACCURATE,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.BOOLEAN_MIN,
- DataTestUtil.STRING_MAX(1),
- DataTestUtil.UUID_MIN
- );
- }
-
- [Test]
- public void T012_EstateSettingsRandomStorage()
- {
- // Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
- new PropertyScrambler()
- .DontScramble(x=>x.EstateID)
- .Scramble(originalSettings);
-
- // Saving settings.
- db.StoreEstateSettings(originalSettings);
-
- // Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
-
- // Checking that loaded values are correct.
- Assert.That(loadedSettings, Constraints.PropertyCompareConstraint(originalSettings));
- }
-
- [Test]
- public void T020_EstateSettingsManagerList()
- {
- // Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
-
- originalSettings.EstateManagers = new UUID[] { MANAGER_ID_1, MANAGER_ID_2 };
-
- // Saving settings.
- db.StoreEstateSettings(originalSettings);
-
- // Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
-
- Assert.AreEqual(2, loadedSettings.EstateManagers.Length);
- Assert.AreEqual(MANAGER_ID_1, loadedSettings.EstateManagers[0]);
- Assert.AreEqual(MANAGER_ID_2, loadedSettings.EstateManagers[1]);
- }
-
- [Test]
- public void T021_EstateSettingsUserList()
- {
- // Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
-
- originalSettings.EstateAccess = new UUID[] { USER_ID_1, USER_ID_2 };
-
- // Saving settings.
- db.StoreEstateSettings(originalSettings);
-
- // Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
-
- Assert.AreEqual(2, loadedSettings.EstateAccess.Length);
- Assert.AreEqual(USER_ID_1, loadedSettings.EstateAccess[0]);
- Assert.AreEqual(USER_ID_2, loadedSettings.EstateAccess[1]);
- }
-
- [Test]
- public void T022_EstateSettingsGroupList()
- {
- // Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
-
- originalSettings.EstateGroups = new UUID[] { GROUP_ID_1, GROUP_ID_2 };
-
- // Saving settings.
- db.StoreEstateSettings(originalSettings);
-
- // Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
-
- Assert.AreEqual(2, loadedSettings.EstateAccess.Length);
- Assert.AreEqual(GROUP_ID_1, loadedSettings.EstateGroups[0]);
- Assert.AreEqual(GROUP_ID_2, loadedSettings.EstateGroups[1]);
- }
-
- [Test]
- public void T022_EstateSettingsBanList()
- {
- // Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
-
- EstateBan estateBan1 = new EstateBan();
- estateBan1.BannedUserID = DataTestUtil.UUID_MIN;
-
- EstateBan estateBan2 = new EstateBan();
- estateBan2.BannedUserID = DataTestUtil.UUID_MAX;
-
- originalSettings.EstateBans = new EstateBan[] { estateBan1, estateBan2 };
-
- // Saving settings.
- db.StoreEstateSettings(originalSettings);
-
- // Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
-
- Assert.AreEqual(2, loadedSettings.EstateBans.Length);
- Assert.AreEqual(DataTestUtil.UUID_MIN, loadedSettings.EstateBans[0].BannedUserID);
-
- Assert.AreEqual(DataTestUtil.UUID_MAX, loadedSettings.EstateBans[1].BannedUserID);
-
- }
-
- #endregion
-
- #region Parametrizable Test Implementations
-
- private void EstateSettingsSimpleStorage(
- UUID regionId,
- string estateName,
- uint parentEstateID,
- float billableFactor,
- int pricePerMeter,
- int redirectGridX,
- int redirectGridY,
- bool useGlobalTime,
- bool fixedSun,
- double sunPosition,
- bool allowVoice,
- bool allowDirectTeleport,
- bool resetHomeOnTeleport,
- bool denyAnonymous,
- bool denyIdentified,
- bool denyTransacted,
- bool denyMinors,
- bool abuseEmailToEstateOwner,
- bool blockDwell,
- bool estateSkipScripts,
- bool taxFree,
- bool publicAccess,
- string abuseEmail,
- UUID estateOwner
- )
- {
-
- // Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(regionId, true);
-
- SetEstateSettings(
- originalSettings,
- estateName,
- parentEstateID,
- billableFactor,
- pricePerMeter,
- redirectGridX,
- redirectGridY,
- useGlobalTime,
- fixedSun,
- sunPosition,
- allowVoice,
- allowDirectTeleport,
- resetHomeOnTeleport,
- denyAnonymous,
- denyIdentified,
- denyTransacted,
- denyMinors,
- abuseEmailToEstateOwner,
- blockDwell,
- estateSkipScripts,
- taxFree,
- publicAccess,
- abuseEmail,
- estateOwner
- );
-
- originalSettings.EstateName = estateName;
- originalSettings.ParentEstateID = parentEstateID;
- originalSettings.BillableFactor = billableFactor;
- originalSettings.PricePerMeter = pricePerMeter;
- originalSettings.RedirectGridX = redirectGridX;
- originalSettings.RedirectGridY = redirectGridY;
- originalSettings.UseGlobalTime = useGlobalTime;
- originalSettings.FixedSun = fixedSun;
- originalSettings.SunPosition = sunPosition;
- originalSettings.AllowVoice = allowVoice;
- originalSettings.AllowDirectTeleport = allowDirectTeleport;
- originalSettings.ResetHomeOnTeleport = resetHomeOnTeleport;
- originalSettings.DenyAnonymous = denyAnonymous;
- originalSettings.DenyIdentified = denyIdentified;
- originalSettings.DenyTransacted = denyTransacted;
- originalSettings.DenyMinors = denyMinors;
- originalSettings.AbuseEmailToEstateOwner = abuseEmailToEstateOwner;
- originalSettings.BlockDwell = blockDwell;
- originalSettings.EstateSkipScripts = estateSkipScripts;
- originalSettings.TaxFree = taxFree;
- originalSettings.PublicAccess = publicAccess;
- originalSettings.AbuseEmail = abuseEmail;
- originalSettings.EstateOwner = estateOwner;
-
- // Saving settings.
- db.StoreEstateSettings(originalSettings);
-
- // Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(regionId, true);
-
- // Checking that loaded values are correct.
- ValidateEstateSettings(
- loadedSettings,
- estateName,
- parentEstateID,
- billableFactor,
- pricePerMeter,
- redirectGridX,
- redirectGridY,
- useGlobalTime,
- fixedSun,
- sunPosition,
- allowVoice,
- allowDirectTeleport,
- resetHomeOnTeleport,
- denyAnonymous,
- denyIdentified,
- denyTransacted,
- denyMinors,
- abuseEmailToEstateOwner,
- blockDwell,
- estateSkipScripts,
- taxFree,
- publicAccess,
- abuseEmail,
- estateOwner
- );
-
- }
-
- #endregion
-
- #region EstateSetting Initialization and Validation Methods
-
- private void SetEstateSettings(
- EstateSettings estateSettings,
- string estateName,
- uint parentEstateID,
- float billableFactor,
- int pricePerMeter,
- int redirectGridX,
- int redirectGridY,
- bool useGlobalTime,
- bool fixedSun,
- double sunPosition,
- bool allowVoice,
- bool allowDirectTeleport,
- bool resetHomeOnTeleport,
- bool denyAnonymous,
- bool denyIdentified,
- bool denyTransacted,
- bool denyMinors,
- bool abuseEmailToEstateOwner,
- bool blockDwell,
- bool estateSkipScripts,
- bool taxFree,
- bool publicAccess,
- string abuseEmail,
- UUID estateOwner
- )
- {
- estateSettings.EstateName = estateName;
- estateSettings.ParentEstateID = parentEstateID;
- estateSettings.BillableFactor = billableFactor;
- estateSettings.PricePerMeter = pricePerMeter;
- estateSettings.RedirectGridX = redirectGridX;
- estateSettings.RedirectGridY = redirectGridY;
- estateSettings.UseGlobalTime = useGlobalTime;
- estateSettings.FixedSun = fixedSun;
- estateSettings.SunPosition = sunPosition;
- estateSettings.AllowVoice = allowVoice;
- estateSettings.AllowDirectTeleport = allowDirectTeleport;
- estateSettings.ResetHomeOnTeleport = resetHomeOnTeleport;
- estateSettings.DenyAnonymous = denyAnonymous;
- estateSettings.DenyIdentified = denyIdentified;
- estateSettings.DenyTransacted = denyTransacted;
- estateSettings.DenyMinors = denyMinors;
- estateSettings.AbuseEmailToEstateOwner = abuseEmailToEstateOwner;
- estateSettings.BlockDwell = blockDwell;
- estateSettings.EstateSkipScripts = estateSkipScripts;
- estateSettings.TaxFree = taxFree;
- estateSettings.PublicAccess = publicAccess;
- estateSettings.AbuseEmail = abuseEmail;
- estateSettings.EstateOwner = estateOwner;
- }
-
- private void ValidateEstateSettings(
- EstateSettings estateSettings,
- string estateName,
- uint parentEstateID,
- float billableFactor,
- int pricePerMeter,
- int redirectGridX,
- int redirectGridY,
- bool useGlobalTime,
- bool fixedSun,
- double sunPosition,
- bool allowVoice,
- bool allowDirectTeleport,
- bool resetHomeOnTeleport,
- bool denyAnonymous,
- bool denyIdentified,
- bool denyTransacted,
- bool denyMinors,
- bool abuseEmailToEstateOwner,
- bool blockDwell,
- bool estateSkipScripts,
- bool taxFree,
- bool publicAccess,
- string abuseEmail,
- UUID estateOwner
- )
- {
- Assert.AreEqual(estateName, estateSettings.EstateName);
- Assert.AreEqual(parentEstateID, estateSettings.ParentEstateID);
-
- DataTestUtil.AssertFloatEqualsWithTolerance(billableFactor, estateSettings.BillableFactor);
-
- Assert.AreEqual(pricePerMeter, estateSettings.PricePerMeter);
- Assert.AreEqual(redirectGridX, estateSettings.RedirectGridX);
- Assert.AreEqual(redirectGridY, estateSettings.RedirectGridY);
- Assert.AreEqual(useGlobalTime, estateSettings.UseGlobalTime);
- Assert.AreEqual(fixedSun, estateSettings.FixedSun);
-
- DataTestUtil.AssertDoubleEqualsWithTolerance(sunPosition, estateSettings.SunPosition);
-
- Assert.AreEqual(allowVoice, estateSettings.AllowVoice);
- Assert.AreEqual(allowDirectTeleport, estateSettings.AllowDirectTeleport);
- Assert.AreEqual(resetHomeOnTeleport, estateSettings.ResetHomeOnTeleport);
- Assert.AreEqual(denyAnonymous, estateSettings.DenyAnonymous);
- Assert.AreEqual(denyIdentified, estateSettings.DenyIdentified);
- Assert.AreEqual(denyTransacted, estateSettings.DenyTransacted);
- Assert.AreEqual(denyMinors, estateSettings.DenyMinors);
- Assert.AreEqual(abuseEmailToEstateOwner, estateSettings.AbuseEmailToEstateOwner);
- Assert.AreEqual(blockDwell, estateSettings.BlockDwell);
- Assert.AreEqual(estateSkipScripts, estateSettings.EstateSkipScripts);
- Assert.AreEqual(taxFree, estateSettings.TaxFree);
- Assert.AreEqual(publicAccess, estateSettings.PublicAccess);
- Assert.AreEqual(abuseEmail, estateSettings.AbuseEmail);
- Assert.AreEqual(estateOwner, estateSettings.EstateOwner);
- }
-
- #endregion
-
- }
-}
diff --git a/OpenSim/Data/Tests/BasicInventoryTest.cs b/OpenSim/Data/Tests/BasicInventoryTest.cs
deleted file mode 100644
index 900186b..0000000
--- a/OpenSim/Data/Tests/BasicInventoryTest.cs
+++ /dev/null
@@ -1,339 +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 OpenSimulator 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 log4net.Config;
-using NUnit.Framework;
-using NUnit.Framework.SyntaxHelpers;
-using OpenMetaverse;
-using OpenSim.Framework;
-using log4net;
-using System.Reflection;
-
-namespace OpenSim.Data.Tests
-{
- public class BasicInventoryTest
- {
- //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- public IInventoryDataPlugin db;
- public UUID zero = UUID.Zero;
-
- public UUID folder1;
- public UUID folder2;
- public UUID folder3;
- public UUID owner1;
- public UUID owner2;
- public UUID owner3;
-
- public UUID item1;
- public UUID item2;
- public UUID item3;
- public UUID asset1;
- public UUID asset2;
- public UUID asset3;
-
- public string name1;
- public string name2;
- public string name3;
- public string niname1;
- public string iname1;
- public string iname2;
- public string iname3;
-
- public void SuperInit()
- {
- OpenSim.Tests.Common.TestLogging.LogToConsole();
-
- folder1 = UUID.Random();
- folder2 = UUID.Random();
- folder3 = UUID.Random();
- owner1 = UUID.Random();
- owner2 = UUID.Random();
- owner3 = UUID.Random();
- item1 = UUID.Random();
- item2 = UUID.Random();
- item3 = UUID.Random();
- asset1 = UUID.Random();
- asset2 = UUID.Random();
- asset3 = UUID.Random();
-
- name1 = "Root Folder for " + owner1.ToString();
- name2 = "First Level folder";
- name3 = "First Level folder 2";
- niname1 = "My Shirt";
- iname1 = "Shirt";
- iname2 = "Text Board";
- iname3 = "No Pants Barrel";
-
- }
-
- [Test]
- public void T001_LoadEmpty()
- {
- Assert.That(db.getInventoryFolder(zero), Is.Null);
- Assert.That(db.getInventoryFolder(folder1), Is.Null);
- Assert.That(db.getInventoryFolder(folder2), Is.Null);
- Assert.That(db.getInventoryFolder(folder3), Is.Null);
-
- Assert.That(db.getInventoryItem(zero), Is.Null);
- Assert.That(db.getInventoryItem(item1), Is.Null);
- Assert.That(db.getInventoryItem(item2), Is.Null);
- Assert.That(db.getInventoryItem(item3), Is.Null);
-
- Assert.That(db.getUserRootFolder(zero), Is.Null);
- Assert.That(db.getUserRootFolder(owner1), Is.Null);
- }
-
- // 01x - folder tests
- [Test]
- public void T010_FolderNonParent()
- {
- InventoryFolderBase f1 = NewFolder(folder2, folder1, 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(folder1, 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(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(folder1, Is.EqualTo(f1a.ID), "Assert.That(folder1, Is.EqualTo(f1a.ID))");
- Assert.That(name1, Text.Matches(f1a.Name), "Assert.That(name1, Text.Matches(f1a.Name))");
- }
-
- // we now have the following tree
- // folder1
- // +--- folder2
- // +--- folder3
-
- [Test]
- public void T012_FolderList()
- {
- InventoryFolderBase f2 = NewFolder(folder3, folder1, owner1, name3);
- db.addInventoryFolder(f2);
-
- Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1), "Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1))");
- Assert.That(db.getInventoryFolders(folder1).Count, Is.EqualTo(2), "Assert.That(db.getInventoryFolders(folder1).Count, Is.EqualTo(2))");
- Assert.That(db.getInventoryFolders(folder2).Count, Is.EqualTo(0), "Assert.That(db.getInventoryFolders(folder2).Count, Is.EqualTo(0))");
- Assert.That(db.getInventoryFolders(folder3).Count, Is.EqualTo(0), "Assert.That(db.getInventoryFolders(folder3).Count, Is.EqualTo(0))");
- Assert.That(db.getInventoryFolders(UUID.Random()).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(zero).Count, Is.EqualTo(0))");
- Assert.That(db.getFolderHierarchy(folder1).Count, Is.EqualTo(2), "Assert.That(db.getFolderHierarchy(folder1).Count, Is.EqualTo(2))");
- Assert.That(db.getFolderHierarchy(folder2).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(folder2).Count, Is.EqualTo(0))");
- Assert.That(db.getFolderHierarchy(folder3).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(folder3).Count, Is.EqualTo(0))");
- Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0))");
- }
-
-
- [Test]
- public void T014_MoveFolder()
- {
- InventoryFolderBase f2 = db.getInventoryFolder(folder2);
- f2.ParentID = folder3;
- db.moveInventoryFolder(f2);
-
- Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1), "Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1))");
- Assert.That(db.getInventoryFolders(folder1).Count, Is.EqualTo(1), "Assert.That(db.getInventoryFolders(folder1).Count, Is.EqualTo(1))");
- Assert.That(db.getInventoryFolders(folder2).Count, Is.EqualTo(0), "Assert.That(db.getInventoryFolders(folder2).Count, Is.EqualTo(0))");
- Assert.That(db.getInventoryFolders(folder3).Count, Is.EqualTo(1), "Assert.That(db.getInventoryFolders(folder3).Count, Is.EqualTo(1))");
- Assert.That(db.getInventoryFolders(UUID.Random()).Count, Is.EqualTo(0), "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(zero).Count, Is.EqualTo(0))");
- Assert.That(db.getFolderHierarchy(folder1).Count, Is.EqualTo(2), "Assert.That(db.getFolderHierarchy(folder1).Count, Is.EqualTo(2))");
- Assert.That(db.getFolderHierarchy(folder2).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(folder2).Count, Is.EqualTo(0))");
- Assert.That(db.getFolderHierarchy(folder3).Count, Is.EqualTo(1), "Assert.That(db.getFolderHierarchy(folder3).Count, Is.EqualTo(1))");
- Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0))");
- }
-
- // Item tests
- [Test]
- public void T100_NoItems()
- {
- Assert.That(db.getInventoryInFolder(zero).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(zero).Count, Is.EqualTo(0))");
- Assert.That(db.getInventoryInFolder(folder1).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(folder1).Count, Is.EqualTo(0))");
- Assert.That(db.getInventoryInFolder(folder2).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(folder2).Count, Is.EqualTo(0))");
- Assert.That(db.getInventoryInFolder(folder3).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(folder3).Count, Is.EqualTo(0))");
- }
-
- // TODO: Feeding a bad inventory item down the data path will
- // crash the system. This is largely due to the builder
- // routines. That should be fixed and tested for.
- [Test]
- public void T101_CreatItems()
- {
- db.addInventoryItem(NewItem(item1, folder3, owner1, iname1, asset1));
- db.addInventoryItem(NewItem(item2, folder3, owner1, iname2, asset2));
- db.addInventoryItem(NewItem(item3, folder3, owner1, iname3, asset3));
- Assert.That(db.getInventoryInFolder(folder3).Count, Is.EqualTo(3), "Assert.That(db.getInventoryInFolder(folder3).Count, Is.EqualTo(3))");
- }
-
- [Test]
- public void T102_CompareItems()
- {
- InventoryItemBase i1 = db.getInventoryItem(item1);
- InventoryItemBase i2 = db.getInventoryItem(item2);
- InventoryItemBase i3 = db.getInventoryItem(item3);
- Assert.That(i1.Name, Is.EqualTo(iname1), "Assert.That(i1.Name, Is.EqualTo(iname1))");
- Assert.That(i2.Name, Is.EqualTo(iname2), "Assert.That(i2.Name, Is.EqualTo(iname2))");
- Assert.That(i3.Name, Is.EqualTo(iname3), "Assert.That(i3.Name, Is.EqualTo(iname3))");
- Assert.That(i1.Owner, Is.EqualTo(owner1), "Assert.That(i1.Owner, Is.EqualTo(owner1))");
- Assert.That(i2.Owner, Is.EqualTo(owner1), "Assert.That(i2.Owner, Is.EqualTo(owner1))");
- Assert.That(i3.Owner, Is.EqualTo(owner1), "Assert.That(i3.Owner, Is.EqualTo(owner1))");
- Assert.That(i1.AssetID, Is.EqualTo(asset1), "Assert.That(i1.AssetID, Is.EqualTo(asset1))");
- Assert.That(i2.AssetID, Is.EqualTo(asset2), "Assert.That(i2.AssetID, Is.EqualTo(asset2))");
- Assert.That(i3.AssetID, Is.EqualTo(asset3), "Assert.That(i3.AssetID, Is.EqualTo(asset3))");
- }
-
- [Test]
- public void T103_UpdateItem()
- {
- // TODO: probably shouldn't have the ability to have an
- // owner of an item in a folder not owned by the user
-
- InventoryItemBase i1 = db.getInventoryItem(item1);
- i1.Name = niname1;
- i1.Description = niname1;
- i1.Owner = owner2;
- db.updateInventoryItem(i1);
-
- i1 = db.getInventoryItem(item1);
- Assert.That(i1.Name, Is.EqualTo(niname1), "Assert.That(i1.Name, Is.EqualTo(niname1))");
- Assert.That(i1.Description, Is.EqualTo(niname1), "Assert.That(i1.Description, Is.EqualTo(niname1))");
- Assert.That(i1.Owner, Is.EqualTo(owner2), "Assert.That(i1.Owner, Is.EqualTo(owner2))");
- }
-
- [Test]
- public void T104_RandomUpdateItem()
- {
- PropertyScrambler folderScrambler =
- new PropertyScrambler()
- .DontScramble(x => x.Owner)
- .DontScramble(x => x.ParentID)
- .DontScramble(x => x.ID);
- UUID owner = UUID.Random();
- UUID folder = UUID.Random();
- UUID rootId = UUID.Random();
- UUID rootAsset = UUID.Random();
- InventoryFolderBase f1 = NewFolder(folder, zero, owner, name1);
- folderScrambler.Scramble(f1);
-
- db.addInventoryFolder(f1);
- InventoryFolderBase f1a = db.getUserRootFolder(owner);
- Assert.That(f1a, Constraints.PropertyCompareConstraint(f1));
-
- folderScrambler.Scramble(f1a);
-
- db.updateInventoryFolder(f1a);
-
- InventoryFolderBase f1b = db.getUserRootFolder(owner);
- Assert.That(f1b, Constraints.PropertyCompareConstraint(f1a));
-
- //Now we have a valid folder to insert into, we can insert the item.
- PropertyScrambler inventoryScrambler =
- new PropertyScrambler()
- .DontScramble(x => x.ID)
- .DontScramble(x => x.AssetID)
- .DontScramble(x => x.Owner)
- .DontScramble(x => x.Folder);
- InventoryItemBase root = NewItem(rootId, folder, owner, iname1, rootAsset);
- inventoryScrambler.Scramble(root);
- db.addInventoryItem(root);
-
- InventoryItemBase expected = db.getInventoryItem(rootId);
- Assert.That(expected, Constraints.PropertyCompareConstraint(root)
- .IgnoreProperty(x => x.InvType)
- .IgnoreProperty(x => x.CreatorIdAsUuid)
- .IgnoreProperty(x => x.Description)
- .IgnoreProperty(x => x.CreatorId));
-
- inventoryScrambler.Scramble(expected);
- db.updateInventoryItem(expected);
-
- InventoryItemBase actual = db.getInventoryItem(rootId);
- Assert.That(actual, Constraints.PropertyCompareConstraint(expected)
- .IgnoreProperty(x => x.InvType)
- .IgnoreProperty(x => x.CreatorIdAsUuid)
- .IgnoreProperty(x => x.Description)
- .IgnoreProperty(x => x.CreatorId));
- }
-
- [Test]
- public void T999_StillNull()
- {
- // After all tests are run, these should still return no results
- Assert.That(db.getInventoryFolder(zero), Is.Null);
- Assert.That(db.getInventoryItem(zero), Is.Null);
- Assert.That(db.getUserRootFolder(zero), Is.Null);
- Assert.That(db.getInventoryInFolder(zero).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(zero).Count, Is.EqualTo(0))");
- }
-
- private InventoryItemBase NewItem(UUID id, UUID parent, UUID owner, string name, UUID asset)
- {
- InventoryItemBase i = new InventoryItemBase();
- i.ID = id;
- i.Folder = parent;
- i.Owner = owner;
- i.CreatorId = owner.ToString();
- i.Name = name;
- i.Description = name;
- i.AssetID = asset;
- return i;
- }
-
- 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;
- }
- }
-}
diff --git a/OpenSim/Data/Tests/BasicRegionTest.cs b/OpenSim/Data/Tests/BasicRegionTest.cs
deleted file mode 100644
index dfbf522..0000000
--- a/OpenSim/Data/Tests/BasicRegionTest.cs
+++ /dev/null
@@ -1,1061 +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 OpenSimulator 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 System.Drawing;
-using System.Text;
-using log4net.Config;
-using NUnit.Framework;
-using NUnit.Framework.SyntaxHelpers;
-using OpenMetaverse;
-using OpenSim.Framework;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using log4net;
-using System.Reflection;
-
-namespace OpenSim.Data.Tests
-{
- public class BasicRegionTest
- {
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- public IRegionDataStore db;
- public UUID zero = UUID.Zero;
- public UUID region1;
- public UUID region2;
- public UUID region3;
- public UUID region4;
- public UUID prim1;
- public UUID prim2;
- public UUID prim3;
- public UUID prim4;
- public UUID prim5;
- public UUID prim6;
- public UUID item1;
- public UUID item2;
- public UUID item3;
-
- public static Random random;
-
- public string itemname1 = "item1";
-
- public uint localID;
-
- public double height1;
- public double height2;
-
- public void SuperInit()
- {
- OpenSim.Tests.Common.TestLogging.LogToConsole();
-
- region1 = UUID.Random();
- region3 = UUID.Random();
- region4 = UUID.Random();
- prim1 = UUID.Random();
- prim2 = UUID.Random();
- prim3 = UUID.Random();
- prim4 = UUID.Random();
- prim5 = UUID.Random();
- prim6 = UUID.Random();
- item1 = UUID.Random();
- item2 = UUID.Random();
- item3 = UUID.Random();
- random = new Random();
- localID = 1;
- height1 = 20;
- height2 = 100;
- }
-
- // Test Plan
- // Prims
- // - empty test - 001
- // - store / retrieve basic prims (most minimal we can make) - 010, 011
- // - store / retrieve parts in a scenegroup 012
- // - store a prim with complete information for consistency check 013
- // - update existing prims, make sure it sticks - 014
- // - tests empty inventory - 020
- // - add inventory items to prims make - 021
- // - retrieves the added item - 022
- // - update inventory items to prims - 023
- // - remove inventory items make sure it sticks - 024
- // - checks if all parameters are persistent - 025
- // - adds many items and see if it is handled correctly - 026
-
- [Test]
- public void T001_LoadEmpty()
- {
- List objs = db.LoadObjects(region1);
- List objs3 = db.LoadObjects(region3);
- List land = db.LoadLandObjects(region1);
-
- Assert.That(objs.Count, Is.EqualTo(0), "Assert.That(objs.Count, Is.EqualTo(0))");
- Assert.That(objs3.Count, Is.EqualTo(0), "Assert.That(objs3.Count, Is.EqualTo(0))");
- Assert.That(land.Count, Is.EqualTo(0), "Assert.That(land.Count, Is.EqualTo(0))");
- }
-
- // SOG round trips
- // * store objects, make sure they save
- // * update
-
- [Test]
- public void T010_StoreSimpleObject()
- {
- SceneObjectGroup sog = NewSOG("object1", prim1, region1);
- SceneObjectGroup sog2 = NewSOG("object2", prim2, region1);
-
- // in case the objects don't store
- try
- {
- db.StoreObject(sog, region1);
- }
- catch (Exception e)
- {
- m_log.Error(e.ToString());
- Assert.Fail();
- }
-
- try
- {
- db.StoreObject(sog2, region1);
- }
- catch (Exception e)
- {
- m_log.Error(e.ToString());
- Assert.Fail();
- }
-
- // This tests the ADO.NET driver
- List objs = db.LoadObjects(region1);
-
- Assert.That(objs.Count, Is.EqualTo(2), "Assert.That(objs.Count, Is.EqualTo(2))");
- }
-
- [Test]
- public void T011_ObjectNames()
- {
- List objs = db.LoadObjects(region1);
- foreach (SceneObjectGroup sog in objs)
- {
- SceneObjectPart p = sog.RootPart;
- Assert.That("", Is.Not.EqualTo(p.Name), "Assert.That(\"\", Is.Not.EqualTo(p.Name))");
- Assert.That(p.Name, Is.EqualTo(p.Description), "Assert.That(p.Name, Is.EqualTo(p.Description))");
- }
- }
-
- [Test]
- public void T012_SceneParts()
- {
- UUID tmp0 = UUID.Random();
- UUID tmp1 = UUID.Random();
- UUID tmp2 = UUID.Random();
- UUID tmp3 = UUID.Random();
- UUID newregion = UUID.Random();
- SceneObjectPart p1 = NewSOP("SoP 1",tmp1);
- SceneObjectPart p2 = NewSOP("SoP 2",tmp2);
- SceneObjectPart p3 = NewSOP("SoP 3",tmp3);
- SceneObjectGroup sog = NewSOG("Sop 0", tmp0, newregion);
- sog.AddPart(p1);
- sog.AddPart(p2);
- sog.AddPart(p3);
-
- SceneObjectPart[] parts = sog.GetParts();
- Assert.That(parts.Length,Is.EqualTo(4), "Assert.That(parts.Length,Is.EqualTo(4))");
-
- db.StoreObject(sog, newregion);
- List sogs = db.LoadObjects(newregion);
- Assert.That(sogs.Count,Is.EqualTo(1), "Assert.That(sogs.Count,Is.EqualTo(1))");
- SceneObjectGroup newsog = sogs[0];
-
- SceneObjectPart[] newparts = newsog.GetParts();
- Assert.That(newparts.Length,Is.EqualTo(4), "Assert.That(newparts.Length,Is.EqualTo(4))");
-
- Assert.That(newsog.HasChildPrim(tmp0), "Assert.That(newsog.HasChildPrim(tmp0))");
- Assert.That(newsog.HasChildPrim(tmp1), "Assert.That(newsog.HasChildPrim(tmp1))");
- Assert.That(newsog.HasChildPrim(tmp2), "Assert.That(newsog.HasChildPrim(tmp2))");
- Assert.That(newsog.HasChildPrim(tmp3), "Assert.That(newsog.HasChildPrim(tmp3))");
- }
-
- [Test]
- public void T013_DatabasePersistency()
- {
- // Sets all ScenePart parameters, stores and retrieves them, then check for consistency with initial data
- // The commented Asserts are the ones that are unchangeable (when storing on the database, their "Set" values are ignored
- // The ObjectFlags is an exception, if it is entered incorrectly, the object IS REJECTED on the database silently.
- UUID creator,uuid = new UUID();
- creator = UUID.Random();
- uint iserial = (uint)random.Next();
- TaskInventoryDictionary dic = new TaskInventoryDictionary();
- uint objf = (uint) random.Next();
- uuid = prim4;
- uint localid = localID+1;
- localID = localID + 1;
- string name = "Adam West";
- byte material = (byte) random.Next(127);
- ulong regionh = (ulong)random.NextDouble() * (ulong)random.Next();
- int pin = random.Next();
- Byte[] partsys = new byte[8];
- Byte[] textani = new byte[8];
- random.NextBytes(textani);
- random.NextBytes(partsys);
- DateTime expires = new DateTime(2008, 12, 20);
- DateTime rezzed = new DateTime(2009, 07, 15);
- Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next());
- Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next());
- Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next());
- Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next());
- Vector3 angvelo = new Vector3(random.Next(),random.Next(),random.Next());
- Vector3 accel = new Vector3(random.Next(),random.Next(),random.Next());
- string description = name;
- Color color = Color.FromArgb(255, 165, 50, 100);
- string text = "All Your Base Are Belong to Us";
- string sitname = "SitName";
- string touchname = "TouchName";
- int linknum = random.Next();
- byte clickaction = (byte) random.Next(127);
- PrimitiveBaseShape pbshap = new PrimitiveBaseShape();
- pbshap = PrimitiveBaseShape.Default;
- pbshap.PathBegin = ushort.MaxValue;
- pbshap.PathEnd = ushort.MaxValue;
- pbshap.ProfileBegin = ushort.MaxValue;
- pbshap.ProfileEnd = ushort.MaxValue;
- pbshap.ProfileHollow = ushort.MaxValue;
- Vector3 scale = new Vector3(random.Next(),random.Next(),random.Next());
- byte updatef = (byte) random.Next(127);
-
- RegionInfo regionInfo = new RegionInfo();
- regionInfo.RegionID = region3;
- regionInfo.RegionLocX = 0;
- regionInfo.RegionLocY = 0;
-
-// Scene scene = new Scene(regionInfo);
-
- SceneObjectPart sop = new SceneObjectPart();
- sop.RegionHandle = regionh;
- sop.UUID = uuid;
- sop.LocalId = localid;
- sop.Shape = pbshap;
- sop.GroupPosition = groupos;
- sop.RotationOffset = rotoff;
- sop.CreatorID = creator;
- sop.InventorySerial = iserial;
- sop.TaskInventory = dic;
- sop.ObjectFlags = objf;
- sop.Name = name;
- sop.Material = material;
- sop.ScriptAccessPin = pin;
- sop.TextureAnimation = textani;
- sop.ParticleSystem = partsys;
- sop.Expires = expires;
- sop.Rezzed = rezzed;
- sop.OffsetPosition = offset;
- sop.Velocity = velocity;
- sop.AngularVelocity = angvelo;
- sop.Acceleration = accel;
- sop.Description = description;
- sop.Color = color;
- sop.Text = text;
- sop.SitName = sitname;
- sop.TouchName = touchname;
- sop.LinkNum = linknum;
- sop.ClickAction = clickaction;
- sop.Scale = scale;
- sop.UpdateFlag = updatef;
-
- //Tests if local part accepted the parameters:
- Assert.That(regionh,Is.EqualTo(sop.RegionHandle), "Assert.That(regionh,Is.EqualTo(sop.RegionHandle))");
- Assert.That(localid,Is.EqualTo(sop.LocalId), "Assert.That(localid,Is.EqualTo(sop.LocalId))");
- Assert.That(groupos,Is.EqualTo(sop.GroupPosition), "Assert.That(groupos,Is.EqualTo(sop.GroupPosition))");
- Assert.That(name,Is.EqualTo(sop.Name), "Assert.That(name,Is.EqualTo(sop.Name))");
- Assert.That(rotoff,Is.EqualTo(sop.RotationOffset), "Assert.That(rotoff,Is.EqualTo(sop.RotationOffset))");
- Assert.That(uuid,Is.EqualTo(sop.UUID), "Assert.That(uuid,Is.EqualTo(sop.UUID))");
- Assert.That(creator,Is.EqualTo(sop.CreatorID), "Assert.That(creator,Is.EqualTo(sop.CreatorID))");
- // Modified in-class
- // Assert.That(iserial,Is.EqualTo(sop.InventorySerial), "Assert.That(iserial,Is.EqualTo(sop.InventorySerial))");
- Assert.That(dic,Is.EqualTo(sop.TaskInventory), "Assert.That(dic,Is.EqualTo(sop.TaskInventory))");
- Assert.That(objf,Is.EqualTo(sop.ObjectFlags), "Assert.That(objf,Is.EqualTo(sop.ObjectFlags))");
- Assert.That(name,Is.EqualTo(sop.Name), "Assert.That(name,Is.EqualTo(sop.Name))");
- Assert.That(material,Is.EqualTo(sop.Material), "Assert.That(material,Is.EqualTo(sop.Material))");
- Assert.That(pin,Is.EqualTo(sop.ScriptAccessPin), "Assert.That(pin,Is.EqualTo(sop.ScriptAccessPin))");
- Assert.That(textani,Is.EqualTo(sop.TextureAnimation), "Assert.That(textani,Is.EqualTo(sop.TextureAnimation))");
- Assert.That(partsys,Is.EqualTo(sop.ParticleSystem), "Assert.That(partsys,Is.EqualTo(sop.ParticleSystem))");
- Assert.That(expires,Is.EqualTo(sop.Expires), "Assert.That(expires,Is.EqualTo(sop.Expires))");
- Assert.That(rezzed,Is.EqualTo(sop.Rezzed), "Assert.That(rezzed,Is.EqualTo(sop.Rezzed))");
- Assert.That(offset,Is.EqualTo(sop.OffsetPosition), "Assert.That(offset,Is.EqualTo(sop.OffsetPosition))");
- Assert.That(velocity,Is.EqualTo(sop.Velocity), "Assert.That(velocity,Is.EqualTo(sop.Velocity))");
- Assert.That(angvelo,Is.EqualTo(sop.AngularVelocity), "Assert.That(angvelo,Is.EqualTo(sop.AngularVelocity))");
- Assert.That(accel,Is.EqualTo(sop.Acceleration), "Assert.That(accel,Is.EqualTo(sop.Acceleration))");
- Assert.That(description,Is.EqualTo(sop.Description), "Assert.That(description,Is.EqualTo(sop.Description))");
- Assert.That(color,Is.EqualTo(sop.Color), "Assert.That(color,Is.EqualTo(sop.Color))");
- Assert.That(text,Is.EqualTo(sop.Text), "Assert.That(text,Is.EqualTo(sop.Text))");
- Assert.That(sitname,Is.EqualTo(sop.SitName), "Assert.That(sitname,Is.EqualTo(sop.SitName))");
- Assert.That(touchname,Is.EqualTo(sop.TouchName), "Assert.That(touchname,Is.EqualTo(sop.TouchName))");
- Assert.That(linknum,Is.EqualTo(sop.LinkNum), "Assert.That(linknum,Is.EqualTo(sop.LinkNum))");
- Assert.That(clickaction,Is.EqualTo(sop.ClickAction), "Assert.That(clickaction,Is.EqualTo(sop.ClickAction))");
- Assert.That(scale,Is.EqualTo(sop.Scale), "Assert.That(scale,Is.EqualTo(sop.Scale))");
- Assert.That(updatef,Is.EqualTo(sop.UpdateFlag), "Assert.That(updatef,Is.EqualTo(sop.UpdateFlag))");
-
- // This is necessary or object will not be inserted in DB
- sop.ObjectFlags = 0;
-
- SceneObjectGroup sog = new SceneObjectGroup(sop);
-
- // Inserts group in DB
- db.StoreObject(sog,region3);
- List sogs = db.LoadObjects(region3);
- Assert.That(sogs.Count, Is.EqualTo(1), "Assert.That(sogs.Count, Is.EqualTo(1))");
- // Makes sure there are no double insertions:
- db.StoreObject(sog,region3);
- sogs = db.LoadObjects(region3);
- Assert.That(sogs.Count, Is.EqualTo(1), "Assert.That(sogs.Count, Is.EqualTo(1))");
-
-
- // Tests if the parameters were inserted correctly
- SceneObjectPart p = sogs[0].RootPart;
- Assert.That(regionh,Is.EqualTo(p.RegionHandle), "Assert.That(regionh,Is.EqualTo(p.RegionHandle))");
- //Assert.That(localid,Is.EqualTo(p.LocalId), "Assert.That(localid,Is.EqualTo(p.LocalId))");
- Assert.That(groupos,Is.EqualTo(p.GroupPosition), "Assert.That(groupos,Is.EqualTo(p.GroupPosition))");
- Assert.That(name,Is.EqualTo(p.Name), "Assert.That(name,Is.EqualTo(p.Name))");
- Assert.That(rotoff,Is.EqualTo(p.RotationOffset), "Assert.That(rotoff,Is.EqualTo(p.RotationOffset))");
- Assert.That(uuid,Is.EqualTo(p.UUID), "Assert.That(uuid,Is.EqualTo(p.UUID))");
- Assert.That(creator,Is.EqualTo(p.CreatorID), "Assert.That(creator,Is.EqualTo(p.CreatorID))");
- //Assert.That(iserial,Is.EqualTo(p.InventorySerial), "Assert.That(iserial,Is.EqualTo(p.InventorySerial))");
- Assert.That(dic,Is.EqualTo(p.TaskInventory), "Assert.That(dic,Is.EqualTo(p.TaskInventory))");
- //Assert.That(objf,Is.EqualTo(p.ObjectFlags), "Assert.That(objf,Is.EqualTo(p.ObjectFlags))");
- Assert.That(name,Is.EqualTo(p.Name), "Assert.That(name,Is.EqualTo(p.Name))");
- Assert.That(material,Is.EqualTo(p.Material), "Assert.That(material,Is.EqualTo(p.Material))");
- Assert.That(pin,Is.EqualTo(p.ScriptAccessPin), "Assert.That(pin,Is.EqualTo(p.ScriptAccessPin))");
- Assert.That(textani,Is.EqualTo(p.TextureAnimation), "Assert.That(textani,Is.EqualTo(p.TextureAnimation))");
- Assert.That(partsys,Is.EqualTo(p.ParticleSystem), "Assert.That(partsys,Is.EqualTo(p.ParticleSystem))");
- //Assert.That(expires,Is.EqualTo(p.Expires), "Assert.That(expires,Is.EqualTo(p.Expires))");
- //Assert.That(rezzed,Is.EqualTo(p.Rezzed), "Assert.That(rezzed,Is.EqualTo(p.Rezzed))");
- Assert.That(offset,Is.EqualTo(p.OffsetPosition), "Assert.That(offset,Is.EqualTo(p.OffsetPosition))");
- Assert.That(velocity,Is.EqualTo(p.Velocity), "Assert.That(velocity,Is.EqualTo(p.Velocity))");
- Assert.That(angvelo,Is.EqualTo(p.AngularVelocity), "Assert.That(angvelo,Is.EqualTo(p.AngularVelocity))");
- Assert.That(accel,Is.EqualTo(p.Acceleration), "Assert.That(accel,Is.EqualTo(p.Acceleration))");
- Assert.That(description,Is.EqualTo(p.Description), "Assert.That(description,Is.EqualTo(p.Description))");
- Assert.That(color,Is.EqualTo(p.Color), "Assert.That(color,Is.EqualTo(p.Color))");
- Assert.That(text,Is.EqualTo(p.Text), "Assert.That(text,Is.EqualTo(p.Text))");
- Assert.That(sitname,Is.EqualTo(p.SitName), "Assert.That(sitname,Is.EqualTo(p.SitName))");
- Assert.That(touchname,Is.EqualTo(p.TouchName), "Assert.That(touchname,Is.EqualTo(p.TouchName))");
- //Assert.That(linknum,Is.EqualTo(p.LinkNum), "Assert.That(linknum,Is.EqualTo(p.LinkNum))");
- Assert.That(clickaction,Is.EqualTo(p.ClickAction), "Assert.That(clickaction,Is.EqualTo(p.ClickAction))");
- Assert.That(scale,Is.EqualTo(p.Scale), "Assert.That(scale,Is.EqualTo(p.Scale))");
-
- //Assert.That(updatef,Is.EqualTo(p.UpdateFlag), "Assert.That(updatef,Is.EqualTo(p.UpdateFlag))");
-
- Assert.That(pbshap.PathBegin, Is.EqualTo(p.Shape.PathBegin), "Assert.That(pbshap.PathBegin, Is.EqualTo(p.Shape.PathBegin))");
- Assert.That(pbshap.PathEnd, Is.EqualTo(p.Shape.PathEnd), "Assert.That(pbshap.PathEnd, Is.EqualTo(p.Shape.PathEnd))");
- Assert.That(pbshap.ProfileBegin, Is.EqualTo(p.Shape.ProfileBegin), "Assert.That(pbshap.ProfileBegin, Is.EqualTo(p.Shape.ProfileBegin))");
- Assert.That(pbshap.ProfileEnd, Is.EqualTo(p.Shape.ProfileEnd), "Assert.That(pbshap.ProfileEnd, Is.EqualTo(p.Shape.ProfileEnd))");
- Assert.That(pbshap.ProfileHollow, Is.EqualTo(p.Shape.ProfileHollow), "Assert.That(pbshap.ProfileHollow, Is.EqualTo(p.Shape.ProfileHollow))");
- }
-
- [Test]
- public void T014_UpdateObject()
- {
- string text1 = "object1 text";
- SceneObjectGroup sog = FindSOG("object1", region1);
- sog.RootPart.Text = text1;
- db.StoreObject(sog, region1);
-
- sog = FindSOG("object1", region1);
- Assert.That(text1, Is.EqualTo(sog.RootPart.Text), "Assert.That(text1, Is.EqualTo(sog.RootPart.Text))");
-
- // Creates random values
- UUID creator = new UUID();
- creator = UUID.Random();
- TaskInventoryDictionary dic = new TaskInventoryDictionary();
- localID = localID + 1;
- string name = "West Adam";
- byte material = (byte) random.Next(127);
- ulong regionh = (ulong)random.NextDouble() * (ulong)random.Next();
- int pin = random.Next();
- Byte[] partsys = new byte[8];
- Byte[] textani = new byte[8];
- random.NextBytes(textani);
- random.NextBytes(partsys);
- DateTime expires = new DateTime(2010, 12, 20);
- DateTime rezzed = new DateTime(2005, 07, 15);
- Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next());
- Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next());
- Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next());
- Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next());
- Vector3 angvelo = new Vector3(random.Next(),random.Next(),random.Next());
- Vector3 accel = new Vector3(random.Next(),random.Next(),random.Next());
- string description = name;
- Color color = Color.FromArgb(255, 255, 255, 0);
- string text = "What You Say?{]\vz~";
- string sitname = RandomName();
- string touchname = RandomName();
- int linknum = random.Next();
- byte clickaction = (byte) random.Next(127);
- PrimitiveBaseShape pbshap = new PrimitiveBaseShape();
- pbshap = PrimitiveBaseShape.Default;
- Vector3 scale = new Vector3(random.Next(),random.Next(),random.Next());
- byte updatef = (byte) random.Next(127);
-
- // Updates the region with new values
- SceneObjectGroup sog2 = FindSOG("Adam West", region3);
- Assert.That(sog2,Is.Not.Null);
- sog2.RootPart.RegionHandle = regionh;
- sog2.RootPart.Shape = pbshap;
- sog2.RootPart.GroupPosition = groupos;
- sog2.RootPart.RotationOffset = rotoff;
- sog2.RootPart.CreatorID = creator;
- sog2.RootPart.TaskInventory = dic;
- sog2.RootPart.Name = name;
- sog2.RootPart.Material = material;
- sog2.RootPart.ScriptAccessPin = pin;
- sog2.RootPart.TextureAnimation = textani;
- sog2.RootPart.ParticleSystem = partsys;
- sog2.RootPart.Expires = expires;
- sog2.RootPart.Rezzed = rezzed;
- sog2.RootPart.OffsetPosition = offset;
- sog2.RootPart.Velocity = velocity;
- sog2.RootPart.AngularVelocity = angvelo;
- sog2.RootPart.Acceleration = accel;
- sog2.RootPart.Description = description;
- sog2.RootPart.Color = color;
- sog2.RootPart.Text = text;
- sog2.RootPart.SitName = sitname;
- sog2.RootPart.TouchName = touchname;
- sog2.RootPart.LinkNum = linknum;
- sog2.RootPart.ClickAction = clickaction;
- sog2.RootPart.Scale = scale;
- sog2.RootPart.UpdateFlag = updatef;
-
- db.StoreObject(sog2, region3);
- List sogs = db.LoadObjects(region3);
- Assert.That(sogs.Count, Is.EqualTo(1), "Assert.That(sogs.Count, Is.EqualTo(1))");
-
- SceneObjectGroup retsog = FindSOG("West Adam", region3);
- Assert.That(retsog,Is.Not.Null);
- SceneObjectPart p = retsog.RootPart;
- Assert.That(regionh,Is.EqualTo(p.RegionHandle), "Assert.That(regionh,Is.EqualTo(p.RegionHandle))");
- Assert.That(groupos,Is.EqualTo(p.GroupPosition), "Assert.That(groupos,Is.EqualTo(p.GroupPosition))");
- Assert.That(name,Is.EqualTo(p.Name), "Assert.That(name,Is.EqualTo(p.Name))");
- Assert.That(rotoff,Is.EqualTo(p.RotationOffset), "Assert.That(rotoff,Is.EqualTo(p.RotationOffset))");
- Assert.That(creator,Is.EqualTo(p.CreatorID), "Assert.That(creator,Is.EqualTo(p.CreatorID))");
- Assert.That(dic,Is.EqualTo(p.TaskInventory), "Assert.That(dic,Is.EqualTo(p.TaskInventory))");
- Assert.That(name,Is.EqualTo(p.Name), "Assert.That(name,Is.EqualTo(p.Name))");
- Assert.That(material,Is.EqualTo(p.Material), "Assert.That(material,Is.EqualTo(p.Material))");
- Assert.That(pin,Is.EqualTo(p.ScriptAccessPin), "Assert.That(pin,Is.EqualTo(p.ScriptAccessPin))");
- Assert.That(textani,Is.EqualTo(p.TextureAnimation), "Assert.That(textani,Is.EqualTo(p.TextureAnimation))");
- Assert.That(partsys,Is.EqualTo(p.ParticleSystem), "Assert.That(partsys,Is.EqualTo(p.ParticleSystem))");
- Assert.That(offset,Is.EqualTo(p.OffsetPosition), "Assert.That(offset,Is.EqualTo(p.OffsetPosition))");
- Assert.That(velocity,Is.EqualTo(p.Velocity), "Assert.That(velocity,Is.EqualTo(p.Velocity))");
- Assert.That(angvelo,Is.EqualTo(p.AngularVelocity), "Assert.That(angvelo,Is.EqualTo(p.AngularVelocity))");
- Assert.That(accel,Is.EqualTo(p.Acceleration), "Assert.That(accel,Is.EqualTo(p.Acceleration))");
- Assert.That(description,Is.EqualTo(p.Description), "Assert.That(description,Is.EqualTo(p.Description))");
- Assert.That(color,Is.EqualTo(p.Color), "Assert.That(color,Is.EqualTo(p.Color))");
- Assert.That(text,Is.EqualTo(p.Text), "Assert.That(text,Is.EqualTo(p.Text))");
- Assert.That(sitname,Is.EqualTo(p.SitName), "Assert.That(sitname,Is.EqualTo(p.SitName))");
- Assert.That(touchname,Is.EqualTo(p.TouchName), "Assert.That(touchname,Is.EqualTo(p.TouchName))");
- Assert.That(clickaction,Is.EqualTo(p.ClickAction), "Assert.That(clickaction,Is.EqualTo(p.ClickAction))");
- Assert.That(scale,Is.EqualTo(p.Scale), "Assert.That(scale,Is.EqualTo(p.Scale))");
- }
-
- [Test]
- public void T015_LargeSceneObjects()
- {
- UUID id = UUID.Random();
- Dictionary mydic = new Dictionary();
- SceneObjectGroup sog = NewSOG("Test SOG", id, region4);
- mydic.Add(sog.RootPart.UUID,sog.RootPart);
- for (int i=0;i<30;i++)
- {
- UUID tmp = UUID.Random();
- SceneObjectPart sop = NewSOP(("Test SOP " + i.ToString()),tmp);
- Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next());
- Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next());
- Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next());
- Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next());
- Vector3 angvelo = new Vector3(random.Next(),random.Next(),random.Next());
- Vector3 accel = new Vector3(random.Next(),random.Next(),random.Next());
-
- sop.GroupPosition = groupos;
- sop.RotationOffset = rotoff;
- sop.OffsetPosition = offset;
- sop.Velocity = velocity;
- sop.AngularVelocity = angvelo;
- sop.Acceleration = accel;
-
- mydic.Add(tmp,sop);
- sog.AddPart(sop);
- db.StoreObject(sog, region4);
- }
-
- SceneObjectGroup retsog = FindSOG("Test SOG", region4);
- SceneObjectPart[] parts = retsog.GetParts();
- for (int i=0;i<30;i++)
- {
- SceneObjectPart cursop = mydic[parts[i].UUID];
- Assert.That(cursop.GroupPosition,Is.EqualTo(parts[i].GroupPosition), "Assert.That(cursop.GroupPosition,Is.EqualTo(parts[i].GroupPosition))");
- Assert.That(cursop.RotationOffset,Is.EqualTo(parts[i].RotationOffset), "Assert.That(cursop.RotationOffset,Is.EqualTo(parts[i].RotationOffset))");
- Assert.That(cursop.OffsetPosition,Is.EqualTo(parts[i].OffsetPosition), "Assert.That(cursop.OffsetPosition,Is.EqualTo(parts[i].OffsetPosition))");
- Assert.That(cursop.Velocity,Is.EqualTo(parts[i].Velocity), "Assert.That(cursop.Velocity,Is.EqualTo(parts[i].Velocity))");
- Assert.That(cursop.AngularVelocity,Is.EqualTo(parts[i].AngularVelocity), "Assert.That(cursop.AngularVelocity,Is.EqualTo(parts[i].AngularVelocity))");
- Assert.That(cursop.Acceleration,Is.EqualTo(parts[i].Acceleration), "Assert.That(cursop.Acceleration,Is.EqualTo(parts[i].Acceleration))");
- }
- }
-
- //[Test]
- public void T016_RandomSogWithSceneParts()
- {
- PropertyScrambler scrambler =
- new PropertyScrambler()
- .DontScramble(x => x.UUID);
- UUID tmpSog = UUID.Random();
- UUID tmp1 = UUID.Random();
- UUID tmp2 = UUID.Random();
- UUID tmp3 = UUID.Random();
- UUID newregion = UUID.Random();
- SceneObjectPart p1 = new SceneObjectPart();
- SceneObjectPart p2 = new SceneObjectPart();
- SceneObjectPart p3 = new SceneObjectPart();
- p1.Shape = PrimitiveBaseShape.Default;
- p2.Shape = PrimitiveBaseShape.Default;
- p3.Shape = PrimitiveBaseShape.Default;
- p1.UUID = tmp1;
- p2.UUID = tmp2;
- p3.UUID = tmp3;
- scrambler.Scramble(p1);
- scrambler.Scramble(p2);
- scrambler.Scramble(p3);
-
- SceneObjectGroup sog = NewSOG("Sop 0", tmpSog, newregion);
- PropertyScrambler sogScrambler =
- new PropertyScrambler()
- .DontScramble(x => x.UUID);
- sogScrambler.Scramble(sog);
- sog.UUID = tmpSog;
- sog.AddPart(p1);
- sog.AddPart(p2);
- sog.AddPart(p3);
-
- SceneObjectPart[] parts = sog.GetParts();
- Assert.That(parts.Length, Is.EqualTo(4), "Assert.That(parts.Length,Is.EqualTo(4))");
-
- db.StoreObject(sog, newregion);
- List sogs = db.LoadObjects(newregion);
- Assert.That(sogs.Count, Is.EqualTo(1), "Assert.That(sogs.Count,Is.EqualTo(1))");
- SceneObjectGroup newsog = sogs[0];
-
- SceneObjectPart[] newparts = newsog.GetParts();
- Assert.That(newparts.Length, Is.EqualTo(4), "Assert.That(newparts.Length,Is.EqualTo(4))");
-
- Assert.That(newsog, Constraints.PropertyCompareConstraint(sog)
- .IgnoreProperty(x=>x.LocalId)
- .IgnoreProperty(x=>x.HasGroupChanged)
- .IgnoreProperty(x=>x.IsSelected)
- .IgnoreProperty(x=>x.RegionHandle)
- .IgnoreProperty(x=>x.RegionUUID)
- .IgnoreProperty(x=>x.Scene)
- .IgnoreProperty(x=>x.Children)
- .IgnoreProperty(x=>x.PassCollision)
- .IgnoreProperty(x=>x.RootPart));
- }
-
- [Test]
- public void T020_PrimInventoryEmpty()
- {
- SceneObjectGroup sog = FindSOG("object1", region1);
- TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, item1);
- Assert.That(t, Is.Null);
- }
-
- [Test]
- public void T021_PrimInventoryStore()
- {
- SceneObjectGroup sog = FindSOG("object1", region1);
- InventoryItemBase i = NewItem(item1, zero, zero, itemname1, zero);
-
- Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, i, zero), Is.True);
- TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, item1);
- Assert.That(t.Name, Is.EqualTo(itemname1), "Assert.That(t.Name, Is.EqualTo(itemname1))");
-
- // TODO: seriously??? this is the way we need to loop to get this?
-
- List list = new List();
- foreach (UUID uuid in sog.RootPart.Inventory.GetInventoryList())
- {
- list.Add(sog.GetInventoryItem(sog.RootPart.LocalId, uuid));
- }
-
- db.StorePrimInventory(prim1, list);
- }
-
- [Test]
- public void T022_PrimInventoryRetrieve()
- {
- SceneObjectGroup sog = FindSOG("object1", region1);
- TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, item1);
-
- Assert.That(t.Name, Is.EqualTo(itemname1), "Assert.That(t.Name, Is.EqualTo(itemname1))");
- }
-
- [Test]
- public void T023_PrimInventoryUpdate()
- {
- SceneObjectGroup sog = FindSOG("object1", region1);
- TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, item1);
-
- t.Name = "My New Name";
- sog.UpdateInventoryItem(t);
-
- Assert.That(t.Name, Is.EqualTo("My New Name"), "Assert.That(t.Name, Is.EqualTo(\"My New Name\"))");
-
- }
-
- [Test]
- public void T024_PrimInventoryRemove()
- {
- List list = new List();
- db.StorePrimInventory(prim1, list);
-
- SceneObjectGroup sog = FindSOG("object1", region1);
- TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, item1);
- Assert.That(t, Is.Null);
- }
-
- [Test]
- public void T025_PrimInventoryPersistency()
- {
- InventoryItemBase i = new InventoryItemBase();
- UUID id = UUID.Random();
- i.ID = id;
- UUID folder = UUID.Random();
- i.Folder = folder;
- UUID owner = UUID.Random();
- i.Owner = owner;
- UUID creator = UUID.Random();
- i.CreatorId = creator.ToString();
- string name = RandomName();
- i.Name = name;
- i.Description = name;
- UUID assetid = UUID.Random();
- i.AssetID = assetid;
- int invtype = random.Next();
- i.InvType = invtype;
- uint nextperm = (uint) random.Next();
- i.NextPermissions = nextperm;
- uint curperm = (uint) random.Next();
- i.CurrentPermissions = curperm;
- uint baseperm = (uint) random.Next();
- i.BasePermissions = baseperm;
- uint eoperm = (uint) random.Next();
- i.EveryOnePermissions = eoperm;
- int assettype = random.Next();
- i.AssetType = assettype;
- UUID groupid = UUID.Random();
- i.GroupID = groupid;
- bool groupown = true;
- i.GroupOwned = groupown;
- int saleprice = random.Next();
- i.SalePrice = saleprice;
- byte saletype = (byte) random.Next(127);
- i.SaleType = saletype;
- uint flags = (uint) random.Next();
- i.Flags = flags;
- int creationd = random.Next();
- i.CreationDate = creationd;
-
- SceneObjectGroup sog = FindSOG("object1", region1);
- Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, i, zero), Is.True);
- TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, id);
-
- Assert.That(t.Name, Is.EqualTo(name), "Assert.That(t.Name, Is.EqualTo(name))");
- Assert.That(t.AssetID,Is.EqualTo(assetid), "Assert.That(t.AssetID,Is.EqualTo(assetid))");
- Assert.That(t.BasePermissions,Is.EqualTo(baseperm), "Assert.That(t.BasePermissions,Is.EqualTo(baseperm))");
- Assert.That(t.CreationDate,Is.EqualTo(creationd), "Assert.That(t.CreationDate,Is.EqualTo(creationd))");
- Assert.That(t.CreatorID,Is.EqualTo(creator), "Assert.That(t.CreatorID,Is.EqualTo(creator))");
- Assert.That(t.Description,Is.EqualTo(name), "Assert.That(t.Description,Is.EqualTo(name))");
- Assert.That(t.EveryonePermissions,Is.EqualTo(eoperm), "Assert.That(t.EveryonePermissions,Is.EqualTo(eoperm))");
- Assert.That(t.Flags,Is.EqualTo(flags), "Assert.That(t.Flags,Is.EqualTo(flags))");
- Assert.That(t.GroupID,Is.EqualTo(sog.RootPart.GroupID), "Assert.That(t.GroupID,Is.EqualTo(sog.RootPart.GroupID))");
- // Where is this group permissions??
- // Assert.That(t.GroupPermissions,Is.EqualTo(), "Assert.That(t.GroupPermissions,Is.EqualTo())");
- Assert.That(t.Type,Is.EqualTo(assettype), "Assert.That(t.Type,Is.EqualTo(assettype))");
- Assert.That(t.InvType, Is.EqualTo(invtype), "Assert.That(t.InvType, Is.EqualTo(invtype))");
- Assert.That(t.ItemID, Is.EqualTo(id), "Assert.That(t.ItemID, Is.EqualTo(id))");
- Assert.That(t.LastOwnerID, Is.EqualTo(sog.RootPart.LastOwnerID), "Assert.That(t.LastOwnerID, Is.EqualTo(sog.RootPart.LastOwnerID))");
- Assert.That(t.NextPermissions, Is.EqualTo(nextperm), "Assert.That(t.NextPermissions, Is.EqualTo(nextperm))");
- // Ownership changes when you drop an object into an object
- // owned by someone else
- Assert.That(t.OwnerID,Is.EqualTo(sog.RootPart.OwnerID), "Assert.That(t.OwnerID,Is.EqualTo(sog.RootPart.OwnerID))");
- Assert.That(t.CurrentPermissions, Is.EqualTo(curperm | 8), "Assert.That(t.CurrentPermissions, Is.EqualTo(curperm | 8))");
- Assert.That(t.ParentID,Is.EqualTo(sog.RootPart.FolderID), "Assert.That(t.ParentID,Is.EqualTo(sog.RootPart.FolderID))");
- Assert.That(t.ParentPartID,Is.EqualTo(sog.RootPart.UUID), "Assert.That(t.ParentPartID,Is.EqualTo(sog.RootPart.UUID))");
- }
-
- [Test]
- [ExpectedException(typeof(ArgumentException))]
- public void T026_PrimInventoryMany()
- {
- UUID i1,i2,i3,i4;
- i1 = UUID.Random();
- i2 = UUID.Random();
- i3 = UUID.Random();
- i4 = i3;
- InventoryItemBase ib1 = NewItem(i1, zero, zero, RandomName(), zero);
- InventoryItemBase ib2 = NewItem(i2, zero, zero, RandomName(), zero);
- InventoryItemBase ib3 = NewItem(i3, zero, zero, RandomName(), zero);
- InventoryItemBase ib4 = NewItem(i4, zero, zero, RandomName(), zero);
-
- SceneObjectGroup sog = FindSOG("object1", region1);
-
- Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, ib1, zero), Is.True);
- Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, ib2, zero), Is.True);
- Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, ib3, zero), Is.True);
- Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, ib4, zero), Is.True);
-
- TaskInventoryItem t1 = sog.GetInventoryItem(sog.RootPart.LocalId, i1);
- Assert.That(t1.Name, Is.EqualTo(ib1.Name), "Assert.That(t1.Name, Is.EqualTo(ib1.Name))");
- TaskInventoryItem t2 = sog.GetInventoryItem(sog.RootPart.LocalId, i2);
- Assert.That(t2.Name, Is.EqualTo(ib2.Name), "Assert.That(t2.Name, Is.EqualTo(ib2.Name))");
- TaskInventoryItem t3 = sog.GetInventoryItem(sog.RootPart.LocalId, i3);
- Assert.That(t3.Name, Is.EqualTo(ib3.Name), "Assert.That(t3.Name, Is.EqualTo(ib3.Name))");
- TaskInventoryItem t4 = sog.GetInventoryItem(sog.RootPart.LocalId, i4);
- Assert.That(t4, Is.Null);
- }
-
- [Test]
- public void T052_RemoveObject()
- {
- db.RemoveObject(prim1, region1);
- SceneObjectGroup sog = FindSOG("object1", region1);
- Assert.That(sog, Is.Null);
- }
-
-
- [Test]
- public void T100_DefaultRegionInfo()
- {
- RegionSettings r1 = db.LoadRegionSettings(region1);
- Assert.That(r1.RegionUUID, Is.EqualTo(region1), "Assert.That(r1.RegionUUID, Is.EqualTo(region1))");
-
- RegionSettings r2 = db.LoadRegionSettings(region2);
- Assert.That(r2.RegionUUID, Is.EqualTo(region2), "Assert.That(r2.RegionUUID, Is.EqualTo(region2))");
- }
-
- [Test]
- public void T101_UpdateRegionInfo()
- {
- int agentlimit = random.Next();
- double objectbonus = random.Next();
- int maturity = random.Next();
- UUID tertex1 = UUID.Random();
- UUID tertex2 = UUID.Random();
- UUID tertex3 = UUID.Random();
- UUID tertex4 = UUID.Random();
- double elev1nw = random.Next();
- double elev2nw = random.Next();
- double elev1ne = random.Next();
- double elev2ne = random.Next();
- double elev1se = random.Next();
- double elev2se = random.Next();
- double elev1sw = random.Next();
- double elev2sw = random.Next();
- double waterh = random.Next();
- double terrainraise = random.Next();
- double terrainlower = random.Next();
- Vector3 sunvector = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
- UUID terimgid = UUID.Random();
- double sunpos = random.Next();
- UUID cov = UUID.Random();
-
- RegionSettings r1 = db.LoadRegionSettings(region1);
- r1.BlockTerraform = true;
- r1.BlockFly = true;
- r1.AllowDamage = true;
- r1.RestrictPushing = true;
- r1.AllowLandResell = false;
- r1.AllowLandJoinDivide = false;
- r1.BlockShowInSearch = true;
- r1.AgentLimit = agentlimit;
- r1.ObjectBonus = objectbonus;
- r1.Maturity = maturity;
- r1.DisableScripts = true;
- r1.DisableCollisions = true;
- r1.DisablePhysics = true;
- r1.TerrainTexture1 = tertex1;
- r1.TerrainTexture2 = tertex2;
- r1.TerrainTexture3 = tertex3;
- r1.TerrainTexture4 = tertex4;
- r1.Elevation1NW = elev1nw;
- r1.Elevation2NW = elev2nw;
- r1.Elevation1NE = elev1ne;
- r1.Elevation2NE = elev2ne;
- r1.Elevation1SE = elev1se;
- r1.Elevation2SE = elev2se;
- r1.Elevation1SW = elev1sw;
- r1.Elevation2SW = elev2sw;
- r1.WaterHeight = waterh;
- r1.TerrainRaiseLimit = terrainraise;
- r1.TerrainLowerLimit = terrainlower;
- r1.UseEstateSun = false;
- r1.Sandbox = true;
- r1.SunVector = sunvector;
- r1.TerrainImageID = terimgid;
- r1.FixedSun = true;
- r1.SunPosition = sunpos;
- r1.Covenant = cov;
-
- db.StoreRegionSettings(r1);
-
- RegionSettings r1a = db.LoadRegionSettings(region1);
- Assert.That(r1a.RegionUUID, Is.EqualTo(region1), "Assert.That(r1a.RegionUUID, Is.EqualTo(region1))");
- Assert.That(r1a.BlockTerraform,Is.True);
- Assert.That(r1a.BlockFly,Is.True);
- Assert.That(r1a.AllowDamage,Is.True);
- Assert.That(r1a.RestrictPushing,Is.True);
- Assert.That(r1a.AllowLandResell,Is.False);
- Assert.That(r1a.AllowLandJoinDivide,Is.False);
- Assert.That(r1a.BlockShowInSearch,Is.True);
- Assert.That(r1a.AgentLimit,Is.EqualTo(agentlimit), "Assert.That(r1a.AgentLimit,Is.EqualTo(agentlimit))");
- Assert.That(r1a.ObjectBonus,Is.EqualTo(objectbonus), "Assert.That(r1a.ObjectBonus,Is.EqualTo(objectbonus))");
- Assert.That(r1a.Maturity,Is.EqualTo(maturity), "Assert.That(r1a.Maturity,Is.EqualTo(maturity))");
- Assert.That(r1a.DisableScripts,Is.True);
- Assert.That(r1a.DisableCollisions,Is.True);
- Assert.That(r1a.DisablePhysics,Is.True);
- Assert.That(r1a.TerrainTexture1,Is.EqualTo(tertex1), "Assert.That(r1a.TerrainTexture1,Is.EqualTo(tertex1))");
- Assert.That(r1a.TerrainTexture2,Is.EqualTo(tertex2), "Assert.That(r1a.TerrainTexture2,Is.EqualTo(tertex2))");
- Assert.That(r1a.TerrainTexture3,Is.EqualTo(tertex3), "Assert.That(r1a.TerrainTexture3,Is.EqualTo(tertex3))");
- Assert.That(r1a.TerrainTexture4,Is.EqualTo(tertex4), "Assert.That(r1a.TerrainTexture4,Is.EqualTo(tertex4))");
- Assert.That(r1a.Elevation1NW,Is.EqualTo(elev1nw), "Assert.That(r1a.Elevation1NW,Is.EqualTo(elev1nw))");
- Assert.That(r1a.Elevation2NW,Is.EqualTo(elev2nw), "Assert.That(r1a.Elevation2NW,Is.EqualTo(elev2nw))");
- Assert.That(r1a.Elevation1NE,Is.EqualTo(elev1ne), "Assert.That(r1a.Elevation1NE,Is.EqualTo(elev1ne))");
- Assert.That(r1a.Elevation2NE,Is.EqualTo(elev2ne), "Assert.That(r1a.Elevation2NE,Is.EqualTo(elev2ne))");
- Assert.That(r1a.Elevation1SE,Is.EqualTo(elev1se), "Assert.That(r1a.Elevation1SE,Is.EqualTo(elev1se))");
- Assert.That(r1a.Elevation2SE,Is.EqualTo(elev2se), "Assert.That(r1a.Elevation2SE,Is.EqualTo(elev2se))");
- Assert.That(r1a.Elevation1SW,Is.EqualTo(elev1sw), "Assert.That(r1a.Elevation1SW,Is.EqualTo(elev1sw))");
- Assert.That(r1a.Elevation2SW,Is.EqualTo(elev2sw), "Assert.That(r1a.Elevation2SW,Is.EqualTo(elev2sw))");
- Assert.That(r1a.WaterHeight,Is.EqualTo(waterh), "Assert.That(r1a.WaterHeight,Is.EqualTo(waterh))");
- Assert.That(r1a.TerrainRaiseLimit,Is.EqualTo(terrainraise), "Assert.That(r1a.TerrainRaiseLimit,Is.EqualTo(terrainraise))");
- Assert.That(r1a.TerrainLowerLimit,Is.EqualTo(terrainlower), "Assert.That(r1a.TerrainLowerLimit,Is.EqualTo(terrainlower))");
- Assert.That(r1a.UseEstateSun,Is.False);
- Assert.That(r1a.Sandbox,Is.True);
- Assert.That(r1a.SunVector,Is.EqualTo(sunvector), "Assert.That(r1a.SunVector,Is.EqualTo(sunvector))");
- //Assert.That(r1a.TerrainImageID,Is.EqualTo(terimgid), "Assert.That(r1a.TerrainImageID,Is.EqualTo(terimgid))");
- Assert.That(r1a.FixedSun,Is.True);
- Assert.That(r1a.SunPosition, Is.EqualTo(sunpos), "Assert.That(r1a.SunPosition, Is.EqualTo(sunpos))");
- Assert.That(r1a.Covenant, Is.EqualTo(cov), "Assert.That(r1a.Covenant, Is.EqualTo(cov))");
-
- }
-
- [Test]
- public void T300_NoTerrain()
- {
- Assert.That(db.LoadTerrain(zero), Is.Null);
- Assert.That(db.LoadTerrain(region1), Is.Null);
- Assert.That(db.LoadTerrain(region2), Is.Null);
- Assert.That(db.LoadTerrain(UUID.Random()), Is.Null);
- }
-
- [Test]
- public void T301_CreateTerrain()
- {
- double[,] t1 = GenTerrain(height1);
- db.StoreTerrain(t1, region1);
-
- Assert.That(db.LoadTerrain(zero), Is.Null);
- Assert.That(db.LoadTerrain(region1), Is.Not.Null);
- Assert.That(db.LoadTerrain(region2), Is.Null);
- Assert.That(db.LoadTerrain(UUID.Random()), Is.Null);
- }
-
- [Test]
- public void T302_FetchTerrain()
- {
- double[,] baseterrain1 = GenTerrain(height1);
- double[,] baseterrain2 = GenTerrain(height2);
- double[,] t1 = db.LoadTerrain(region1);
- Assert.That(CompareTerrain(t1, baseterrain1), Is.True);
- Assert.That(CompareTerrain(t1, baseterrain2), Is.False);
- }
-
- [Test]
- public void T303_UpdateTerrain()
- {
- double[,] baseterrain1 = GenTerrain(height1);
- double[,] baseterrain2 = GenTerrain(height2);
- db.StoreTerrain(baseterrain2, region1);
-
- double[,] t1 = db.LoadTerrain(region1);
- Assert.That(CompareTerrain(t1, baseterrain1), Is.False);
- Assert.That(CompareTerrain(t1, baseterrain2), Is.True);
- }
-
- [Test]
- public void T400_EmptyLand()
- {
- Assert.That(db.LoadLandObjects(zero).Count, Is.EqualTo(0), "Assert.That(db.LoadLandObjects(zero).Count, Is.EqualTo(0))");
- Assert.That(db.LoadLandObjects(region1).Count, Is.EqualTo(0), "Assert.That(db.LoadLandObjects(region1).Count, Is.EqualTo(0))");
- Assert.That(db.LoadLandObjects(region2).Count, Is.EqualTo(0), "Assert.That(db.LoadLandObjects(region2).Count, Is.EqualTo(0))");
- Assert.That(db.LoadLandObjects(UUID.Random()).Count, Is.EqualTo(0), "Assert.That(db.LoadLandObjects(UUID.Random()).Count, Is.EqualTo(0))");
- }
-
- // TODO: we should have real land tests, but Land is so
- // intermingled with scene that you can't test it without a
- // valid scene. That requires some disagregation.
-
-
- //************************************************************************************//
- // Extra private methods
-
- private double[,] GenTerrain(double value)
- {
- double[,] terret = new double[Constants.RegionSize, Constants.RegionSize];
- terret.Initialize();
- for (int x = 0; x < Constants.RegionSize; x++)
- for (int y = 0; y < Constants.RegionSize; y++)
- terret[x,y] = value;
-
- return terret;
- }
-
- private bool CompareTerrain(double[,] one, double[,] two)
- {
- for (int x = 0; x < Constants.RegionSize; x++)
- for (int y = 0; y < Constants.RegionSize; y++)
- if (one[x,y] != two[x,y])
- return false;
-
- return true;
- }
-
-
- private SceneObjectGroup FindSOG(string name, UUID r)
- {
- List objs = db.LoadObjects(r);
- foreach (SceneObjectGroup sog in objs)
- {
- SceneObjectPart p = sog.RootPart;
- if (p.Name == name) {
- RegionInfo regionInfo = new RegionInfo();
- regionInfo.RegionID = r;
- regionInfo.RegionLocX = 0;
- regionInfo.RegionLocY = 0;
-
- Scene scene = new Scene(regionInfo);
- sog.SetScene(scene);
-
- return sog;
- }
- }
-
- return null;
- }
-
- // This builds a minimalistic Prim, 1 SOG with 1 root SOP. A
- // common failure case is people adding new fields that aren't
- // initialized, but have non-null db constraints. We should
- // honestly be passing more and more null things in here.
- //
- // Please note that in Sqlite.BuildPrim there is a commented out inline version
- // of this so you can debug and step through the build process and check the fields
- //
- // Real World Value: Tests for situation where extending a SceneObjectGroup/SceneObjectPart
- // causes the application to crash at the database layer because of null values
- // in NOT NULL fields
- //
- private SceneObjectGroup NewSOG(string name, UUID uuid, UUID regionId)
- {
- RegionInfo regionInfo = new RegionInfo();
- regionInfo.RegionID = regionId;
- regionInfo.RegionLocX = 0;
- regionInfo.RegionLocY = 0;
-
- Scene scene = new Scene(regionInfo);
-
- SceneObjectPart sop = new SceneObjectPart();
- sop.Name = name;
- sop.Description = name;
- sop.Text = RandomName();
- sop.SitName = RandomName();
- sop.TouchName = RandomName();
- sop.UUID = uuid;
- sop.Shape = PrimitiveBaseShape.Default;
-
- SceneObjectGroup sog = new SceneObjectGroup(sop);
- sog.SetScene(scene);
-
- return sog;
- }
-
- private SceneObjectPart NewSOP(string name, UUID uuid)
- {
- SceneObjectPart sop = new SceneObjectPart();
- sop.Name = name;
- sop.Description = name;
- sop.Text = RandomName();
- sop.SitName = RandomName();
- sop.TouchName = RandomName();
- sop.UUID = uuid;
- sop.Shape = PrimitiveBaseShape.Default;
- return sop;
- }
-
- // These are copied from the Inventory Item tests
-
- private InventoryItemBase NewItem(UUID id, UUID parent, UUID owner, string name, UUID asset)
- {
- InventoryItemBase i = new InventoryItemBase();
- i.ID = id;
- i.Folder = parent;
- i.Owner = owner;
- i.CreatorId = owner.ToString();
- i.Name = name;
- i.Description = name;
- i.AssetID = asset;
- return i;
- }
-
- private static string RandomName()
- {
- StringBuilder name = new StringBuilder();
- int size = random.Next(5,12);
- char ch ;
- for (int i=0; i : BasicDataServiceTest
+ where TConn : DbConnection, new()
+ where TEstateStore : class, IEstateDataStore, new()
+ {
+ public IEstateDataStore db;
+
+ public static UUID REGION_ID = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed7");
+
+ public static UUID USER_ID_1 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed1");
+ public static UUID USER_ID_2 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed2");
+
+ public static UUID MANAGER_ID_1 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed3");
+ public static UUID MANAGER_ID_2 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed4");
+
+ public static UUID GROUP_ID_1 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed5");
+ public static UUID GROUP_ID_2 = new UUID("250d214e-1c7e-4f9b-a488-87c5e53feed6");
+
+ protected override void InitService(object service)
+ {
+ db = (IEstateDataStore)service;
+ db.Initialise(m_connStr);
+ ClearDB();
+ }
+
+ private void ClearDB()
+ {
+ // if a new table is added, it has to be dropped here
+ ExecuteSql("delete from migrations where name='EstateStore';");
+
+ DropTables(
+ "prims",
+ "primshapes",
+ "primitems",
+ "terrain",
+ "land",
+ "landaccesslist",
+ "regionban",
+ "regionsettings",
+ "estate_managers",
+ "estate_groups",
+ "estate_users",
+ "estateban",
+ "estate_settings",
+ "estate_map"
+ );
+ }
+
+ #region 0Tests
+
+ [Test]
+ public void T010_EstateSettingsSimpleStorage_MinimumParameterSet()
+ {
+ EstateSettingsSimpleStorage(
+ REGION_ID,
+ DataTestUtil.STRING_MIN,
+ DataTestUtil.UNSIGNED_INTEGER_MIN,
+ DataTestUtil.FLOAT_MIN,
+ DataTestUtil.INTEGER_MIN,
+ DataTestUtil.INTEGER_MIN,
+ DataTestUtil.INTEGER_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.DOUBLE_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.STRING_MIN,
+ DataTestUtil.UUID_MIN
+ );
+ }
+
+ [Test]
+ public void T011_EstateSettingsSimpleStorage_MaximumParameterSet()
+ {
+ EstateSettingsSimpleStorage(
+ REGION_ID,
+ DataTestUtil.STRING_MAX(64),
+ DataTestUtil.UNSIGNED_INTEGER_MAX,
+ DataTestUtil.FLOAT_MAX,
+ DataTestUtil.INTEGER_MAX,
+ DataTestUtil.INTEGER_MAX,
+ DataTestUtil.INTEGER_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.DOUBLE_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.BOOLEAN_MAX,
+ DataTestUtil.STRING_MAX(255),
+ DataTestUtil.UUID_MAX
+ );
+ }
+
+ [Test]
+ public void T012_EstateSettingsSimpleStorage_AccurateParameterSet()
+ {
+ EstateSettingsSimpleStorage(
+ REGION_ID,
+ DataTestUtil.STRING_MAX(1),
+ DataTestUtil.UNSIGNED_INTEGER_MIN,
+ DataTestUtil.FLOAT_ACCURATE,
+ DataTestUtil.INTEGER_MIN,
+ DataTestUtil.INTEGER_MIN,
+ DataTestUtil.INTEGER_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.DOUBLE_ACCURATE,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.BOOLEAN_MIN,
+ DataTestUtil.STRING_MAX(1),
+ DataTestUtil.UUID_MIN
+ );
+ }
+
+ [Test]
+ public void T012_EstateSettingsRandomStorage()
+ {
+ // Letting estate store generate rows to database for us
+ EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
+ new PropertyScrambler()
+ .DontScramble(x=>x.EstateID)
+ .Scramble(originalSettings);
+
+ // Saving settings.
+ db.StoreEstateSettings(originalSettings);
+
+ // Loading settings to another instance variable.
+ EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
+
+ // Checking that loaded values are correct.
+ Assert.That(loadedSettings, Constraints.PropertyCompareConstraint(originalSettings));
+ }
+
+ [Test]
+ public void T020_EstateSettingsManagerList()
+ {
+ // Letting estate store generate rows to database for us
+ EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
+
+ originalSettings.EstateManagers = new UUID[] { MANAGER_ID_1, MANAGER_ID_2 };
+
+ // Saving settings.
+ db.StoreEstateSettings(originalSettings);
+
+ // Loading settings to another instance variable.
+ EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
+
+ Assert.AreEqual(2, loadedSettings.EstateManagers.Length);
+ Assert.AreEqual(MANAGER_ID_1, loadedSettings.EstateManagers[0]);
+ Assert.AreEqual(MANAGER_ID_2, loadedSettings.EstateManagers[1]);
+ }
+
+ [Test]
+ public void T021_EstateSettingsUserList()
+ {
+ // Letting estate store generate rows to database for us
+ EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
+
+ originalSettings.EstateAccess = new UUID[] { USER_ID_1, USER_ID_2 };
+
+ // Saving settings.
+ db.StoreEstateSettings(originalSettings);
+
+ // Loading settings to another instance variable.
+ EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
+
+ Assert.AreEqual(2, loadedSettings.EstateAccess.Length);
+ Assert.AreEqual(USER_ID_1, loadedSettings.EstateAccess[0]);
+ Assert.AreEqual(USER_ID_2, loadedSettings.EstateAccess[1]);
+ }
+
+ [Test]
+ public void T022_EstateSettingsGroupList()
+ {
+ // Letting estate store generate rows to database for us
+ EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
+
+ originalSettings.EstateGroups = new UUID[] { GROUP_ID_1, GROUP_ID_2 };
+
+ // Saving settings.
+ db.StoreEstateSettings(originalSettings);
+
+ // Loading settings to another instance variable.
+ EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
+
+ Assert.AreEqual(2, loadedSettings.EstateAccess.Length);
+ Assert.AreEqual(GROUP_ID_1, loadedSettings.EstateGroups[0]);
+ Assert.AreEqual(GROUP_ID_2, loadedSettings.EstateGroups[1]);
+ }
+
+ [Test]
+ public void T022_EstateSettingsBanList()
+ {
+ // Letting estate store generate rows to database for us
+ EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
+
+ EstateBan estateBan1 = new EstateBan();
+ estateBan1.BannedUserID = DataTestUtil.UUID_MIN;
+
+ EstateBan estateBan2 = new EstateBan();
+ estateBan2.BannedUserID = DataTestUtil.UUID_MAX;
+
+ originalSettings.EstateBans = new EstateBan[] { estateBan1, estateBan2 };
+
+ // Saving settings.
+ db.StoreEstateSettings(originalSettings);
+
+ // Loading settings to another instance variable.
+ EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
+
+ Assert.AreEqual(2, loadedSettings.EstateBans.Length);
+ Assert.AreEqual(DataTestUtil.UUID_MIN, loadedSettings.EstateBans[0].BannedUserID);
+
+ Assert.AreEqual(DataTestUtil.UUID_MAX, loadedSettings.EstateBans[1].BannedUserID);
+
+ }
+
+ #endregion
+
+ #region Parametrizable Test Implementations
+
+ private void EstateSettingsSimpleStorage(
+ UUID regionId,
+ string estateName,
+ uint parentEstateID,
+ float billableFactor,
+ int pricePerMeter,
+ int redirectGridX,
+ int redirectGridY,
+ bool useGlobalTime,
+ bool fixedSun,
+ double sunPosition,
+ bool allowVoice,
+ bool allowDirectTeleport,
+ bool resetHomeOnTeleport,
+ bool denyAnonymous,
+ bool denyIdentified,
+ bool denyTransacted,
+ bool denyMinors,
+ bool abuseEmailToEstateOwner,
+ bool blockDwell,
+ bool estateSkipScripts,
+ bool taxFree,
+ bool publicAccess,
+ string abuseEmail,
+ UUID estateOwner
+ )
+ {
+
+ // Letting estate store generate rows to database for us
+ EstateSettings originalSettings = db.LoadEstateSettings(regionId, true);
+
+ SetEstateSettings(
+ originalSettings,
+ estateName,
+ parentEstateID,
+ billableFactor,
+ pricePerMeter,
+ redirectGridX,
+ redirectGridY,
+ useGlobalTime,
+ fixedSun,
+ sunPosition,
+ allowVoice,
+ allowDirectTeleport,
+ resetHomeOnTeleport,
+ denyAnonymous,
+ denyIdentified,
+ denyTransacted,
+ denyMinors,
+ abuseEmailToEstateOwner,
+ blockDwell,
+ estateSkipScripts,
+ taxFree,
+ publicAccess,
+ abuseEmail,
+ estateOwner
+ );
+
+ originalSettings.EstateName = estateName;
+ originalSettings.ParentEstateID = parentEstateID;
+ originalSettings.BillableFactor = billableFactor;
+ originalSettings.PricePerMeter = pricePerMeter;
+ originalSettings.RedirectGridX = redirectGridX;
+ originalSettings.RedirectGridY = redirectGridY;
+ originalSettings.UseGlobalTime = useGlobalTime;
+ originalSettings.FixedSun = fixedSun;
+ originalSettings.SunPosition = sunPosition;
+ originalSettings.AllowVoice = allowVoice;
+ originalSettings.AllowDirectTeleport = allowDirectTeleport;
+ originalSettings.ResetHomeOnTeleport = resetHomeOnTeleport;
+ originalSettings.DenyAnonymous = denyAnonymous;
+ originalSettings.DenyIdentified = denyIdentified;
+ originalSettings.DenyTransacted = denyTransacted;
+ originalSettings.DenyMinors = denyMinors;
+ originalSettings.AbuseEmailToEstateOwner = abuseEmailToEstateOwner;
+ originalSettings.BlockDwell = blockDwell;
+ originalSettings.EstateSkipScripts = estateSkipScripts;
+ originalSettings.TaxFree = taxFree;
+ originalSettings.PublicAccess = publicAccess;
+ originalSettings.AbuseEmail = abuseEmail;
+ originalSettings.EstateOwner = estateOwner;
+
+ // Saving settings.
+ db.StoreEstateSettings(originalSettings);
+
+ // Loading settings to another instance variable.
+ EstateSettings loadedSettings = db.LoadEstateSettings(regionId, true);
+
+ // Checking that loaded values are correct.
+ ValidateEstateSettings(
+ loadedSettings,
+ estateName,
+ parentEstateID,
+ billableFactor,
+ pricePerMeter,
+ redirectGridX,
+ redirectGridY,
+ useGlobalTime,
+ fixedSun,
+ sunPosition,
+ allowVoice,
+ allowDirectTeleport,
+ resetHomeOnTeleport,
+ denyAnonymous,
+ denyIdentified,
+ denyTransacted,
+ denyMinors,
+ abuseEmailToEstateOwner,
+ blockDwell,
+ estateSkipScripts,
+ taxFree,
+ publicAccess,
+ abuseEmail,
+ estateOwner
+ );
+
+ }
+
+ #endregion
+
+ #region EstateSetting Initialization and Validation Methods
+
+ private void SetEstateSettings(
+ EstateSettings estateSettings,
+ string estateName,
+ uint parentEstateID,
+ float billableFactor,
+ int pricePerMeter,
+ int redirectGridX,
+ int redirectGridY,
+ bool useGlobalTime,
+ bool fixedSun,
+ double sunPosition,
+ bool allowVoice,
+ bool allowDirectTeleport,
+ bool resetHomeOnTeleport,
+ bool denyAnonymous,
+ bool denyIdentified,
+ bool denyTransacted,
+ bool denyMinors,
+ bool abuseEmailToEstateOwner,
+ bool blockDwell,
+ bool estateSkipScripts,
+ bool taxFree,
+ bool publicAccess,
+ string abuseEmail,
+ UUID estateOwner
+ )
+ {
+ estateSettings.EstateName = estateName;
+ estateSettings.ParentEstateID = parentEstateID;
+ estateSettings.BillableFactor = billableFactor;
+ estateSettings.PricePerMeter = pricePerMeter;
+ estateSettings.RedirectGridX = redirectGridX;
+ estateSettings.RedirectGridY = redirectGridY;
+ estateSettings.UseGlobalTime = useGlobalTime;
+ estateSettings.FixedSun = fixedSun;
+ estateSettings.SunPosition = sunPosition;
+ estateSettings.AllowVoice = allowVoice;
+ estateSettings.AllowDirectTeleport = allowDirectTeleport;
+ estateSettings.ResetHomeOnTeleport = resetHomeOnTeleport;
+ estateSettings.DenyAnonymous = denyAnonymous;
+ estateSettings.DenyIdentified = denyIdentified;
+ estateSettings.DenyTransacted = denyTransacted;
+ estateSettings.DenyMinors = denyMinors;
+ estateSettings.AbuseEmailToEstateOwner = abuseEmailToEstateOwner;
+ estateSettings.BlockDwell = blockDwell;
+ estateSettings.EstateSkipScripts = estateSkipScripts;
+ estateSettings.TaxFree = taxFree;
+ estateSettings.PublicAccess = publicAccess;
+ estateSettings.AbuseEmail = abuseEmail;
+ estateSettings.EstateOwner = estateOwner;
+ }
+
+ private void ValidateEstateSettings(
+ EstateSettings estateSettings,
+ string estateName,
+ uint parentEstateID,
+ float billableFactor,
+ int pricePerMeter,
+ int redirectGridX,
+ int redirectGridY,
+ bool useGlobalTime,
+ bool fixedSun,
+ double sunPosition,
+ bool allowVoice,
+ bool allowDirectTeleport,
+ bool resetHomeOnTeleport,
+ bool denyAnonymous,
+ bool denyIdentified,
+ bool denyTransacted,
+ bool denyMinors,
+ bool abuseEmailToEstateOwner,
+ bool blockDwell,
+ bool estateSkipScripts,
+ bool taxFree,
+ bool publicAccess,
+ string abuseEmail,
+ UUID estateOwner
+ )
+ {
+ Assert.AreEqual(estateName, estateSettings.EstateName);
+ Assert.AreEqual(parentEstateID, estateSettings.ParentEstateID);
+
+ DataTestUtil.AssertFloatEqualsWithTolerance(billableFactor, estateSettings.BillableFactor);
+
+ Assert.AreEqual(pricePerMeter, estateSettings.PricePerMeter);
+ Assert.AreEqual(redirectGridX, estateSettings.RedirectGridX);
+ Assert.AreEqual(redirectGridY, estateSettings.RedirectGridY);
+ Assert.AreEqual(useGlobalTime, estateSettings.UseGlobalTime);
+ Assert.AreEqual(fixedSun, estateSettings.FixedSun);
+
+ DataTestUtil.AssertDoubleEqualsWithTolerance(sunPosition, estateSettings.SunPosition);
+
+ Assert.AreEqual(allowVoice, estateSettings.AllowVoice);
+ Assert.AreEqual(allowDirectTeleport, estateSettings.AllowDirectTeleport);
+ Assert.AreEqual(resetHomeOnTeleport, estateSettings.ResetHomeOnTeleport);
+ Assert.AreEqual(denyAnonymous, estateSettings.DenyAnonymous);
+ Assert.AreEqual(denyIdentified, estateSettings.DenyIdentified);
+ Assert.AreEqual(denyTransacted, estateSettings.DenyTransacted);
+ Assert.AreEqual(denyMinors, estateSettings.DenyMinors);
+ Assert.AreEqual(abuseEmailToEstateOwner, estateSettings.AbuseEmailToEstateOwner);
+ Assert.AreEqual(blockDwell, estateSettings.BlockDwell);
+ Assert.AreEqual(estateSkipScripts, estateSettings.EstateSkipScripts);
+ Assert.AreEqual(taxFree, estateSettings.TaxFree);
+ Assert.AreEqual(publicAccess, estateSettings.PublicAccess);
+ Assert.AreEqual(abuseEmail, estateSettings.AbuseEmail);
+ Assert.AreEqual(estateOwner, estateSettings.EstateOwner);
+ }
+
+ #endregion
+
+ }
+}
diff --git a/OpenSim/Data/Tests/InventoryTests.cs b/OpenSim/Data/Tests/InventoryTests.cs
new file mode 100644
index 0000000..876dcf9
--- /dev/null
+++ b/OpenSim/Data/Tests/InventoryTests.cs
@@ -0,0 +1,347 @@
+/*
+ * 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 OpenSimulator 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 log4net.Config;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+using OpenMetaverse;
+using OpenSim.Framework;
+using log4net;
+using System.Reflection;
+using System.Data.Common;
+
+// DBMS-specific:
+using MySql.Data.MySqlClient;
+using OpenSim.Data.MySQL;
+
+using System.Data.SqlClient;
+using OpenSim.Data.MSSQL;
+
+using Mono.Data.Sqlite;
+using OpenSim.Data.SQLite;
+
+namespace OpenSim.Data.Tests
+{
+ [TestFixture(typeof(MySqlConnection), typeof(MySQLInventoryData), Description = "Inventory store tests (MySQL)")]
+ [TestFixture(typeof(SqlConnection), typeof(MSSQLInventoryData), Description = "Inventory store tests (MS SQL Server)")]
+ [TestFixture(typeof(SqliteConnection), typeof(SQLiteInventoryStore), Description = "Inventory store tests (SQLite)")]
+
+ public class InventoryTests : BasicDataServiceTest
+ where TConn : DbConnection, new()
+ where TInvStore : class, IInventoryDataPlugin, new()
+ {
+ public IInventoryDataPlugin db;
+
+ public UUID zero = UUID.Zero;
+
+ public UUID folder1 = UUID.Random();
+ public UUID folder2 = UUID.Random();
+ public UUID folder3 = UUID.Random();
+ public UUID owner1 = UUID.Random();
+ public UUID owner2 = UUID.Random();
+ public UUID owner3 = UUID.Random();
+
+ public UUID item1 = UUID.Random();
+ public UUID item2 = UUID.Random();
+ public UUID item3 = UUID.Random();
+ public UUID asset1 = UUID.Random();
+ public UUID asset2 = UUID.Random();
+ public UUID asset3 = UUID.Random();
+
+ public string name1;
+ public string name2 = "First Level folder";
+ public string name3 = "First Level folder 2";
+ public string niname1 = "My Shirt";
+ public string iname1 = "Shirt";
+ public string iname2 = "Text Board";
+ public string iname3 = "No Pants Barrel";
+
+ public InventoryTests(string conn) : base(conn)
+ {
+ name1 = "Root Folder for " + owner1.ToString();
+ }
+
+ protected override void InitService(object service)
+ {
+ db = (IInventoryDataPlugin)service;
+ db.Initialise(m_connStr);
+ ClearDB();
+ }
+
+ private void ClearDB()
+ {
+ DropTables("inventoryitems", "inventoryfolders");
+ ExecuteSql("delete from migrations where name='Inventory'");
+ }
+
+ [Test]
+ public void T001_LoadEmpty()
+ {
+ Assert.That(db.getInventoryFolder(zero), Is.Null);
+ Assert.That(db.getInventoryFolder(folder1), Is.Null);
+ Assert.That(db.getInventoryFolder(folder2), Is.Null);
+ Assert.That(db.getInventoryFolder(folder3), Is.Null);
+
+ Assert.That(db.getInventoryItem(zero), Is.Null);
+ Assert.That(db.getInventoryItem(item1), Is.Null);
+ Assert.That(db.getInventoryItem(item2), Is.Null);
+ Assert.That(db.getInventoryItem(item3), Is.Null);
+
+ Assert.That(db.getUserRootFolder(zero), Is.Null);
+ Assert.That(db.getUserRootFolder(owner1), Is.Null);
+ }
+
+ // 01x - folder tests
+ [Test]
+ public void T010_FolderNonParent()
+ {
+ InventoryFolderBase f1 = NewFolder(folder2, folder1, 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(folder1, 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(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(folder1, Is.EqualTo(f1a.ID), "Assert.That(folder1, Is.EqualTo(f1a.ID))");
+ Assert.That(name1, Text.Matches(f1a.Name), "Assert.That(name1, Text.Matches(f1a.Name))");
+ }
+
+ // we now have the following tree
+ // folder1
+ // +--- folder2
+ // +--- folder3
+
+ [Test]
+ public void T012_FolderList()
+ {
+ InventoryFolderBase f2 = NewFolder(folder3, folder1, owner1, name3);
+ db.addInventoryFolder(f2);
+
+ Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1), "Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1))");
+ Assert.That(db.getInventoryFolders(folder1).Count, Is.EqualTo(2), "Assert.That(db.getInventoryFolders(folder1).Count, Is.EqualTo(2))");
+ Assert.That(db.getInventoryFolders(folder2).Count, Is.EqualTo(0), "Assert.That(db.getInventoryFolders(folder2).Count, Is.EqualTo(0))");
+ Assert.That(db.getInventoryFolders(folder3).Count, Is.EqualTo(0), "Assert.That(db.getInventoryFolders(folder3).Count, Is.EqualTo(0))");
+ Assert.That(db.getInventoryFolders(UUID.Random()).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(zero).Count, Is.EqualTo(0))");
+ Assert.That(db.getFolderHierarchy(folder1).Count, Is.EqualTo(2), "Assert.That(db.getFolderHierarchy(folder1).Count, Is.EqualTo(2))");
+ Assert.That(db.getFolderHierarchy(folder2).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(folder2).Count, Is.EqualTo(0))");
+ Assert.That(db.getFolderHierarchy(folder3).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(folder3).Count, Is.EqualTo(0))");
+ Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0))");
+ }
+
+
+ [Test]
+ public void T014_MoveFolder()
+ {
+ InventoryFolderBase f2 = db.getInventoryFolder(folder2);
+ f2.ParentID = folder3;
+ db.moveInventoryFolder(f2);
+
+ Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1), "Assert.That(db.getInventoryFolders(zero).Count, Is.EqualTo(1))");
+ Assert.That(db.getInventoryFolders(folder1).Count, Is.EqualTo(1), "Assert.That(db.getInventoryFolders(folder1).Count, Is.EqualTo(1))");
+ Assert.That(db.getInventoryFolders(folder2).Count, Is.EqualTo(0), "Assert.That(db.getInventoryFolders(folder2).Count, Is.EqualTo(0))");
+ Assert.That(db.getInventoryFolders(folder3).Count, Is.EqualTo(1), "Assert.That(db.getInventoryFolders(folder3).Count, Is.EqualTo(1))");
+ Assert.That(db.getInventoryFolders(UUID.Random()).Count, Is.EqualTo(0), "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(zero).Count, Is.EqualTo(0))");
+ Assert.That(db.getFolderHierarchy(folder1).Count, Is.EqualTo(2), "Assert.That(db.getFolderHierarchy(folder1).Count, Is.EqualTo(2))");
+ Assert.That(db.getFolderHierarchy(folder2).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(folder2).Count, Is.EqualTo(0))");
+ Assert.That(db.getFolderHierarchy(folder3).Count, Is.EqualTo(1), "Assert.That(db.getFolderHierarchy(folder3).Count, Is.EqualTo(1))");
+ Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0), "Assert.That(db.getFolderHierarchy(UUID.Random()).Count, Is.EqualTo(0))");
+ }
+
+ // Item tests
+ [Test]
+ public void T100_NoItems()
+ {
+ Assert.That(db.getInventoryInFolder(zero).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(zero).Count, Is.EqualTo(0))");
+ Assert.That(db.getInventoryInFolder(folder1).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(folder1).Count, Is.EqualTo(0))");
+ Assert.That(db.getInventoryInFolder(folder2).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(folder2).Count, Is.EqualTo(0))");
+ Assert.That(db.getInventoryInFolder(folder3).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(folder3).Count, Is.EqualTo(0))");
+ }
+
+ // TODO: Feeding a bad inventory item down the data path will
+ // crash the system. This is largely due to the builder
+ // routines. That should be fixed and tested for.
+ [Test]
+ public void T101_CreatItems()
+ {
+ db.addInventoryItem(NewItem(item1, folder3, owner1, iname1, asset1));
+ db.addInventoryItem(NewItem(item2, folder3, owner1, iname2, asset2));
+ db.addInventoryItem(NewItem(item3, folder3, owner1, iname3, asset3));
+ Assert.That(db.getInventoryInFolder(folder3).Count, Is.EqualTo(3), "Assert.That(db.getInventoryInFolder(folder3).Count, Is.EqualTo(3))");
+ }
+
+ [Test]
+ public void T102_CompareItems()
+ {
+ InventoryItemBase i1 = db.getInventoryItem(item1);
+ InventoryItemBase i2 = db.getInventoryItem(item2);
+ InventoryItemBase i3 = db.getInventoryItem(item3);
+ Assert.That(i1.Name, Is.EqualTo(iname1), "Assert.That(i1.Name, Is.EqualTo(iname1))");
+ Assert.That(i2.Name, Is.EqualTo(iname2), "Assert.That(i2.Name, Is.EqualTo(iname2))");
+ Assert.That(i3.Name, Is.EqualTo(iname3), "Assert.That(i3.Name, Is.EqualTo(iname3))");
+ Assert.That(i1.Owner, Is.EqualTo(owner1), "Assert.That(i1.Owner, Is.EqualTo(owner1))");
+ Assert.That(i2.Owner, Is.EqualTo(owner1), "Assert.That(i2.Owner, Is.EqualTo(owner1))");
+ Assert.That(i3.Owner, Is.EqualTo(owner1), "Assert.That(i3.Owner, Is.EqualTo(owner1))");
+ Assert.That(i1.AssetID, Is.EqualTo(asset1), "Assert.That(i1.AssetID, Is.EqualTo(asset1))");
+ Assert.That(i2.AssetID, Is.EqualTo(asset2), "Assert.That(i2.AssetID, Is.EqualTo(asset2))");
+ Assert.That(i3.AssetID, Is.EqualTo(asset3), "Assert.That(i3.AssetID, Is.EqualTo(asset3))");
+ }
+
+ [Test]
+ public void T103_UpdateItem()
+ {
+ // TODO: probably shouldn't have the ability to have an
+ // owner of an item in a folder not owned by the user
+
+ InventoryItemBase i1 = db.getInventoryItem(item1);
+ i1.Name = niname1;
+ i1.Description = niname1;
+ i1.Owner = owner2;
+ db.updateInventoryItem(i1);
+
+ i1 = db.getInventoryItem(item1);
+ Assert.That(i1.Name, Is.EqualTo(niname1), "Assert.That(i1.Name, Is.EqualTo(niname1))");
+ Assert.That(i1.Description, Is.EqualTo(niname1), "Assert.That(i1.Description, Is.EqualTo(niname1))");
+ Assert.That(i1.Owner, Is.EqualTo(owner2), "Assert.That(i1.Owner, Is.EqualTo(owner2))");
+ }
+
+ [Test]
+ public void T104_RandomUpdateItem()
+ {
+ PropertyScrambler folderScrambler =
+ new PropertyScrambler()
+ .DontScramble(x => x.Owner)
+ .DontScramble(x => x.ParentID)
+ .DontScramble(x => x.ID);
+ UUID owner = UUID.Random();
+ UUID folder = UUID.Random();
+ UUID rootId = UUID.Random();
+ UUID rootAsset = UUID.Random();
+ InventoryFolderBase f1 = NewFolder(folder, zero, owner, name1);
+ folderScrambler.Scramble(f1);
+
+ db.addInventoryFolder(f1);
+ InventoryFolderBase f1a = db.getUserRootFolder(owner);
+ Assert.That(f1a, Constraints.PropertyCompareConstraint(f1));
+
+ folderScrambler.Scramble(f1a);
+
+ db.updateInventoryFolder(f1a);
+
+ InventoryFolderBase f1b = db.getUserRootFolder(owner);
+ Assert.That(f1b, Constraints.PropertyCompareConstraint(f1a));
+
+ //Now we have a valid folder to insert into, we can insert the item.
+ PropertyScrambler inventoryScrambler =
+ new PropertyScrambler()
+ .DontScramble(x => x.ID)
+ .DontScramble(x => x.AssetID)
+ .DontScramble(x => x.Owner)
+ .DontScramble(x => x.Folder);
+ InventoryItemBase root = NewItem(rootId, folder, owner, iname1, rootAsset);
+ inventoryScrambler.Scramble(root);
+ db.addInventoryItem(root);
+
+ InventoryItemBase expected = db.getInventoryItem(rootId);
+ Assert.That(expected, Constraints.PropertyCompareConstraint(root)
+ .IgnoreProperty(x => x.InvType)
+ .IgnoreProperty(x => x.CreatorIdAsUuid)
+ .IgnoreProperty(x => x.Description)
+ .IgnoreProperty(x => x.CreatorId));
+
+ inventoryScrambler.Scramble(expected);
+ db.updateInventoryItem(expected);
+
+ InventoryItemBase actual = db.getInventoryItem(rootId);
+ Assert.That(actual, Constraints.PropertyCompareConstraint(expected)
+ .IgnoreProperty(x => x.InvType)
+ .IgnoreProperty(x => x.CreatorIdAsUuid)
+ .IgnoreProperty(x => x.Description)
+ .IgnoreProperty(x => x.CreatorId));
+ }
+
+ [Test]
+ public void T999_StillNull()
+ {
+ // After all tests are run, these should still return no results
+ Assert.That(db.getInventoryFolder(zero), Is.Null);
+ Assert.That(db.getInventoryItem(zero), Is.Null);
+ Assert.That(db.getUserRootFolder(zero), Is.Null);
+ Assert.That(db.getInventoryInFolder(zero).Count, Is.EqualTo(0), "Assert.That(db.getInventoryInFolder(zero).Count, Is.EqualTo(0))");
+ }
+
+ private InventoryItemBase NewItem(UUID id, UUID parent, UUID owner, string name, UUID asset)
+ {
+ InventoryItemBase i = new InventoryItemBase();
+ i.ID = id;
+ i.Folder = parent;
+ i.Owner = owner;
+ i.CreatorId = owner.ToString();
+ i.Name = name;
+ i.Description = name;
+ i.AssetID = asset;
+ return i;
+ }
+
+ 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;
+ }
+ }
+}
diff --git a/OpenSim/Data/Tests/RegionTests.cs b/OpenSim/Data/Tests/RegionTests.cs
new file mode 100644
index 0000000..2a97368
--- /dev/null
+++ b/OpenSim/Data/Tests/RegionTests.cs
@@ -0,0 +1,1082 @@
+/*
+ * 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 OpenSimulator 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 System.Drawing;
+using System.Text;
+using log4net.Config;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+using OpenMetaverse;
+using OpenSim.Framework;
+using OpenSim.Region.Framework.Interfaces;
+using OpenSim.Region.Framework.Scenes;
+using log4net;
+using System.Reflection;
+using System.Data.Common;
+
+// DBMS-specific:
+using MySql.Data.MySqlClient;
+using OpenSim.Data.MySQL;
+
+using System.Data.SqlClient;
+using OpenSim.Data.MSSQL;
+
+using Mono.Data.Sqlite;
+using OpenSim.Data.SQLite;
+
+namespace OpenSim.Data.Tests
+{
+ [TestFixture(typeof(MySqlConnection), typeof(MySqlRegionData), Description = "Region store tests (MySQL)")]
+ [TestFixture(typeof(SqlConnection), typeof(MSSQLRegionData), Description = "Region store tests (MS SQL Server)")]
+ [TestFixture(typeof(SqliteConnection), typeof(SQLiteRegionData), Description = "Region store tests (SQLite)")]
+
+ public class RegionTests : BasicDataServiceTest
+ where TConn : DbConnection, new()
+ where TRegStore : class, IRegionDataStore, new()
+ {
+ public IRegionDataStore db;
+ public UUID zero = UUID.Zero;
+ public UUID region1 = UUID.Random();
+ public UUID region2 = UUID.Random();
+ public UUID region3 = UUID.Random();
+ public UUID region4 = UUID.Random();
+ public UUID prim1 = UUID.Random();
+ public UUID prim2 = UUID.Random();
+ public UUID prim3 = UUID.Random();
+ public UUID prim4 = UUID.Random();
+ public UUID prim5 = UUID.Random();
+ public UUID prim6 = UUID.Random();
+ public UUID item1 = UUID.Random();
+ public UUID item2 = UUID.Random();
+ public UUID item3 = UUID.Random();
+
+ public static Random random = new Random();
+
+ public string itemname1 = "item1";
+
+ public uint localID = 1;
+
+ public double height1 = 20;
+ public double height2 = 100;
+
+
+ protected override void InitService(object service)
+ {
+ db = (IRegionDataStore)service;
+ db.Initialise(m_connStr);
+ ClearDB();
+ }
+
+
+ private void ClearDB()
+ {
+ // if a new table is added, it has to be dropped here
+ ExecuteSql("delete from migrations where name='RegionStore';");
+
+ DropTables(
+ "prims",
+ "primshapes",
+ "primitems",
+ "terrain",
+ "land",
+ "landaccesslist",
+ "regionban",
+ "regionsettings"
+ );
+ }
+
+
+ // Test Plan
+ // Prims
+ // - empty test - 001
+ // - store / retrieve basic prims (most minimal we can make) - 010, 011
+ // - store / retrieve parts in a scenegroup 012
+ // - store a prim with complete information for consistency check 013
+ // - update existing prims, make sure it sticks - 014
+ // - tests empty inventory - 020
+ // - add inventory items to prims make - 021
+ // - retrieves the added item - 022
+ // - update inventory items to prims - 023
+ // - remove inventory items make sure it sticks - 024
+ // - checks if all parameters are persistent - 025
+ // - adds many items and see if it is handled correctly - 026
+
+ [Test]
+ public void T001_LoadEmpty()
+ {
+ List objs = db.LoadObjects(region1);
+ List objs3 = db.LoadObjects(region3);
+ List land = db.LoadLandObjects(region1);
+
+ Assert.That(objs.Count, Is.EqualTo(0), "Assert.That(objs.Count, Is.EqualTo(0))");
+ Assert.That(objs3.Count, Is.EqualTo(0), "Assert.That(objs3.Count, Is.EqualTo(0))");
+ Assert.That(land.Count, Is.EqualTo(0), "Assert.That(land.Count, Is.EqualTo(0))");
+ }
+
+ // SOG round trips
+ // * store objects, make sure they save
+ // * update
+
+ [Test]
+ public void T010_StoreSimpleObject()
+ {
+ SceneObjectGroup sog = NewSOG("object1", prim1, region1);
+ SceneObjectGroup sog2 = NewSOG("object2", prim2, region1);
+
+ // in case the objects don't store
+ try
+ {
+ db.StoreObject(sog, region1);
+ }
+ catch (Exception e)
+ {
+ m_log.Error(e.ToString());
+ Assert.Fail();
+ }
+
+ try
+ {
+ db.StoreObject(sog2, region1);
+ }
+ catch (Exception e)
+ {
+ m_log.Error(e.ToString());
+ Assert.Fail();
+ }
+
+ // This tests the ADO.NET driver
+ List objs = db.LoadObjects(region1);
+
+ Assert.That(objs.Count, Is.EqualTo(2), "Assert.That(objs.Count, Is.EqualTo(2))");
+ }
+
+ [Test]
+ public void T011_ObjectNames()
+ {
+ List objs = db.LoadObjects(region1);
+ foreach (SceneObjectGroup sog in objs)
+ {
+ SceneObjectPart p = sog.RootPart;
+ Assert.That("", Is.Not.EqualTo(p.Name), "Assert.That(\"\", Is.Not.EqualTo(p.Name))");
+ Assert.That(p.Name, Is.EqualTo(p.Description), "Assert.That(p.Name, Is.EqualTo(p.Description))");
+ }
+ }
+
+ [Test]
+ public void T012_SceneParts()
+ {
+ UUID tmp0 = UUID.Random();
+ UUID tmp1 = UUID.Random();
+ UUID tmp2 = UUID.Random();
+ UUID tmp3 = UUID.Random();
+ UUID newregion = UUID.Random();
+ SceneObjectPart p1 = NewSOP("SoP 1",tmp1);
+ SceneObjectPart p2 = NewSOP("SoP 2",tmp2);
+ SceneObjectPart p3 = NewSOP("SoP 3",tmp3);
+ SceneObjectGroup sog = NewSOG("Sop 0", tmp0, newregion);
+ sog.AddPart(p1);
+ sog.AddPart(p2);
+ sog.AddPart(p3);
+
+ SceneObjectPart[] parts = sog.GetParts();
+ Assert.That(parts.Length,Is.EqualTo(4), "Assert.That(parts.Length,Is.EqualTo(4))");
+
+ db.StoreObject(sog, newregion);
+ List sogs = db.LoadObjects(newregion);
+ Assert.That(sogs.Count,Is.EqualTo(1), "Assert.That(sogs.Count,Is.EqualTo(1))");
+ SceneObjectGroup newsog = sogs[0];
+
+ SceneObjectPart[] newparts = newsog.GetParts();
+ Assert.That(newparts.Length,Is.EqualTo(4), "Assert.That(newparts.Length,Is.EqualTo(4))");
+
+ Assert.That(newsog.HasChildPrim(tmp0), "Assert.That(newsog.HasChildPrim(tmp0))");
+ Assert.That(newsog.HasChildPrim(tmp1), "Assert.That(newsog.HasChildPrim(tmp1))");
+ Assert.That(newsog.HasChildPrim(tmp2), "Assert.That(newsog.HasChildPrim(tmp2))");
+ Assert.That(newsog.HasChildPrim(tmp3), "Assert.That(newsog.HasChildPrim(tmp3))");
+ }
+
+ [Test]
+ public void T013_DatabasePersistency()
+ {
+ // Sets all ScenePart parameters, stores and retrieves them, then check for consistency with initial data
+ // The commented Asserts are the ones that are unchangeable (when storing on the database, their "Set" values are ignored
+ // The ObjectFlags is an exception, if it is entered incorrectly, the object IS REJECTED on the database silently.
+ UUID creator,uuid = new UUID();
+ creator = UUID.Random();
+ uint iserial = (uint)random.Next();
+ TaskInventoryDictionary dic = new TaskInventoryDictionary();
+ uint objf = (uint) random.Next();
+ uuid = prim4;
+ uint localid = localID+1;
+ localID = localID + 1;
+ string name = "Adam West";
+ byte material = (byte) random.Next(127);
+ ulong regionh = (ulong)random.NextDouble() * (ulong)random.Next();
+ int pin = random.Next();
+ Byte[] partsys = new byte[8];
+ Byte[] textani = new byte[8];
+ random.NextBytes(textani);
+ random.NextBytes(partsys);
+ DateTime expires = new DateTime(2008, 12, 20);
+ DateTime rezzed = new DateTime(2009, 07, 15);
+ Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next());
+ Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next());
+ Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next());
+ Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next());
+ Vector3 angvelo = new Vector3(random.Next(),random.Next(),random.Next());
+ Vector3 accel = new Vector3(random.Next(),random.Next(),random.Next());
+ string description = name;
+ Color color = Color.FromArgb(255, 165, 50, 100);
+ string text = "All Your Base Are Belong to Us";
+ string sitname = "SitName";
+ string touchname = "TouchName";
+ int linknum = random.Next();
+ byte clickaction = (byte) random.Next(127);
+ PrimitiveBaseShape pbshap = new PrimitiveBaseShape();
+ pbshap = PrimitiveBaseShape.Default;
+ pbshap.PathBegin = ushort.MaxValue;
+ pbshap.PathEnd = ushort.MaxValue;
+ pbshap.ProfileBegin = ushort.MaxValue;
+ pbshap.ProfileEnd = ushort.MaxValue;
+ pbshap.ProfileHollow = ushort.MaxValue;
+ Vector3 scale = new Vector3(random.Next(),random.Next(),random.Next());
+ byte updatef = (byte) random.Next(127);
+
+ RegionInfo regionInfo = new RegionInfo();
+ regionInfo.RegionID = region3;
+ regionInfo.RegionLocX = 0;
+ regionInfo.RegionLocY = 0;
+
+// Scene scene = new Scene(regionInfo);
+
+ SceneObjectPart sop = new SceneObjectPart();
+ sop.RegionHandle = regionh;
+ sop.UUID = uuid;
+ sop.LocalId = localid;
+ sop.Shape = pbshap;
+ sop.GroupPosition = groupos;
+ sop.RotationOffset = rotoff;
+ sop.CreatorID = creator;
+ sop.InventorySerial = iserial;
+ sop.TaskInventory = dic;
+ sop.ObjectFlags = objf;
+ sop.Name = name;
+ sop.Material = material;
+ sop.ScriptAccessPin = pin;
+ sop.TextureAnimation = textani;
+ sop.ParticleSystem = partsys;
+ sop.Expires = expires;
+ sop.Rezzed = rezzed;
+ sop.OffsetPosition = offset;
+ sop.Velocity = velocity;
+ sop.AngularVelocity = angvelo;
+ sop.Acceleration = accel;
+ sop.Description = description;
+ sop.Color = color;
+ sop.Text = text;
+ sop.SitName = sitname;
+ sop.TouchName = touchname;
+ sop.LinkNum = linknum;
+ sop.ClickAction = clickaction;
+ sop.Scale = scale;
+ sop.UpdateFlag = updatef;
+
+ //Tests if local part accepted the parameters:
+ Assert.That(regionh,Is.EqualTo(sop.RegionHandle), "Assert.That(regionh,Is.EqualTo(sop.RegionHandle))");
+ Assert.That(localid,Is.EqualTo(sop.LocalId), "Assert.That(localid,Is.EqualTo(sop.LocalId))");
+ Assert.That(groupos,Is.EqualTo(sop.GroupPosition), "Assert.That(groupos,Is.EqualTo(sop.GroupPosition))");
+ Assert.That(name,Is.EqualTo(sop.Name), "Assert.That(name,Is.EqualTo(sop.Name))");
+ Assert.That(rotoff,Is.EqualTo(sop.RotationOffset), "Assert.That(rotoff,Is.EqualTo(sop.RotationOffset))");
+ Assert.That(uuid,Is.EqualTo(sop.UUID), "Assert.That(uuid,Is.EqualTo(sop.UUID))");
+ Assert.That(creator,Is.EqualTo(sop.CreatorID), "Assert.That(creator,Is.EqualTo(sop.CreatorID))");
+ // Modified in-class
+ // Assert.That(iserial,Is.EqualTo(sop.InventorySerial), "Assert.That(iserial,Is.EqualTo(sop.InventorySerial))");
+ Assert.That(dic,Is.EqualTo(sop.TaskInventory), "Assert.That(dic,Is.EqualTo(sop.TaskInventory))");
+ Assert.That(objf,Is.EqualTo(sop.ObjectFlags), "Assert.That(objf,Is.EqualTo(sop.ObjectFlags))");
+ Assert.That(name,Is.EqualTo(sop.Name), "Assert.That(name,Is.EqualTo(sop.Name))");
+ Assert.That(material,Is.EqualTo(sop.Material), "Assert.That(material,Is.EqualTo(sop.Material))");
+ Assert.That(pin,Is.EqualTo(sop.ScriptAccessPin), "Assert.That(pin,Is.EqualTo(sop.ScriptAccessPin))");
+ Assert.That(textani,Is.EqualTo(sop.TextureAnimation), "Assert.That(textani,Is.EqualTo(sop.TextureAnimation))");
+ Assert.That(partsys,Is.EqualTo(sop.ParticleSystem), "Assert.That(partsys,Is.EqualTo(sop.ParticleSystem))");
+ Assert.That(expires,Is.EqualTo(sop.Expires), "Assert.That(expires,Is.EqualTo(sop.Expires))");
+ Assert.That(rezzed,Is.EqualTo(sop.Rezzed), "Assert.That(rezzed,Is.EqualTo(sop.Rezzed))");
+ Assert.That(offset,Is.EqualTo(sop.OffsetPosition), "Assert.That(offset,Is.EqualTo(sop.OffsetPosition))");
+ Assert.That(velocity,Is.EqualTo(sop.Velocity), "Assert.That(velocity,Is.EqualTo(sop.Velocity))");
+ Assert.That(angvelo,Is.EqualTo(sop.AngularVelocity), "Assert.That(angvelo,Is.EqualTo(sop.AngularVelocity))");
+ Assert.That(accel,Is.EqualTo(sop.Acceleration), "Assert.That(accel,Is.EqualTo(sop.Acceleration))");
+ Assert.That(description,Is.EqualTo(sop.Description), "Assert.That(description,Is.EqualTo(sop.Description))");
+ Assert.That(color,Is.EqualTo(sop.Color), "Assert.That(color,Is.EqualTo(sop.Color))");
+ Assert.That(text,Is.EqualTo(sop.Text), "Assert.That(text,Is.EqualTo(sop.Text))");
+ Assert.That(sitname,Is.EqualTo(sop.SitName), "Assert.That(sitname,Is.EqualTo(sop.SitName))");
+ Assert.That(touchname,Is.EqualTo(sop.TouchName), "Assert.That(touchname,Is.EqualTo(sop.TouchName))");
+ Assert.That(linknum,Is.EqualTo(sop.LinkNum), "Assert.That(linknum,Is.EqualTo(sop.LinkNum))");
+ Assert.That(clickaction,Is.EqualTo(sop.ClickAction), "Assert.That(clickaction,Is.EqualTo(sop.ClickAction))");
+ Assert.That(scale,Is.EqualTo(sop.Scale), "Assert.That(scale,Is.EqualTo(sop.Scale))");
+ Assert.That(updatef,Is.EqualTo(sop.UpdateFlag), "Assert.That(updatef,Is.EqualTo(sop.UpdateFlag))");
+
+ // This is necessary or object will not be inserted in DB
+ sop.ObjectFlags = 0;
+
+ SceneObjectGroup sog = new SceneObjectGroup(sop);
+
+ // Inserts group in DB
+ db.StoreObject(sog,region3);
+ List sogs = db.LoadObjects(region3);
+ Assert.That(sogs.Count, Is.EqualTo(1), "Assert.That(sogs.Count, Is.EqualTo(1))");
+ // Makes sure there are no double insertions:
+ db.StoreObject(sog,region3);
+ sogs = db.LoadObjects(region3);
+ Assert.That(sogs.Count, Is.EqualTo(1), "Assert.That(sogs.Count, Is.EqualTo(1))");
+
+
+ // Tests if the parameters were inserted correctly
+ SceneObjectPart p = sogs[0].RootPart;
+ Assert.That(regionh,Is.EqualTo(p.RegionHandle), "Assert.That(regionh,Is.EqualTo(p.RegionHandle))");
+ //Assert.That(localid,Is.EqualTo(p.LocalId), "Assert.That(localid,Is.EqualTo(p.LocalId))");
+ Assert.That(groupos,Is.EqualTo(p.GroupPosition), "Assert.That(groupos,Is.EqualTo(p.GroupPosition))");
+ Assert.That(name,Is.EqualTo(p.Name), "Assert.That(name,Is.EqualTo(p.Name))");
+ Assert.That(rotoff,Is.EqualTo(p.RotationOffset), "Assert.That(rotoff,Is.EqualTo(p.RotationOffset))");
+ Assert.That(uuid,Is.EqualTo(p.UUID), "Assert.That(uuid,Is.EqualTo(p.UUID))");
+ Assert.That(creator,Is.EqualTo(p.CreatorID), "Assert.That(creator,Is.EqualTo(p.CreatorID))");
+ //Assert.That(iserial,Is.EqualTo(p.InventorySerial), "Assert.That(iserial,Is.EqualTo(p.InventorySerial))");
+ Assert.That(dic,Is.EqualTo(p.TaskInventory), "Assert.That(dic,Is.EqualTo(p.TaskInventory))");
+ //Assert.That(objf,Is.EqualTo(p.ObjectFlags), "Assert.That(objf,Is.EqualTo(p.ObjectFlags))");
+ Assert.That(name,Is.EqualTo(p.Name), "Assert.That(name,Is.EqualTo(p.Name))");
+ Assert.That(material,Is.EqualTo(p.Material), "Assert.That(material,Is.EqualTo(p.Material))");
+ Assert.That(pin,Is.EqualTo(p.ScriptAccessPin), "Assert.That(pin,Is.EqualTo(p.ScriptAccessPin))");
+ Assert.That(textani,Is.EqualTo(p.TextureAnimation), "Assert.That(textani,Is.EqualTo(p.TextureAnimation))");
+ Assert.That(partsys,Is.EqualTo(p.ParticleSystem), "Assert.That(partsys,Is.EqualTo(p.ParticleSystem))");
+ //Assert.That(expires,Is.EqualTo(p.Expires), "Assert.That(expires,Is.EqualTo(p.Expires))");
+ //Assert.That(rezzed,Is.EqualTo(p.Rezzed), "Assert.That(rezzed,Is.EqualTo(p.Rezzed))");
+ Assert.That(offset,Is.EqualTo(p.OffsetPosition), "Assert.That(offset,Is.EqualTo(p.OffsetPosition))");
+ Assert.That(velocity,Is.EqualTo(p.Velocity), "Assert.That(velocity,Is.EqualTo(p.Velocity))");
+ Assert.That(angvelo,Is.EqualTo(p.AngularVelocity), "Assert.That(angvelo,Is.EqualTo(p.AngularVelocity))");
+ Assert.That(accel,Is.EqualTo(p.Acceleration), "Assert.That(accel,Is.EqualTo(p.Acceleration))");
+ Assert.That(description,Is.EqualTo(p.Description), "Assert.That(description,Is.EqualTo(p.Description))");
+ Assert.That(color,Is.EqualTo(p.Color), "Assert.That(color,Is.EqualTo(p.Color))");
+ Assert.That(text,Is.EqualTo(p.Text), "Assert.That(text,Is.EqualTo(p.Text))");
+ Assert.That(sitname,Is.EqualTo(p.SitName), "Assert.That(sitname,Is.EqualTo(p.SitName))");
+ Assert.That(touchname,Is.EqualTo(p.TouchName), "Assert.That(touchname,Is.EqualTo(p.TouchName))");
+ //Assert.That(linknum,Is.EqualTo(p.LinkNum), "Assert.That(linknum,Is.EqualTo(p.LinkNum))");
+ Assert.That(clickaction,Is.EqualTo(p.ClickAction), "Assert.That(clickaction,Is.EqualTo(p.ClickAction))");
+ Assert.That(scale,Is.EqualTo(p.Scale), "Assert.That(scale,Is.EqualTo(p.Scale))");
+
+ //Assert.That(updatef,Is.EqualTo(p.UpdateFlag), "Assert.That(updatef,Is.EqualTo(p.UpdateFlag))");
+
+ Assert.That(pbshap.PathBegin, Is.EqualTo(p.Shape.PathBegin), "Assert.That(pbshap.PathBegin, Is.EqualTo(p.Shape.PathBegin))");
+ Assert.That(pbshap.PathEnd, Is.EqualTo(p.Shape.PathEnd), "Assert.That(pbshap.PathEnd, Is.EqualTo(p.Shape.PathEnd))");
+ Assert.That(pbshap.ProfileBegin, Is.EqualTo(p.Shape.ProfileBegin), "Assert.That(pbshap.ProfileBegin, Is.EqualTo(p.Shape.ProfileBegin))");
+ Assert.That(pbshap.ProfileEnd, Is.EqualTo(p.Shape.ProfileEnd), "Assert.That(pbshap.ProfileEnd, Is.EqualTo(p.Shape.ProfileEnd))");
+ Assert.That(pbshap.ProfileHollow, Is.EqualTo(p.Shape.ProfileHollow), "Assert.That(pbshap.ProfileHollow, Is.EqualTo(p.Shape.ProfileHollow))");
+ }
+
+ [Test]
+ public void T014_UpdateObject()
+ {
+ string text1 = "object1 text";
+ SceneObjectGroup sog = FindSOG("object1", region1);
+ sog.RootPart.Text = text1;
+ db.StoreObject(sog, region1);
+
+ sog = FindSOG("object1", region1);
+ Assert.That(text1, Is.EqualTo(sog.RootPart.Text), "Assert.That(text1, Is.EqualTo(sog.RootPart.Text))");
+
+ // Creates random values
+ UUID creator = new UUID();
+ creator = UUID.Random();
+ TaskInventoryDictionary dic = new TaskInventoryDictionary();
+ localID = localID + 1;
+ string name = "West Adam";
+ byte material = (byte) random.Next(127);
+ ulong regionh = (ulong)random.NextDouble() * (ulong)random.Next();
+ int pin = random.Next();
+ Byte[] partsys = new byte[8];
+ Byte[] textani = new byte[8];
+ random.NextBytes(textani);
+ random.NextBytes(partsys);
+ DateTime expires = new DateTime(2010, 12, 20);
+ DateTime rezzed = new DateTime(2005, 07, 15);
+ Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next());
+ Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next());
+ Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next());
+ Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next());
+ Vector3 angvelo = new Vector3(random.Next(),random.Next(),random.Next());
+ Vector3 accel = new Vector3(random.Next(),random.Next(),random.Next());
+ string description = name;
+ Color color = Color.FromArgb(255, 255, 255, 0);
+ string text = "What You Say?{]\vz~";
+ string sitname = RandomName();
+ string touchname = RandomName();
+ int linknum = random.Next();
+ byte clickaction = (byte) random.Next(127);
+ PrimitiveBaseShape pbshap = new PrimitiveBaseShape();
+ pbshap = PrimitiveBaseShape.Default;
+ Vector3 scale = new Vector3(random.Next(),random.Next(),random.Next());
+ byte updatef = (byte) random.Next(127);
+
+ // Updates the region with new values
+ SceneObjectGroup sog2 = FindSOG("Adam West", region3);
+ Assert.That(sog2,Is.Not.Null);
+ sog2.RootPart.RegionHandle = regionh;
+ sog2.RootPart.Shape = pbshap;
+ sog2.RootPart.GroupPosition = groupos;
+ sog2.RootPart.RotationOffset = rotoff;
+ sog2.RootPart.CreatorID = creator;
+ sog2.RootPart.TaskInventory = dic;
+ sog2.RootPart.Name = name;
+ sog2.RootPart.Material = material;
+ sog2.RootPart.ScriptAccessPin = pin;
+ sog2.RootPart.TextureAnimation = textani;
+ sog2.RootPart.ParticleSystem = partsys;
+ sog2.RootPart.Expires = expires;
+ sog2.RootPart.Rezzed = rezzed;
+ sog2.RootPart.OffsetPosition = offset;
+ sog2.RootPart.Velocity = velocity;
+ sog2.RootPart.AngularVelocity = angvelo;
+ sog2.RootPart.Acceleration = accel;
+ sog2.RootPart.Description = description;
+ sog2.RootPart.Color = color;
+ sog2.RootPart.Text = text;
+ sog2.RootPart.SitName = sitname;
+ sog2.RootPart.TouchName = touchname;
+ sog2.RootPart.LinkNum = linknum;
+ sog2.RootPart.ClickAction = clickaction;
+ sog2.RootPart.Scale = scale;
+ sog2.RootPart.UpdateFlag = updatef;
+
+ db.StoreObject(sog2, region3);
+ List sogs = db.LoadObjects(region3);
+ Assert.That(sogs.Count, Is.EqualTo(1), "Assert.That(sogs.Count, Is.EqualTo(1))");
+
+ SceneObjectGroup retsog = FindSOG("West Adam", region3);
+ Assert.That(retsog,Is.Not.Null);
+ SceneObjectPart p = retsog.RootPart;
+ Assert.That(regionh,Is.EqualTo(p.RegionHandle), "Assert.That(regionh,Is.EqualTo(p.RegionHandle))");
+ Assert.That(groupos,Is.EqualTo(p.GroupPosition), "Assert.That(groupos,Is.EqualTo(p.GroupPosition))");
+ Assert.That(name,Is.EqualTo(p.Name), "Assert.That(name,Is.EqualTo(p.Name))");
+ Assert.That(rotoff,Is.EqualTo(p.RotationOffset), "Assert.That(rotoff,Is.EqualTo(p.RotationOffset))");
+ Assert.That(creator,Is.EqualTo(p.CreatorID), "Assert.That(creator,Is.EqualTo(p.CreatorID))");
+ Assert.That(dic,Is.EqualTo(p.TaskInventory), "Assert.That(dic,Is.EqualTo(p.TaskInventory))");
+ Assert.That(name,Is.EqualTo(p.Name), "Assert.That(name,Is.EqualTo(p.Name))");
+ Assert.That(material,Is.EqualTo(p.Material), "Assert.That(material,Is.EqualTo(p.Material))");
+ Assert.That(pin,Is.EqualTo(p.ScriptAccessPin), "Assert.That(pin,Is.EqualTo(p.ScriptAccessPin))");
+ Assert.That(textani,Is.EqualTo(p.TextureAnimation), "Assert.That(textani,Is.EqualTo(p.TextureAnimation))");
+ Assert.That(partsys,Is.EqualTo(p.ParticleSystem), "Assert.That(partsys,Is.EqualTo(p.ParticleSystem))");
+ Assert.That(offset,Is.EqualTo(p.OffsetPosition), "Assert.That(offset,Is.EqualTo(p.OffsetPosition))");
+ Assert.That(velocity,Is.EqualTo(p.Velocity), "Assert.That(velocity,Is.EqualTo(p.Velocity))");
+ Assert.That(angvelo,Is.EqualTo(p.AngularVelocity), "Assert.That(angvelo,Is.EqualTo(p.AngularVelocity))");
+ Assert.That(accel,Is.EqualTo(p.Acceleration), "Assert.That(accel,Is.EqualTo(p.Acceleration))");
+ Assert.That(description,Is.EqualTo(p.Description), "Assert.That(description,Is.EqualTo(p.Description))");
+ Assert.That(color,Is.EqualTo(p.Color), "Assert.That(color,Is.EqualTo(p.Color))");
+ Assert.That(text,Is.EqualTo(p.Text), "Assert.That(text,Is.EqualTo(p.Text))");
+ Assert.That(sitname,Is.EqualTo(p.SitName), "Assert.That(sitname,Is.EqualTo(p.SitName))");
+ Assert.That(touchname,Is.EqualTo(p.TouchName), "Assert.That(touchname,Is.EqualTo(p.TouchName))");
+ Assert.That(clickaction,Is.EqualTo(p.ClickAction), "Assert.That(clickaction,Is.EqualTo(p.ClickAction))");
+ Assert.That(scale,Is.EqualTo(p.Scale), "Assert.That(scale,Is.EqualTo(p.Scale))");
+ }
+
+ [Test]
+ public void T015_LargeSceneObjects()
+ {
+ UUID id = UUID.Random();
+ Dictionary mydic = new Dictionary();
+ SceneObjectGroup sog = NewSOG("Test SOG", id, region4);
+ mydic.Add(sog.RootPart.UUID,sog.RootPart);
+ for (int i=0;i<30;i++)
+ {
+ UUID tmp = UUID.Random();
+ SceneObjectPart sop = NewSOP(("Test SOP " + i.ToString()),tmp);
+ Vector3 groupos = new Vector3(random.Next(),random.Next(),random.Next());
+ Vector3 offset = new Vector3(random.Next(),random.Next(),random.Next());
+ Quaternion rotoff = new Quaternion(random.Next(),random.Next(),random.Next(),random.Next());
+ Vector3 velocity = new Vector3(random.Next(),random.Next(),random.Next());
+ Vector3 angvelo = new Vector3(random.Next(),random.Next(),random.Next());
+ Vector3 accel = new Vector3(random.Next(),random.Next(),random.Next());
+
+ sop.GroupPosition = groupos;
+ sop.RotationOffset = rotoff;
+ sop.OffsetPosition = offset;
+ sop.Velocity = velocity;
+ sop.AngularVelocity = angvelo;
+ sop.Acceleration = accel;
+
+ mydic.Add(tmp,sop);
+ sog.AddPart(sop);
+ db.StoreObject(sog, region4);
+ }
+
+ SceneObjectGroup retsog = FindSOG("Test SOG", region4);
+ SceneObjectPart[] parts = retsog.GetParts();
+ for (int i=0;i<30;i++)
+ {
+ SceneObjectPart cursop = mydic[parts[i].UUID];
+ Assert.That(cursop.GroupPosition,Is.EqualTo(parts[i].GroupPosition), "Assert.That(cursop.GroupPosition,Is.EqualTo(parts[i].GroupPosition))");
+ Assert.That(cursop.RotationOffset,Is.EqualTo(parts[i].RotationOffset), "Assert.That(cursop.RotationOffset,Is.EqualTo(parts[i].RotationOffset))");
+ Assert.That(cursop.OffsetPosition,Is.EqualTo(parts[i].OffsetPosition), "Assert.That(cursop.OffsetPosition,Is.EqualTo(parts[i].OffsetPosition))");
+ Assert.That(cursop.Velocity,Is.EqualTo(parts[i].Velocity), "Assert.That(cursop.Velocity,Is.EqualTo(parts[i].Velocity))");
+ Assert.That(cursop.AngularVelocity,Is.EqualTo(parts[i].AngularVelocity), "Assert.That(cursop.AngularVelocity,Is.EqualTo(parts[i].AngularVelocity))");
+ Assert.That(cursop.Acceleration,Is.EqualTo(parts[i].Acceleration), "Assert.That(cursop.Acceleration,Is.EqualTo(parts[i].Acceleration))");
+ }
+ }
+
+ //[Test]
+ public void T016_RandomSogWithSceneParts()
+ {
+ PropertyScrambler scrambler =
+ new PropertyScrambler()
+ .DontScramble(x => x.UUID);
+ UUID tmpSog = UUID.Random();
+ UUID tmp1 = UUID.Random();
+ UUID tmp2 = UUID.Random();
+ UUID tmp3 = UUID.Random();
+ UUID newregion = UUID.Random();
+ SceneObjectPart p1 = new SceneObjectPart();
+ SceneObjectPart p2 = new SceneObjectPart();
+ SceneObjectPart p3 = new SceneObjectPart();
+ p1.Shape = PrimitiveBaseShape.Default;
+ p2.Shape = PrimitiveBaseShape.Default;
+ p3.Shape = PrimitiveBaseShape.Default;
+ p1.UUID = tmp1;
+ p2.UUID = tmp2;
+ p3.UUID = tmp3;
+ scrambler.Scramble(p1);
+ scrambler.Scramble(p2);
+ scrambler.Scramble(p3);
+
+ SceneObjectGroup sog = NewSOG("Sop 0", tmpSog, newregion);
+ PropertyScrambler sogScrambler =
+ new PropertyScrambler()
+ .DontScramble(x => x.UUID);
+ sogScrambler.Scramble(sog);
+ sog.UUID = tmpSog;
+ sog.AddPart(p1);
+ sog.AddPart(p2);
+ sog.AddPart(p3);
+
+ SceneObjectPart[] parts = sog.GetParts();
+ Assert.That(parts.Length, Is.EqualTo(4), "Assert.That(parts.Length,Is.EqualTo(4))");
+
+ db.StoreObject(sog, newregion);
+ List sogs = db.LoadObjects(newregion);
+ Assert.That(sogs.Count, Is.EqualTo(1), "Assert.That(sogs.Count,Is.EqualTo(1))");
+ SceneObjectGroup newsog = sogs[0];
+
+ SceneObjectPart[] newparts = newsog.GetParts();
+ Assert.That(newparts.Length, Is.EqualTo(4), "Assert.That(newparts.Length,Is.EqualTo(4))");
+
+ Assert.That(newsog, Constraints.PropertyCompareConstraint(sog)
+ .IgnoreProperty(x=>x.LocalId)
+ .IgnoreProperty(x=>x.HasGroupChanged)
+ .IgnoreProperty(x=>x.IsSelected)
+ .IgnoreProperty(x=>x.RegionHandle)
+ .IgnoreProperty(x=>x.RegionUUID)
+ .IgnoreProperty(x=>x.Scene)
+ .IgnoreProperty(x=>x.Children)
+ .IgnoreProperty(x=>x.PassCollision)
+ .IgnoreProperty(x=>x.RootPart));
+ }
+
+ [Test]
+ public void T020_PrimInventoryEmpty()
+ {
+ SceneObjectGroup sog = FindSOG("object1", region1);
+ TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, item1);
+ Assert.That(t, Is.Null);
+ }
+
+ [Test]
+ public void T021_PrimInventoryStore()
+ {
+ SceneObjectGroup sog = FindSOG("object1", region1);
+ InventoryItemBase i = NewItem(item1, zero, zero, itemname1, zero);
+
+ Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, i, zero), Is.True);
+ TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, item1);
+ Assert.That(t.Name, Is.EqualTo(itemname1), "Assert.That(t.Name, Is.EqualTo(itemname1))");
+
+ // TODO: seriously??? this is the way we need to loop to get this?
+
+ List list = new List();
+ foreach (UUID uuid in sog.RootPart.Inventory.GetInventoryList())
+ {
+ list.Add(sog.GetInventoryItem(sog.RootPart.LocalId, uuid));
+ }
+
+ db.StorePrimInventory(prim1, list);
+ }
+
+ [Test]
+ public void T022_PrimInventoryRetrieve()
+ {
+ SceneObjectGroup sog = FindSOG("object1", region1);
+ TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, item1);
+
+ Assert.That(t.Name, Is.EqualTo(itemname1), "Assert.That(t.Name, Is.EqualTo(itemname1))");
+ }
+
+ [Test]
+ public void T023_PrimInventoryUpdate()
+ {
+ SceneObjectGroup sog = FindSOG("object1", region1);
+ TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, item1);
+
+ t.Name = "My New Name";
+ sog.UpdateInventoryItem(t);
+
+ Assert.That(t.Name, Is.EqualTo("My New Name"), "Assert.That(t.Name, Is.EqualTo(\"My New Name\"))");
+
+ }
+
+ [Test]
+ public void T024_PrimInventoryRemove()
+ {
+ List list = new List();
+ db.StorePrimInventory(prim1, list);
+
+ SceneObjectGroup sog = FindSOG("object1", region1);
+ TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, item1);
+ Assert.That(t, Is.Null);
+ }
+
+ [Test]
+ public void T025_PrimInventoryPersistency()
+ {
+ InventoryItemBase i = new InventoryItemBase();
+ UUID id = UUID.Random();
+ i.ID = id;
+ UUID folder = UUID.Random();
+ i.Folder = folder;
+ UUID owner = UUID.Random();
+ i.Owner = owner;
+ UUID creator = UUID.Random();
+ i.CreatorId = creator.ToString();
+ string name = RandomName();
+ i.Name = name;
+ i.Description = name;
+ UUID assetid = UUID.Random();
+ i.AssetID = assetid;
+ int invtype = random.Next();
+ i.InvType = invtype;
+ uint nextperm = (uint) random.Next();
+ i.NextPermissions = nextperm;
+ uint curperm = (uint) random.Next();
+ i.CurrentPermissions = curperm;
+ uint baseperm = (uint) random.Next();
+ i.BasePermissions = baseperm;
+ uint eoperm = (uint) random.Next();
+ i.EveryOnePermissions = eoperm;
+ int assettype = random.Next();
+ i.AssetType = assettype;
+ UUID groupid = UUID.Random();
+ i.GroupID = groupid;
+ bool groupown = true;
+ i.GroupOwned = groupown;
+ int saleprice = random.Next();
+ i.SalePrice = saleprice;
+ byte saletype = (byte) random.Next(127);
+ i.SaleType = saletype;
+ uint flags = (uint) random.Next();
+ i.Flags = flags;
+ int creationd = random.Next();
+ i.CreationDate = creationd;
+
+ SceneObjectGroup sog = FindSOG("object1", region1);
+ Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, i, zero), Is.True);
+ TaskInventoryItem t = sog.GetInventoryItem(sog.RootPart.LocalId, id);
+
+ Assert.That(t.Name, Is.EqualTo(name), "Assert.That(t.Name, Is.EqualTo(name))");
+ Assert.That(t.AssetID,Is.EqualTo(assetid), "Assert.That(t.AssetID,Is.EqualTo(assetid))");
+ Assert.That(t.BasePermissions,Is.EqualTo(baseperm), "Assert.That(t.BasePermissions,Is.EqualTo(baseperm))");
+ Assert.That(t.CreationDate,Is.EqualTo(creationd), "Assert.That(t.CreationDate,Is.EqualTo(creationd))");
+ Assert.That(t.CreatorID,Is.EqualTo(creator), "Assert.That(t.CreatorID,Is.EqualTo(creator))");
+ Assert.That(t.Description,Is.EqualTo(name), "Assert.That(t.Description,Is.EqualTo(name))");
+ Assert.That(t.EveryonePermissions,Is.EqualTo(eoperm), "Assert.That(t.EveryonePermissions,Is.EqualTo(eoperm))");
+ Assert.That(t.Flags,Is.EqualTo(flags), "Assert.That(t.Flags,Is.EqualTo(flags))");
+ Assert.That(t.GroupID,Is.EqualTo(sog.RootPart.GroupID), "Assert.That(t.GroupID,Is.EqualTo(sog.RootPart.GroupID))");
+ // Where is this group permissions??
+ // Assert.That(t.GroupPermissions,Is.EqualTo(), "Assert.That(t.GroupPermissions,Is.EqualTo())");
+ Assert.That(t.Type,Is.EqualTo(assettype), "Assert.That(t.Type,Is.EqualTo(assettype))");
+ Assert.That(t.InvType, Is.EqualTo(invtype), "Assert.That(t.InvType, Is.EqualTo(invtype))");
+ Assert.That(t.ItemID, Is.EqualTo(id), "Assert.That(t.ItemID, Is.EqualTo(id))");
+ Assert.That(t.LastOwnerID, Is.EqualTo(sog.RootPart.LastOwnerID), "Assert.That(t.LastOwnerID, Is.EqualTo(sog.RootPart.LastOwnerID))");
+ Assert.That(t.NextPermissions, Is.EqualTo(nextperm), "Assert.That(t.NextPermissions, Is.EqualTo(nextperm))");
+ // Ownership changes when you drop an object into an object
+ // owned by someone else
+ Assert.That(t.OwnerID,Is.EqualTo(sog.RootPart.OwnerID), "Assert.That(t.OwnerID,Is.EqualTo(sog.RootPart.OwnerID))");
+ Assert.That(t.CurrentPermissions, Is.EqualTo(curperm | 8), "Assert.That(t.CurrentPermissions, Is.EqualTo(curperm | 8))");
+ Assert.That(t.ParentID,Is.EqualTo(sog.RootPart.FolderID), "Assert.That(t.ParentID,Is.EqualTo(sog.RootPart.FolderID))");
+ Assert.That(t.ParentPartID,Is.EqualTo(sog.RootPart.UUID), "Assert.That(t.ParentPartID,Is.EqualTo(sog.RootPart.UUID))");
+ }
+
+ [Test]
+ [ExpectedException(typeof(ArgumentException))]
+ public void T026_PrimInventoryMany()
+ {
+ UUID i1,i2,i3,i4;
+ i1 = UUID.Random();
+ i2 = UUID.Random();
+ i3 = UUID.Random();
+ i4 = i3;
+ InventoryItemBase ib1 = NewItem(i1, zero, zero, RandomName(), zero);
+ InventoryItemBase ib2 = NewItem(i2, zero, zero, RandomName(), zero);
+ InventoryItemBase ib3 = NewItem(i3, zero, zero, RandomName(), zero);
+ InventoryItemBase ib4 = NewItem(i4, zero, zero, RandomName(), zero);
+
+ SceneObjectGroup sog = FindSOG("object1", region1);
+
+ Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, ib1, zero), Is.True);
+ Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, ib2, zero), Is.True);
+ Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, ib3, zero), Is.True);
+ Assert.That(sog.AddInventoryItem(null, sog.RootPart.LocalId, ib4, zero), Is.True);
+
+ TaskInventoryItem t1 = sog.GetInventoryItem(sog.RootPart.LocalId, i1);
+ Assert.That(t1.Name, Is.EqualTo(ib1.Name), "Assert.That(t1.Name, Is.EqualTo(ib1.Name))");
+ TaskInventoryItem t2 = sog.GetInventoryItem(sog.RootPart.LocalId, i2);
+ Assert.That(t2.Name, Is.EqualTo(ib2.Name), "Assert.That(t2.Name, Is.EqualTo(ib2.Name))");
+ TaskInventoryItem t3 = sog.GetInventoryItem(sog.RootPart.LocalId, i3);
+ Assert.That(t3.Name, Is.EqualTo(ib3.Name), "Assert.That(t3.Name, Is.EqualTo(ib3.Name))");
+ TaskInventoryItem t4 = sog.GetInventoryItem(sog.RootPart.LocalId, i4);
+ Assert.That(t4, Is.Null);
+ }
+
+ [Test]
+ public void T052_RemoveObject()
+ {
+ db.RemoveObject(prim1, region1);
+ SceneObjectGroup sog = FindSOG("object1", region1);
+ Assert.That(sog, Is.Null);
+ }
+
+
+ [Test]
+ public void T100_DefaultRegionInfo()
+ {
+ RegionSettings r1 = db.LoadRegionSettings(region1);
+ Assert.That(r1.RegionUUID, Is.EqualTo(region1), "Assert.That(r1.RegionUUID, Is.EqualTo(region1))");
+
+ RegionSettings r2 = db.LoadRegionSettings(region2);
+ Assert.That(r2.RegionUUID, Is.EqualTo(region2), "Assert.That(r2.RegionUUID, Is.EqualTo(region2))");
+ }
+
+ [Test]
+ public void T101_UpdateRegionInfo()
+ {
+ int agentlimit = random.Next();
+ double objectbonus = random.Next();
+ int maturity = random.Next();
+ UUID tertex1 = UUID.Random();
+ UUID tertex2 = UUID.Random();
+ UUID tertex3 = UUID.Random();
+ UUID tertex4 = UUID.Random();
+ double elev1nw = random.Next();
+ double elev2nw = random.Next();
+ double elev1ne = random.Next();
+ double elev2ne = random.Next();
+ double elev1se = random.Next();
+ double elev2se = random.Next();
+ double elev1sw = random.Next();
+ double elev2sw = random.Next();
+ double waterh = random.Next();
+ double terrainraise = random.Next();
+ double terrainlower = random.Next();
+ Vector3 sunvector = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
+ UUID terimgid = UUID.Random();
+ double sunpos = random.Next();
+ UUID cov = UUID.Random();
+
+ RegionSettings r1 = db.LoadRegionSettings(region1);
+ r1.BlockTerraform = true;
+ r1.BlockFly = true;
+ r1.AllowDamage = true;
+ r1.RestrictPushing = true;
+ r1.AllowLandResell = false;
+ r1.AllowLandJoinDivide = false;
+ r1.BlockShowInSearch = true;
+ r1.AgentLimit = agentlimit;
+ r1.ObjectBonus = objectbonus;
+ r1.Maturity = maturity;
+ r1.DisableScripts = true;
+ r1.DisableCollisions = true;
+ r1.DisablePhysics = true;
+ r1.TerrainTexture1 = tertex1;
+ r1.TerrainTexture2 = tertex2;
+ r1.TerrainTexture3 = tertex3;
+ r1.TerrainTexture4 = tertex4;
+ r1.Elevation1NW = elev1nw;
+ r1.Elevation2NW = elev2nw;
+ r1.Elevation1NE = elev1ne;
+ r1.Elevation2NE = elev2ne;
+ r1.Elevation1SE = elev1se;
+ r1.Elevation2SE = elev2se;
+ r1.Elevation1SW = elev1sw;
+ r1.Elevation2SW = elev2sw;
+ r1.WaterHeight = waterh;
+ r1.TerrainRaiseLimit = terrainraise;
+ r1.TerrainLowerLimit = terrainlower;
+ r1.UseEstateSun = false;
+ r1.Sandbox = true;
+ r1.SunVector = sunvector;
+ r1.TerrainImageID = terimgid;
+ r1.FixedSun = true;
+ r1.SunPosition = sunpos;
+ r1.Covenant = cov;
+
+ db.StoreRegionSettings(r1);
+
+ RegionSettings r1a = db.LoadRegionSettings(region1);
+ Assert.That(r1a.RegionUUID, Is.EqualTo(region1), "Assert.That(r1a.RegionUUID, Is.EqualTo(region1))");
+ Assert.That(r1a.BlockTerraform,Is.True);
+ Assert.That(r1a.BlockFly,Is.True);
+ Assert.That(r1a.AllowDamage,Is.True);
+ Assert.That(r1a.RestrictPushing,Is.True);
+ Assert.That(r1a.AllowLandResell,Is.False);
+ Assert.That(r1a.AllowLandJoinDivide,Is.False);
+ Assert.That(r1a.BlockShowInSearch,Is.True);
+ Assert.That(r1a.AgentLimit,Is.EqualTo(agentlimit), "Assert.That(r1a.AgentLimit,Is.EqualTo(agentlimit))");
+ Assert.That(r1a.ObjectBonus,Is.EqualTo(objectbonus), "Assert.That(r1a.ObjectBonus,Is.EqualTo(objectbonus))");
+ Assert.That(r1a.Maturity,Is.EqualTo(maturity), "Assert.That(r1a.Maturity,Is.EqualTo(maturity))");
+ Assert.That(r1a.DisableScripts,Is.True);
+ Assert.That(r1a.DisableCollisions,Is.True);
+ Assert.That(r1a.DisablePhysics,Is.True);
+ Assert.That(r1a.TerrainTexture1,Is.EqualTo(tertex1), "Assert.That(r1a.TerrainTexture1,Is.EqualTo(tertex1))");
+ Assert.That(r1a.TerrainTexture2,Is.EqualTo(tertex2), "Assert.That(r1a.TerrainTexture2,Is.EqualTo(tertex2))");
+ Assert.That(r1a.TerrainTexture3,Is.EqualTo(tertex3), "Assert.That(r1a.TerrainTexture3,Is.EqualTo(tertex3))");
+ Assert.That(r1a.TerrainTexture4,Is.EqualTo(tertex4), "Assert.That(r1a.TerrainTexture4,Is.EqualTo(tertex4))");
+ Assert.That(r1a.Elevation1NW,Is.EqualTo(elev1nw), "Assert.That(r1a.Elevation1NW,Is.EqualTo(elev1nw))");
+ Assert.That(r1a.Elevation2NW,Is.EqualTo(elev2nw), "Assert.That(r1a.Elevation2NW,Is.EqualTo(elev2nw))");
+ Assert.That(r1a.Elevation1NE,Is.EqualTo(elev1ne), "Assert.That(r1a.Elevation1NE,Is.EqualTo(elev1ne))");
+ Assert.That(r1a.Elevation2NE,Is.EqualTo(elev2ne), "Assert.That(r1a.Elevation2NE,Is.EqualTo(elev2ne))");
+ Assert.That(r1a.Elevation1SE,Is.EqualTo(elev1se), "Assert.That(r1a.Elevation1SE,Is.EqualTo(elev1se))");
+ Assert.That(r1a.Elevation2SE,Is.EqualTo(elev2se), "Assert.That(r1a.Elevation2SE,Is.EqualTo(elev2se))");
+ Assert.That(r1a.Elevation1SW,Is.EqualTo(elev1sw), "Assert.That(r1a.Elevation1SW,Is.EqualTo(elev1sw))");
+ Assert.That(r1a.Elevation2SW,Is.EqualTo(elev2sw), "Assert.That(r1a.Elevation2SW,Is.EqualTo(elev2sw))");
+ Assert.That(r1a.WaterHeight,Is.EqualTo(waterh), "Assert.That(r1a.WaterHeight,Is.EqualTo(waterh))");
+ Assert.That(r1a.TerrainRaiseLimit,Is.EqualTo(terrainraise), "Assert.That(r1a.TerrainRaiseLimit,Is.EqualTo(terrainraise))");
+ Assert.That(r1a.TerrainLowerLimit,Is.EqualTo(terrainlower), "Assert.That(r1a.TerrainLowerLimit,Is.EqualTo(terrainlower))");
+ Assert.That(r1a.UseEstateSun,Is.False);
+ Assert.That(r1a.Sandbox,Is.True);
+ Assert.That(r1a.SunVector,Is.EqualTo(sunvector), "Assert.That(r1a.SunVector,Is.EqualTo(sunvector))");
+ //Assert.That(r1a.TerrainImageID,Is.EqualTo(terimgid), "Assert.That(r1a.TerrainImageID,Is.EqualTo(terimgid))");
+ Assert.That(r1a.FixedSun,Is.True);
+ Assert.That(r1a.SunPosition, Is.EqualTo(sunpos), "Assert.That(r1a.SunPosition, Is.EqualTo(sunpos))");
+ Assert.That(r1a.Covenant, Is.EqualTo(cov), "Assert.That(r1a.Covenant, Is.EqualTo(cov))");
+
+ }
+
+ [Test]
+ public void T300_NoTerrain()
+ {
+ Assert.That(db.LoadTerrain(zero), Is.Null);
+ Assert.That(db.LoadTerrain(region1), Is.Null);
+ Assert.That(db.LoadTerrain(region2), Is.Null);
+ Assert.That(db.LoadTerrain(UUID.Random()), Is.Null);
+ }
+
+ [Test]
+ public void T301_CreateTerrain()
+ {
+ double[,] t1 = GenTerrain(height1);
+ db.StoreTerrain(t1, region1);
+
+ Assert.That(db.LoadTerrain(zero), Is.Null);
+ Assert.That(db.LoadTerrain(region1), Is.Not.Null);
+ Assert.That(db.LoadTerrain(region2), Is.Null);
+ Assert.That(db.LoadTerrain(UUID.Random()), Is.Null);
+ }
+
+ [Test]
+ public void T302_FetchTerrain()
+ {
+ double[,] baseterrain1 = GenTerrain(height1);
+ double[,] baseterrain2 = GenTerrain(height2);
+ double[,] t1 = db.LoadTerrain(region1);
+ Assert.That(CompareTerrain(t1, baseterrain1), Is.True);
+ Assert.That(CompareTerrain(t1, baseterrain2), Is.False);
+ }
+
+ [Test]
+ public void T303_UpdateTerrain()
+ {
+ double[,] baseterrain1 = GenTerrain(height1);
+ double[,] baseterrain2 = GenTerrain(height2);
+ db.StoreTerrain(baseterrain2, region1);
+
+ double[,] t1 = db.LoadTerrain(region1);
+ Assert.That(CompareTerrain(t1, baseterrain1), Is.False);
+ Assert.That(CompareTerrain(t1, baseterrain2), Is.True);
+ }
+
+ [Test]
+ public void T400_EmptyLand()
+ {
+ Assert.That(db.LoadLandObjects(zero).Count, Is.EqualTo(0), "Assert.That(db.LoadLandObjects(zero).Count, Is.EqualTo(0))");
+ Assert.That(db.LoadLandObjects(region1).Count, Is.EqualTo(0), "Assert.That(db.LoadLandObjects(region1).Count, Is.EqualTo(0))");
+ Assert.That(db.LoadLandObjects(region2).Count, Is.EqualTo(0), "Assert.That(db.LoadLandObjects(region2).Count, Is.EqualTo(0))");
+ Assert.That(db.LoadLandObjects(UUID.Random()).Count, Is.EqualTo(0), "Assert.That(db.LoadLandObjects(UUID.Random()).Count, Is.EqualTo(0))");
+ }
+
+ // TODO: we should have real land tests, but Land is so
+ // intermingled with scene that you can't test it without a
+ // valid scene. That requires some disagregation.
+
+
+ //************************************************************************************//
+ // Extra private methods
+
+ private double[,] GenTerrain(double value)
+ {
+ double[,] terret = new double[Constants.RegionSize, Constants.RegionSize];
+ terret.Initialize();
+ for (int x = 0; x < Constants.RegionSize; x++)
+ for (int y = 0; y < Constants.RegionSize; y++)
+ terret[x,y] = value;
+
+ return terret;
+ }
+
+ private bool CompareTerrain(double[,] one, double[,] two)
+ {
+ for (int x = 0; x < Constants.RegionSize; x++)
+ for (int y = 0; y < Constants.RegionSize; y++)
+ if (one[x,y] != two[x,y])
+ return false;
+
+ return true;
+ }
+
+
+ private SceneObjectGroup FindSOG(string name, UUID r)
+ {
+ List objs = db.LoadObjects(r);
+ foreach (SceneObjectGroup sog in objs)
+ {
+ SceneObjectPart p = sog.RootPart;
+ if (p.Name == name) {
+ RegionInfo regionInfo = new RegionInfo();
+ regionInfo.RegionID = r;
+ regionInfo.RegionLocX = 0;
+ regionInfo.RegionLocY = 0;
+
+ Scene scene = new Scene(regionInfo);
+ sog.SetScene(scene);
+
+ return sog;
+ }
+ }
+
+ return null;
+ }
+
+ // This builds a minimalistic Prim, 1 SOG with 1 root SOP. A
+ // common failure case is people adding new fields that aren't
+ // initialized, but have non-null db constraints. We should
+ // honestly be passing more and more null things in here.
+ //
+ // Please note that in Sqlite.BuildPrim there is a commented out inline version
+ // of this so you can debug and step through the build process and check the fields
+ //
+ // Real World Value: Tests for situation where extending a SceneObjectGroup/SceneObjectPart
+ // causes the application to crash at the database layer because of null values
+ // in NOT NULL fields
+ //
+ private SceneObjectGroup NewSOG(string name, UUID uuid, UUID regionId)
+ {
+ RegionInfo regionInfo = new RegionInfo();
+ regionInfo.RegionID = regionId;
+ regionInfo.RegionLocX = 0;
+ regionInfo.RegionLocY = 0;
+
+ Scene scene = new Scene(regionInfo);
+
+ SceneObjectPart sop = new SceneObjectPart();
+ sop.Name = name;
+ sop.Description = name;
+ sop.Text = RandomName();
+ sop.SitName = RandomName();
+ sop.TouchName = RandomName();
+ sop.UUID = uuid;
+ sop.Shape = PrimitiveBaseShape.Default;
+
+ SceneObjectGroup sog = new SceneObjectGroup(sop);
+ sog.SetScene(scene);
+
+ return sog;
+ }
+
+ private SceneObjectPart NewSOP(string name, UUID uuid)
+ {
+ SceneObjectPart sop = new SceneObjectPart();
+ sop.Name = name;
+ sop.Description = name;
+ sop.Text = RandomName();
+ sop.SitName = RandomName();
+ sop.TouchName = RandomName();
+ sop.UUID = uuid;
+ sop.Shape = PrimitiveBaseShape.Default;
+ return sop;
+ }
+
+ // These are copied from the Inventory Item tests
+
+ private InventoryItemBase NewItem(UUID id, UUID parent, UUID owner, string name, UUID asset)
+ {
+ InventoryItemBase i = new InventoryItemBase();
+ i.ID = id;
+ i.Folder = parent;
+ i.Owner = owner;
+ i.CreatorId = owner.ToString();
+ i.Name = name;
+ i.Description = name;
+ i.AssetID = asset;
+ return i;
+ }
+
+ private static string RandomName()
+ {
+ StringBuilder name = new StringBuilder();
+ int size = random.Next(5,12);
+ char ch ;
+ for (int i=0; i