clockwerk-opensim – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 vero 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 NUnit.Framework;
32 using OpenMetaverse;
33 using OpenSim.Framework;
34 using OpenSim.Framework.Communications;
35 using OpenSim.Region.Framework.Scenes;
36 using OpenSim.Tests.Common;
37 using OpenSim.Tests.Common.Mock;
38  
39 namespace OpenSim.Region.Framework.Scenes.Tests
40 {
41 /// <summary>
42 /// Basic scene object status tests
43 /// </summary>
44 [TestFixture]
45 public class SceneObjectStatusTests : OpenSimTestCase
46 {
47 private TestScene m_scene;
48 private UUID m_ownerId = TestHelpers.ParseTail(0x1);
49 private SceneObjectGroup m_so1;
50 private SceneObjectGroup m_so2;
51  
52 [SetUp]
53 public void Init()
54 {
55 m_scene = new SceneHelpers().SetupScene();
56 m_so1 = SceneHelpers.CreateSceneObject(1, m_ownerId, "so1", 0x10);
57 m_so2 = SceneHelpers.CreateSceneObject(1, m_ownerId, "so2", 0x20);
58 }
59  
60 [Test]
61 public void TestSetTemporary()
62 {
63 TestHelpers.InMethod();
64  
65 m_scene.AddSceneObject(m_so1);
66 m_so1.ScriptSetTemporaryStatus(true);
67  
68 // Is this really the correct flag?
69 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.TemporaryOnRez));
70 Assert.That(m_so1.Backup, Is.False);
71  
72 // Test setting back to non-temporary
73 m_so1.ScriptSetTemporaryStatus(false);
74  
75 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.None));
76 Assert.That(m_so1.Backup, Is.True);
77 }
78  
79 [Test]
80 public void TestSetPhantomSinglePrim()
81 {
82 TestHelpers.InMethod();
83  
84 m_scene.AddSceneObject(m_so1);
85  
86 SceneObjectPart rootPart = m_so1.RootPart;
87 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
88  
89 m_so1.ScriptSetPhantomStatus(true);
90  
91 // Console.WriteLine("so.RootPart.Flags [{0}]", so.RootPart.Flags);
92 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Phantom));
93  
94 m_so1.ScriptSetPhantomStatus(false);
95  
96 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
97 }
98  
99 [Test]
100 public void TestSetNonPhysicsVolumeDetectSinglePrim()
101 {
102 TestHelpers.InMethod();
103  
104 m_scene.AddSceneObject(m_so1);
105  
106 SceneObjectPart rootPart = m_so1.RootPart;
107 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
108  
109 m_so1.ScriptSetVolumeDetect(true);
110  
111 // Console.WriteLine("so.RootPart.Flags [{0}]", so.RootPart.Flags);
112 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Phantom));
113  
114 m_so1.ScriptSetVolumeDetect(false);
115  
116 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
117 }
118  
119 [Test]
120 public void TestSetPhysicsSinglePrim()
121 {
122 TestHelpers.InMethod();
123  
124 m_scene.AddSceneObject(m_so1);
125  
126 SceneObjectPart rootPart = m_so1.RootPart;
127 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
128  
129 m_so1.ScriptSetPhysicsStatus(true);
130  
131 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Physics));
132  
133 m_so1.ScriptSetPhysicsStatus(false);
134  
135 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
136 }
137  
138 [Test]
139 public void TestSetPhysicsVolumeDetectSinglePrim()
140 {
141 TestHelpers.InMethod();
142  
143 m_scene.AddSceneObject(m_so1);
144  
145 SceneObjectPart rootPart = m_so1.RootPart;
146 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
147  
148 m_so1.ScriptSetPhysicsStatus(true);
149 m_so1.ScriptSetVolumeDetect(true);
150  
151 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Phantom | PrimFlags.Physics));
152  
153 m_so1.ScriptSetVolumeDetect(false);
154  
155 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Physics));
156 }
157  
158 [Test]
159 public void TestSetPhysicsLinkset()
160 {
161 TestHelpers.InMethod();
162  
163 m_scene.AddSceneObject(m_so1);
164 m_scene.AddSceneObject(m_so2);
165  
166 m_scene.LinkObjects(m_ownerId, m_so1.LocalId, new List<uint>() { m_so2.LocalId });
167  
168 m_so1.ScriptSetPhysicsStatus(true);
169  
170 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.Physics));
171 Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.Physics));
172  
173 m_so1.ScriptSetPhysicsStatus(false);
174  
175 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.None));
176 Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.None));
177  
178 m_so1.ScriptSetPhysicsStatus(true);
179  
180 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.Physics));
181 Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.Physics));
182 }
183  
184 /// <summary>
185 /// Test that linking results in the correct physical status for all linkees.
186 /// </summary>
187 [Test]
188 public void TestLinkPhysicsBothPhysical()
189 {
190 TestHelpers.InMethod();
191  
192 m_scene.AddSceneObject(m_so1);
193 m_scene.AddSceneObject(m_so2);
194  
195 m_so1.ScriptSetPhysicsStatus(true);
196 m_so2.ScriptSetPhysicsStatus(true);
197  
198 m_scene.LinkObjects(m_ownerId, m_so1.LocalId, new List<uint>() { m_so2.LocalId });
199  
200 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.Physics));
201 Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.Physics));
202 }
203  
204 /// <summary>
205 /// Test that linking results in the correct physical status for all linkees.
206 /// </summary>
207 [Test]
208 public void TestLinkPhysicsRootPhysicalOnly()
209 {
210 TestHelpers.InMethod();
211  
212 m_scene.AddSceneObject(m_so1);
213 m_scene.AddSceneObject(m_so2);
214  
215 m_so1.ScriptSetPhysicsStatus(true);
216  
217 m_scene.LinkObjects(m_ownerId, m_so1.LocalId, new List<uint>() { m_so2.LocalId });
218  
219 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.Physics));
220 Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.Physics));
221 }
222  
223 /// <summary>
224 /// Test that linking results in the correct physical status for all linkees.
225 /// </summary>
226 [Test]
227 public void TestLinkPhysicsChildPhysicalOnly()
228 {
229 TestHelpers.InMethod();
230  
231 m_scene.AddSceneObject(m_so1);
232 m_scene.AddSceneObject(m_so2);
233  
234 m_so2.ScriptSetPhysicsStatus(true);
235  
236 m_scene.LinkObjects(m_ownerId, m_so1.LocalId, new List<uint>() { m_so2.LocalId });
237  
238 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.None));
239 Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.None));
240 }
241 }
242 }