diff options
Diffstat (limited to '')
6 files changed, 404 insertions, 30 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs index e2d0db2..c73e22f 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiInventoryTests.cs | |||
@@ -63,7 +63,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
63 | IConfig config = initConfigSource.AddConfig("XEngine"); | 63 | IConfig config = initConfigSource.AddConfig("XEngine"); |
64 | config.Set("Enabled", "true"); | 64 | config.Set("Enabled", "true"); |
65 | 65 | ||
66 | m_scene = SceneHelpers.SetupScene(); | 66 | m_scene = new SceneHelpers().SetupScene(); |
67 | SceneHelpers.SetupSceneModules(m_scene, initConfigSource); | 67 | SceneHelpers.SetupSceneModules(m_scene, initConfigSource); |
68 | 68 | ||
69 | m_engine = new XEngine.XEngine(); | 69 | m_engine = new XEngine.XEngine(); |
@@ -91,7 +91,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
91 | TaskInventoryHelpers.AddSceneObject(m_scene, so1.RootPart, inventoryItemName, itemId, userId); | 91 | TaskInventoryHelpers.AddSceneObject(m_scene, so1.RootPart, inventoryItemName, itemId, userId); |
92 | 92 | ||
93 | LSL_Api api = new LSL_Api(); | 93 | LSL_Api api = new LSL_Api(); |
94 | api.Initialize(m_engine, so1.RootPart, so1.RootPart.LocalId, so1.RootPart.UUID); | 94 | api.Initialize(m_engine, so1.RootPart, null); |
95 | 95 | ||
96 | // Create a second object | 96 | // Create a second object |
97 | SceneObjectGroup so2 = SceneHelpers.CreateSceneObject(1, userId, "so2", 0x100); | 97 | SceneObjectGroup so2 = SceneHelpers.CreateSceneObject(1, userId, "so2", 0x100); |
@@ -124,7 +124,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
124 | SceneObjectGroup so1 = SceneHelpers.CreateSceneObject(1, user1Id, "so1", 0x10); | 124 | SceneObjectGroup so1 = SceneHelpers.CreateSceneObject(1, user1Id, "so1", 0x10); |
125 | m_scene.AddSceneObject(so1); | 125 | m_scene.AddSceneObject(so1); |
126 | LSL_Api api = new LSL_Api(); | 126 | LSL_Api api = new LSL_Api(); |
127 | api.Initialize(m_engine, so1.RootPart, so1.RootPart.LocalId, so1.RootPart.UUID); | 127 | api.Initialize(m_engine, so1.RootPart, null); |
128 | 128 | ||
129 | // Create an object embedded inside the first | 129 | // Create an object embedded inside the first |
130 | UUID itemId = TestHelpers.ParseTail(0x20); | 130 | UUID itemId = TestHelpers.ParseTail(0x20); |
@@ -134,7 +134,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
134 | SceneObjectGroup so2 = SceneHelpers.CreateSceneObject(1, user2Id, "so2", 0x100); | 134 | SceneObjectGroup so2 = SceneHelpers.CreateSceneObject(1, user2Id, "so2", 0x100); |
135 | m_scene.AddSceneObject(so2); | 135 | m_scene.AddSceneObject(so2); |
136 | LSL_Api api2 = new LSL_Api(); | 136 | LSL_Api api2 = new LSL_Api(); |
137 | api2.Initialize(m_engine, so2.RootPart, so2.RootPart.LocalId, so2.RootPart.UUID); | 137 | api2.Initialize(m_engine, so2.RootPart, null); |
138 | 138 | ||
139 | // *** Firstly, we test where llAllowInventoryDrop() has not been called. *** | 139 | // *** Firstly, we test where llAllowInventoryDrop() has not been called. *** |
140 | api.llGiveInventory(so2.UUID.ToString(), inventoryItemName); | 140 | api.llGiveInventory(so2.UUID.ToString(), inventoryItemName); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiLinkingTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiLinkingTests.cs new file mode 100644 index 0000000..2565ae7 --- /dev/null +++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiLinkingTests.cs | |||
@@ -0,0 +1,142 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Reflection; | ||
31 | using System.Text; | ||
32 | using log4net; | ||
33 | using Nini.Config; | ||
34 | using NUnit.Framework; | ||
35 | using OpenMetaverse; | ||
36 | using OpenMetaverse.Assets; | ||
37 | using OpenMetaverse.StructuredData; | ||
38 | using OpenSim.Framework; | ||
39 | using OpenSim.Region.CoreModules.Avatar.AvatarFactory; | ||
40 | using OpenSim.Region.OptionalModules.World.NPC; | ||
41 | using OpenSim.Region.Framework.Scenes; | ||
42 | using OpenSim.Region.ScriptEngine.Shared; | ||
43 | using OpenSim.Region.ScriptEngine.Shared.Api; | ||
44 | using OpenSim.Region.ScriptEngine.Shared.ScriptBase; | ||
45 | using OpenSim.Services.Interfaces; | ||
46 | using OpenSim.Tests.Common; | ||
47 | using OpenSim.Tests.Common.Mock; | ||
48 | |||
49 | namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||
50 | { | ||
51 | /// <summary> | ||
52 | /// Tests for linking functions in LSL | ||
53 | /// </summary> | ||
54 | /// <remarks> | ||
55 | /// This relates to LSL. Actual linking functionality should be tested in the main | ||
56 | /// OpenSim.Region.Framework.Scenes.Tests.SceneObjectLinkingTests. | ||
57 | /// </remarks> | ||
58 | [TestFixture] | ||
59 | public class LSL_ApiLinkingTests | ||
60 | { | ||
61 | protected Scene m_scene; | ||
62 | protected XEngine.XEngine m_engine; | ||
63 | |||
64 | [SetUp] | ||
65 | public void SetUp() | ||
66 | { | ||
67 | IConfigSource initConfigSource = new IniConfigSource(); | ||
68 | IConfig config = initConfigSource.AddConfig("XEngine"); | ||
69 | config.Set("Enabled", "true"); | ||
70 | |||
71 | m_scene = new SceneHelpers().SetupScene(); | ||
72 | SceneHelpers.SetupSceneModules(m_scene, initConfigSource); | ||
73 | |||
74 | m_engine = new XEngine.XEngine(); | ||
75 | m_engine.Initialise(initConfigSource); | ||
76 | m_engine.AddRegion(m_scene); | ||
77 | } | ||
78 | |||
79 | [Test] | ||
80 | public void TestllCreateLink() | ||
81 | { | ||
82 | TestHelpers.InMethod(); | ||
83 | |||
84 | UUID ownerId = TestHelpers.ParseTail(0x1); | ||
85 | |||
86 | SceneObjectGroup grp1 = SceneHelpers.CreateSceneObject(2, ownerId, "grp1-", 0x10); | ||
87 | grp1.AbsolutePosition = new Vector3(10, 10, 10); | ||
88 | m_scene.AddSceneObject(grp1); | ||
89 | |||
90 | // FIXME: This should really be a script item (with accompanying script) | ||
91 | TaskInventoryItem grp1Item | ||
92 | = TaskInventoryHelpers.AddNotecard( | ||
93 | m_scene, grp1.RootPart, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900)); | ||
94 | grp1Item.PermsMask |= ScriptBaseClass.PERMISSION_CHANGE_LINKS; | ||
95 | |||
96 | SceneObjectGroup grp2 = SceneHelpers.CreateSceneObject(2, ownerId, "grp2-", 0x20); | ||
97 | grp2.AbsolutePosition = new Vector3(20, 20, 20); | ||
98 | |||
99 | // <180,0,0> | ||
100 | grp2.UpdateGroupRotationR(Quaternion.CreateFromEulers(180 * Utils.DEG_TO_RAD, 0, 0)); | ||
101 | |||
102 | m_scene.AddSceneObject(grp2); | ||
103 | |||
104 | LSL_Api apiGrp1 = new LSL_Api(); | ||
105 | apiGrp1.Initialize(m_engine, grp1.RootPart, grp1Item); | ||
106 | |||
107 | apiGrp1.llCreateLink(grp2.UUID.ToString(), ScriptBaseClass.TRUE); | ||
108 | |||
109 | Assert.That(grp1.Parts.Length, Is.EqualTo(4)); | ||
110 | Assert.That(grp2.IsDeleted, Is.True); | ||
111 | } | ||
112 | |||
113 | [Test] | ||
114 | public void TestllBreakLink() | ||
115 | { | ||
116 | TestHelpers.InMethod(); | ||
117 | |||
118 | UUID ownerId = TestHelpers.ParseTail(0x1); | ||
119 | |||
120 | SceneObjectGroup grp1 = SceneHelpers.CreateSceneObject(2, ownerId, "grp1-", 0x10); | ||
121 | grp1.AbsolutePosition = new Vector3(10, 10, 10); | ||
122 | m_scene.AddSceneObject(grp1); | ||
123 | |||
124 | // FIXME: This should really be a script item (with accompanying script) | ||
125 | TaskInventoryItem grp1Item | ||
126 | = TaskInventoryHelpers.AddNotecard( | ||
127 | m_scene, grp1.RootPart, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900)); | ||
128 | |||
129 | grp1Item.PermsMask |= ScriptBaseClass.PERMISSION_CHANGE_LINKS; | ||
130 | |||
131 | LSL_Api apiGrp1 = new LSL_Api(); | ||
132 | apiGrp1.Initialize(m_engine, grp1.RootPart, grp1Item); | ||
133 | |||
134 | apiGrp1.llBreakLink(2); | ||
135 | |||
136 | Assert.That(grp1.Parts.Length, Is.EqualTo(1)); | ||
137 | |||
138 | SceneObjectGroup grp2 = m_scene.GetSceneObjectGroup("grp1-Part1"); | ||
139 | Assert.That(grp2, Is.Not.Null); | ||
140 | } | ||
141 | } | ||
142 | } \ No newline at end of file | ||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs index 9cf9258..c41d1e7 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiTest.cs | |||
@@ -58,16 +58,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
58 | IConfig config = initConfigSource.AddConfig("XEngine"); | 58 | IConfig config = initConfigSource.AddConfig("XEngine"); |
59 | config.Set("Enabled", "true"); | 59 | config.Set("Enabled", "true"); |
60 | 60 | ||
61 | Scene scene = SceneHelpers.SetupScene(); | 61 | Scene scene = new SceneHelpers().SetupScene(); |
62 | SceneObjectPart part = SceneHelpers.AddSceneObject(scene); | 62 | SceneObjectPart part = SceneHelpers.AddSceneObject(scene).RootPart; |
63 | 63 | ||
64 | XEngine.XEngine engine = new XEngine.XEngine(); | 64 | XEngine.XEngine engine = new XEngine.XEngine(); |
65 | engine.Initialise(initConfigSource); | 65 | engine.Initialise(initConfigSource); |
66 | engine.AddRegion(scene); | 66 | engine.AddRegion(scene); |
67 | 67 | ||
68 | m_lslApi = new LSL_Api(); | 68 | m_lslApi = new LSL_Api(); |
69 | m_lslApi.Initialize(engine, part, part.LocalId, part.UUID); | 69 | m_lslApi.Initialize(engine, part, null); |
70 | |||
71 | } | 70 | } |
72 | 71 | ||
73 | [Test] | 72 | [Test] |
@@ -261,7 +260,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
261 | TestHelpers.InMethod(); | 260 | TestHelpers.InMethod(); |
262 | 261 | ||
263 | // Create Prim1. | 262 | // Create Prim1. |
264 | Scene scene = SceneHelpers.SetupScene(); | 263 | Scene scene = new SceneHelpers().SetupScene(); |
265 | string obj1Name = "Prim1"; | 264 | string obj1Name = "Prim1"; |
266 | UUID objUuid = new UUID("00000000-0000-0000-0000-000000000001"); | 265 | UUID objUuid = new UUID("00000000-0000-0000-0000-000000000001"); |
267 | SceneObjectPart part1 = | 266 | SceneObjectPart part1 = |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs index 7573dff..c8718d9 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs | |||
@@ -67,7 +67,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
67 | config = initConfigSource.AddConfig("NPC"); | 67 | config = initConfigSource.AddConfig("NPC"); |
68 | config.Set("Enabled", "true"); | 68 | config.Set("Enabled", "true"); |
69 | 69 | ||
70 | m_scene = SceneHelpers.SetupScene(); | 70 | m_scene = new SceneHelpers().SetupScene(); |
71 | SceneHelpers.SetupSceneModules(m_scene, initConfigSource, new AvatarFactoryModule(), new NPCModule()); | 71 | SceneHelpers.SetupSceneModules(m_scene, initConfigSource, new AvatarFactoryModule(), new NPCModule()); |
72 | 72 | ||
73 | m_engine = new XEngine.XEngine(); | 73 | m_engine = new XEngine.XEngine(); |
@@ -79,7 +79,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
79 | /// Test creation of an NPC where the appearance data comes from a notecard | 79 | /// Test creation of an NPC where the appearance data comes from a notecard |
80 | /// </summary> | 80 | /// </summary> |
81 | [Test] | 81 | [Test] |
82 | public void TestOsNpcCreateFromNotecard() | 82 | public void TestOsNpcCreateUsingAppearanceFromNotecard() |
83 | { | 83 | { |
84 | TestHelpers.InMethod(); | 84 | TestHelpers.InMethod(); |
85 | // log4net.Config.XmlConfigurator.Configure(); | 85 | // log4net.Config.XmlConfigurator.Configure(); |
@@ -90,12 +90,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
90 | 90 | ||
91 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); | 91 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); |
92 | sp.Appearance.AvatarHeight = newHeight; | 92 | sp.Appearance.AvatarHeight = newHeight; |
93 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId); | 93 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId, 0x10); |
94 | SceneObjectPart part = so.RootPart; | 94 | SceneObjectPart part = so.RootPart; |
95 | m_scene.AddSceneObject(so); | 95 | m_scene.AddSceneObject(so); |
96 | 96 | ||
97 | OSSL_Api osslApi = new OSSL_Api(); | 97 | OSSL_Api osslApi = new OSSL_Api(); |
98 | osslApi.Initialize(m_engine, part, part.LocalId, part.UUID); | 98 | osslApi.Initialize(m_engine, part, null); |
99 | 99 | ||
100 | string notecardName = "appearanceNc"; | 100 | string notecardName = "appearanceNc"; |
101 | osslApi.osOwnerSaveAppearance(notecardName); | 101 | osslApi.osOwnerSaveAppearance(notecardName); |
@@ -114,10 +114,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
114 | /// Test creation of an NPC where the appearance data comes from an avatar already in the region. | 114 | /// Test creation of an NPC where the appearance data comes from an avatar already in the region. |
115 | /// </summary> | 115 | /// </summary> |
116 | [Test] | 116 | [Test] |
117 | public void TestOsNpcCreateFromAvatar() | 117 | public void TestOsNpcCreateUsingAppearanceFromAvatar() |
118 | { | 118 | { |
119 | TestHelpers.InMethod(); | 119 | TestHelpers.InMethod(); |
120 | // log4net.Config.XmlConfigurator.Configure(); | 120 | // TestHelpers.EnableLogging(); |
121 | 121 | ||
122 | // Store an avatar with a different height from default in a notecard. | 122 | // Store an avatar with a different height from default in a notecard. |
123 | UUID userId = TestHelpers.ParseTail(0x1); | 123 | UUID userId = TestHelpers.ParseTail(0x1); |
@@ -125,12 +125,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
125 | 125 | ||
126 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); | 126 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); |
127 | sp.Appearance.AvatarHeight = newHeight; | 127 | sp.Appearance.AvatarHeight = newHeight; |
128 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId); | 128 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId, 0x10); |
129 | SceneObjectPart part = so.RootPart; | 129 | SceneObjectPart part = so.RootPart; |
130 | m_scene.AddSceneObject(so); | 130 | m_scene.AddSceneObject(so); |
131 | 131 | ||
132 | OSSL_Api osslApi = new OSSL_Api(); | 132 | OSSL_Api osslApi = new OSSL_Api(); |
133 | osslApi.Initialize(m_engine, part, part.LocalId, part.UUID); | 133 | osslApi.Initialize(m_engine, part, null); |
134 | 134 | ||
135 | string notecardName = "appearanceNc"; | 135 | string notecardName = "appearanceNc"; |
136 | osslApi.osOwnerSaveAppearance(notecardName); | 136 | osslApi.osOwnerSaveAppearance(notecardName); |
@@ -156,12 +156,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
156 | 156 | ||
157 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); | 157 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); |
158 | sp.Appearance.AvatarHeight = newHeight; | 158 | sp.Appearance.AvatarHeight = newHeight; |
159 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId); | 159 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId, 0x10); |
160 | SceneObjectPart part = so.RootPart; | 160 | SceneObjectPart part = so.RootPart; |
161 | m_scene.AddSceneObject(so); | 161 | m_scene.AddSceneObject(so); |
162 | 162 | ||
163 | OSSL_Api osslApi = new OSSL_Api(); | 163 | OSSL_Api osslApi = new OSSL_Api(); |
164 | osslApi.Initialize(m_engine, part, part.LocalId, part.UUID); | 164 | osslApi.Initialize(m_engine, part, null); |
165 | 165 | ||
166 | string notecardName = "appearanceNc"; | 166 | string notecardName = "appearanceNc"; |
167 | 167 | ||
@@ -197,12 +197,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
197 | 197 | ||
198 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, nonOwnerId); | 198 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, nonOwnerId); |
199 | sp.Appearance.AvatarHeight = newHeight; | 199 | sp.Appearance.AvatarHeight = newHeight; |
200 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, ownerId); | 200 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, ownerId, 0x10); |
201 | SceneObjectPart part = so.RootPart; | 201 | SceneObjectPart part = so.RootPart; |
202 | m_scene.AddSceneObject(so); | 202 | m_scene.AddSceneObject(so); |
203 | 203 | ||
204 | OSSL_Api osslApi = new OSSL_Api(); | 204 | OSSL_Api osslApi = new OSSL_Api(); |
205 | osslApi.Initialize(m_engine, part, part.LocalId, part.UUID); | 205 | osslApi.Initialize(m_engine, part, null); |
206 | 206 | ||
207 | string notecardName = "appearanceNc"; | 207 | string notecardName = "appearanceNc"; |
208 | 208 | ||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAttachmentTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAttachmentTests.cs new file mode 100644 index 0000000..5ed1f3d --- /dev/null +++ b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAttachmentTests.cs | |||
@@ -0,0 +1,231 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Reflection; | ||
31 | using System.Text; | ||
32 | using log4net; | ||
33 | using Nini.Config; | ||
34 | using NUnit.Framework; | ||
35 | using OpenMetaverse; | ||
36 | using OpenMetaverse.Assets; | ||
37 | using OpenMetaverse.StructuredData; | ||
38 | using OpenSim.Framework; | ||
39 | using OpenSim.Region.CoreModules.Avatar.Attachments; | ||
40 | using OpenSim.Region.CoreModules.Framework.InventoryAccess; | ||
41 | using OpenSim.Region.Framework.Scenes; | ||
42 | using OpenSim.Region.ScriptEngine.Shared; | ||
43 | using OpenSim.Region.ScriptEngine.Shared.Api; | ||
44 | using OpenSim.Services.Interfaces; | ||
45 | using OpenSim.Tests.Common; | ||
46 | using OpenSim.Tests.Common.Mock; | ||
47 | |||
48 | namespace OpenSim.Region.ScriptEngine.Shared.Tests | ||
49 | { | ||
50 | /// <summary> | ||
51 | /// Tests for OSSL attachment functions | ||
52 | /// </summary> | ||
53 | /// <remarks> | ||
54 | /// TODO: Add tests for all functions | ||
55 | /// </remarks> | ||
56 | [TestFixture] | ||
57 | public class OSSL_ApiAttachmentTests : OpenSimTestCase | ||
58 | { | ||
59 | protected Scene m_scene; | ||
60 | protected XEngine.XEngine m_engine; | ||
61 | |||
62 | [SetUp] | ||
63 | public override void SetUp() | ||
64 | { | ||
65 | base.SetUp(); | ||
66 | |||
67 | IConfigSource initConfigSource = new IniConfigSource(); | ||
68 | |||
69 | IConfig xengineConfig = initConfigSource.AddConfig("XEngine"); | ||
70 | xengineConfig.Set("Enabled", "true"); | ||
71 | xengineConfig.Set("AllowOSFunctions", "true"); | ||
72 | xengineConfig.Set("OSFunctionThreatLevel", "Severe"); | ||
73 | |||
74 | IConfig modulesConfig = initConfigSource.AddConfig("Modules"); | ||
75 | modulesConfig.Set("InventoryAccessModule", "BasicInventoryAccessModule"); | ||
76 | |||
77 | m_scene = new SceneHelpers().SetupScene(); | ||
78 | SceneHelpers.SetupSceneModules( | ||
79 | m_scene, initConfigSource, new AttachmentsModule(), new BasicInventoryAccessModule()); | ||
80 | |||
81 | m_engine = new XEngine.XEngine(); | ||
82 | m_engine.Initialise(initConfigSource); | ||
83 | m_engine.AddRegion(m_scene); | ||
84 | } | ||
85 | |||
86 | [Test] | ||
87 | public void TestOsForceAttachToAvatarFromInventory() | ||
88 | { | ||
89 | TestHelpers.InMethod(); | ||
90 | // TestHelpers.EnableLogging(); | ||
91 | |||
92 | string taskInvObjItemName = "sphere"; | ||
93 | UUID taskInvObjItemId = UUID.Parse("00000000-0000-0000-0000-100000000000"); | ||
94 | AttachmentPoint attachPoint = AttachmentPoint.Chin; | ||
95 | |||
96 | UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(m_scene, 0x1); | ||
97 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, ua1.PrincipalID); | ||
98 | SceneObjectGroup inWorldObj = SceneHelpers.AddSceneObject(m_scene, "inWorldObj", ua1.PrincipalID); | ||
99 | TaskInventoryItem scriptItem = TaskInventoryHelpers.AddScript(m_scene, inWorldObj.RootPart); | ||
100 | |||
101 | new LSL_Api().Initialize(m_engine, inWorldObj.RootPart, scriptItem); | ||
102 | OSSL_Api osslApi = new OSSL_Api(); | ||
103 | osslApi.Initialize(m_engine, inWorldObj.RootPart, scriptItem); | ||
104 | |||
105 | // SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, ua1.PrincipalID); | ||
106 | |||
107 | // Create an object embedded inside the first | ||
108 | TaskInventoryHelpers.AddSceneObject(m_scene, inWorldObj.RootPart, taskInvObjItemName, taskInvObjItemId, ua1.PrincipalID); | ||
109 | |||
110 | osslApi.osForceAttachToAvatarFromInventory(taskInvObjItemName, (int)attachPoint); | ||
111 | |||
112 | // Check scene presence status | ||
113 | Assert.That(sp.HasAttachments(), Is.True); | ||
114 | List<SceneObjectGroup> attachments = sp.GetAttachments(); | ||
115 | Assert.That(attachments.Count, Is.EqualTo(1)); | ||
116 | SceneObjectGroup attSo = attachments[0]; | ||
117 | Assert.That(attSo.Name, Is.EqualTo(taskInvObjItemName)); | ||
118 | Assert.That(attSo.AttachmentPoint, Is.EqualTo((uint)attachPoint)); | ||
119 | Assert.That(attSo.IsAttachment); | ||
120 | Assert.That(attSo.UsesPhysics, Is.False); | ||
121 | Assert.That(attSo.IsTemporary, Is.False); | ||
122 | |||
123 | // Check appearance status | ||
124 | List<AvatarAttachment> attachmentsInAppearance = sp.Appearance.GetAttachments(); | ||
125 | Assert.That(attachmentsInAppearance.Count, Is.EqualTo(1)); | ||
126 | Assert.That(sp.Appearance.GetAttachpoint(attachmentsInAppearance[0].ItemID), Is.EqualTo((uint)attachPoint)); | ||
127 | } | ||
128 | |||
129 | /// <summary> | ||
130 | /// Make sure we can't force attach anything other than objects. | ||
131 | /// </summary> | ||
132 | [Test] | ||
133 | public void TestOsForceAttachToAvatarFromInventoryNotObject() | ||
134 | { | ||
135 | TestHelpers.InMethod(); | ||
136 | // TestHelpers.EnableLogging(); | ||
137 | |||
138 | string taskInvObjItemName = "sphere"; | ||
139 | UUID taskInvObjItemId = UUID.Parse("00000000-0000-0000-0000-100000000000"); | ||
140 | AttachmentPoint attachPoint = AttachmentPoint.Chin; | ||
141 | |||
142 | UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(m_scene, 0x1); | ||
143 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, ua1.PrincipalID); | ||
144 | SceneObjectGroup inWorldObj = SceneHelpers.AddSceneObject(m_scene, "inWorldObj", ua1.PrincipalID); | ||
145 | TaskInventoryItem scriptItem = TaskInventoryHelpers.AddScript(m_scene, inWorldObj.RootPart); | ||
146 | |||
147 | new LSL_Api().Initialize(m_engine, inWorldObj.RootPart, scriptItem); | ||
148 | OSSL_Api osslApi = new OSSL_Api(); | ||
149 | osslApi.Initialize(m_engine, inWorldObj.RootPart, scriptItem); | ||
150 | |||
151 | // Create an object embedded inside the first | ||
152 | TaskInventoryHelpers.AddNotecard( | ||
153 | m_scene, inWorldObj.RootPart, taskInvObjItemName, taskInvObjItemId, TestHelpers.ParseTail(0x900)); | ||
154 | |||
155 | bool exceptionCaught = false; | ||
156 | |||
157 | try | ||
158 | { | ||
159 | osslApi.osForceAttachToAvatarFromInventory(taskInvObjItemName, (int)attachPoint); | ||
160 | } | ||
161 | catch (Exception) | ||
162 | { | ||
163 | exceptionCaught = true; | ||
164 | } | ||
165 | |||
166 | Assert.That(exceptionCaught, Is.True); | ||
167 | |||
168 | // Check scene presence status | ||
169 | Assert.That(sp.HasAttachments(), Is.False); | ||
170 | List<SceneObjectGroup> attachments = sp.GetAttachments(); | ||
171 | Assert.That(attachments.Count, Is.EqualTo(0)); | ||
172 | |||
173 | // Check appearance status | ||
174 | List<AvatarAttachment> attachmentsInAppearance = sp.Appearance.GetAttachments(); | ||
175 | Assert.That(attachmentsInAppearance.Count, Is.EqualTo(0)); | ||
176 | } | ||
177 | |||
178 | [Test] | ||
179 | public void TestOsForceAttachToOtherAvatarFromInventory() | ||
180 | { | ||
181 | TestHelpers.InMethod(); | ||
182 | // TestHelpers.EnableLogging(); | ||
183 | |||
184 | string taskInvObjItemName = "sphere"; | ||
185 | UUID taskInvObjItemId = UUID.Parse("00000000-0000-0000-0000-100000000000"); | ||
186 | AttachmentPoint attachPoint = AttachmentPoint.Chin; | ||
187 | |||
188 | UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(m_scene, "user", "one", 0x1, "pass"); | ||
189 | UserAccount ua2 = UserAccountHelpers.CreateUserWithInventory(m_scene, "user", "two", 0x2, "pass"); | ||
190 | |||
191 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, ua1); | ||
192 | SceneObjectGroup inWorldObj = SceneHelpers.AddSceneObject(m_scene, "inWorldObj", ua1.PrincipalID); | ||
193 | TaskInventoryItem scriptItem = TaskInventoryHelpers.AddScript(m_scene, inWorldObj.RootPart); | ||
194 | |||
195 | new LSL_Api().Initialize(m_engine, inWorldObj.RootPart, scriptItem); | ||
196 | OSSL_Api osslApi = new OSSL_Api(); | ||
197 | osslApi.Initialize(m_engine, inWorldObj.RootPart, scriptItem); | ||
198 | |||
199 | // Create an object embedded inside the first | ||
200 | TaskInventoryHelpers.AddSceneObject(m_scene, inWorldObj.RootPart, taskInvObjItemName, taskInvObjItemId, ua1.PrincipalID); | ||
201 | |||
202 | ScenePresence sp2 = SceneHelpers.AddScenePresence(m_scene, ua2); | ||
203 | |||
204 | osslApi.osForceAttachToOtherAvatarFromInventory(sp2.UUID.ToString(), taskInvObjItemName, (int)attachPoint); | ||
205 | |||
206 | // Check scene presence status | ||
207 | Assert.That(sp.HasAttachments(), Is.False); | ||
208 | List<SceneObjectGroup> attachments = sp.GetAttachments(); | ||
209 | Assert.That(attachments.Count, Is.EqualTo(0)); | ||
210 | |||
211 | Assert.That(sp2.HasAttachments(), Is.True); | ||
212 | List<SceneObjectGroup> attachments2 = sp2.GetAttachments(); | ||
213 | Assert.That(attachments2.Count, Is.EqualTo(1)); | ||
214 | SceneObjectGroup attSo = attachments2[0]; | ||
215 | Assert.That(attSo.Name, Is.EqualTo(taskInvObjItemName)); | ||
216 | Assert.That(attSo.OwnerID, Is.EqualTo(ua2.PrincipalID)); | ||
217 | Assert.That(attSo.AttachmentPoint, Is.EqualTo((uint)attachPoint)); | ||
218 | Assert.That(attSo.IsAttachment); | ||
219 | Assert.That(attSo.UsesPhysics, Is.False); | ||
220 | Assert.That(attSo.IsTemporary, Is.False); | ||
221 | |||
222 | // Check appearance status | ||
223 | List<AvatarAttachment> attachmentsInAppearance = sp.Appearance.GetAttachments(); | ||
224 | Assert.That(attachmentsInAppearance.Count, Is.EqualTo(0)); | ||
225 | |||
226 | List<AvatarAttachment> attachmentsInAppearance2 = sp2.Appearance.GetAttachments(); | ||
227 | Assert.That(attachmentsInAppearance2.Count, Is.EqualTo(1)); | ||
228 | Assert.That(sp2.Appearance.GetAttachpoint(attachmentsInAppearance2[0].ItemID), Is.EqualTo((uint)attachPoint)); | ||
229 | } | ||
230 | } | ||
231 | } \ No newline at end of file | ||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs index 9d9fc51..25679a6 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs | |||
@@ -52,14 +52,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
52 | /// Tests for OSSL NPC API | 52 | /// Tests for OSSL NPC API |
53 | /// </summary> | 53 | /// </summary> |
54 | [TestFixture] | 54 | [TestFixture] |
55 | public class OSSL_NpcApiAppearanceTest | 55 | public class OSSL_NpcApiAppearanceTest : OpenSimTestCase |
56 | { | 56 | { |
57 | protected Scene m_scene; | 57 | protected Scene m_scene; |
58 | protected XEngine.XEngine m_engine; | 58 | protected XEngine.XEngine m_engine; |
59 | 59 | ||
60 | [SetUp] | 60 | [SetUp] |
61 | public void SetUp() | 61 | public override void SetUp() |
62 | { | 62 | { |
63 | base.SetUp(); | ||
64 | |||
63 | IConfigSource initConfigSource = new IniConfigSource(); | 65 | IConfigSource initConfigSource = new IniConfigSource(); |
64 | IConfig config = initConfigSource.AddConfig("XEngine"); | 66 | IConfig config = initConfigSource.AddConfig("XEngine"); |
65 | config.Set("Enabled", "true"); | 67 | config.Set("Enabled", "true"); |
@@ -68,7 +70,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
68 | config = initConfigSource.AddConfig("NPC"); | 70 | config = initConfigSource.AddConfig("NPC"); |
69 | config.Set("Enabled", "true"); | 71 | config.Set("Enabled", "true"); |
70 | 72 | ||
71 | m_scene = SceneHelpers.SetupScene(); | 73 | m_scene = new SceneHelpers().SetupScene(); |
72 | SceneHelpers.SetupSceneModules(m_scene, initConfigSource, new AvatarFactoryModule(), new NPCModule()); | 74 | SceneHelpers.SetupSceneModules(m_scene, initConfigSource, new AvatarFactoryModule(), new NPCModule()); |
73 | 75 | ||
74 | m_engine = new XEngine.XEngine(); | 76 | m_engine = new XEngine.XEngine(); |
@@ -95,19 +97,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
95 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); | 97 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); |
96 | sp.Appearance.AvatarHeight = newHeight; | 98 | sp.Appearance.AvatarHeight = newHeight; |
97 | 99 | ||
98 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId); | 100 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId, 0x10); |
99 | SceneObjectPart part = so.RootPart; | 101 | SceneObjectPart part = so.RootPart; |
100 | m_scene.AddSceneObject(so); | 102 | m_scene.AddSceneObject(so); |
101 | 103 | ||
102 | SceneObjectGroup otherSo = SceneHelpers.CreateSceneObject(1, otherUserId); | 104 | SceneObjectGroup otherSo = SceneHelpers.CreateSceneObject(1, otherUserId, 0x20); |
103 | SceneObjectPart otherPart = otherSo.RootPart; | 105 | SceneObjectPart otherPart = otherSo.RootPart; |
104 | m_scene.AddSceneObject(otherSo); | 106 | m_scene.AddSceneObject(otherSo); |
105 | 107 | ||
106 | OSSL_Api osslApi = new OSSL_Api(); | 108 | OSSL_Api osslApi = new OSSL_Api(); |
107 | osslApi.Initialize(m_engine, part, part.LocalId, part.UUID); | 109 | osslApi.Initialize(m_engine, part, null); |
108 | 110 | ||
109 | OSSL_Api otherOsslApi = new OSSL_Api(); | 111 | OSSL_Api otherOsslApi = new OSSL_Api(); |
110 | otherOsslApi.Initialize(m_engine, otherPart, otherPart.LocalId, otherPart.UUID); | 112 | otherOsslApi.Initialize(m_engine, otherPart, null); |
111 | 113 | ||
112 | string notecardName = "appearanceNc"; | 114 | string notecardName = "appearanceNc"; |
113 | osslApi.osOwnerSaveAppearance(notecardName); | 115 | osslApi.osOwnerSaveAppearance(notecardName); |
@@ -146,12 +148,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests | |||
146 | 148 | ||
147 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); | 149 | ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId); |
148 | sp.Appearance.AvatarHeight = newHeight; | 150 | sp.Appearance.AvatarHeight = newHeight; |
149 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId); | 151 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId, 0x10); |
150 | SceneObjectPart part = so.RootPart; | 152 | SceneObjectPart part = so.RootPart; |
151 | m_scene.AddSceneObject(so); | 153 | m_scene.AddSceneObject(so); |
152 | 154 | ||
153 | OSSL_Api osslApi = new OSSL_Api(); | 155 | OSSL_Api osslApi = new OSSL_Api(); |
154 | osslApi.Initialize(m_engine, part, part.LocalId, part.UUID); | 156 | osslApi.Initialize(m_engine, part, null); |
155 | 157 | ||
156 | string notecardName = "appearanceNc"; | 158 | string notecardName = "appearanceNc"; |
157 | osslApi.osOwnerSaveAppearance(notecardName); | 159 | osslApi.osOwnerSaveAppearance(notecardName); |