opensim – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 eva 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 TestSetPhantomSinglePrim()
62 {
63 TestHelpers.InMethod();
64  
65 m_scene.AddSceneObject(m_so1);
66  
67 SceneObjectPart rootPart = m_so1.RootPart;
68 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
69  
70 m_so1.ScriptSetPhantomStatus(true);
71  
72 // Console.WriteLine("so.RootPart.Flags [{0}]", so.RootPart.Flags);
73 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Phantom));
74  
75 m_so1.ScriptSetPhantomStatus(false);
76  
77 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
78 }
79  
80 [Test]
81 public void TestSetNonPhysicsVolumeDetectSinglePrim()
82 {
83 TestHelpers.InMethod();
84  
85 m_scene.AddSceneObject(m_so1);
86  
87 SceneObjectPart rootPart = m_so1.RootPart;
88 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
89  
90 m_so1.ScriptSetVolumeDetect(true);
91  
92 // Console.WriteLine("so.RootPart.Flags [{0}]", so.RootPart.Flags);
93 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Phantom));
94  
95 m_so1.ScriptSetVolumeDetect(false);
96  
97 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
98 }
99  
100 [Test]
101 public void TestSetPhysicsSinglePrim()
102 {
103 TestHelpers.InMethod();
104  
105 m_scene.AddSceneObject(m_so1);
106  
107 SceneObjectPart rootPart = m_so1.RootPart;
108 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
109  
110 m_so1.ScriptSetPhysicsStatus(true);
111  
112 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Physics));
113  
114 m_so1.ScriptSetPhysicsStatus(false);
115  
116 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
117 }
118  
119 [Test]
120 public void TestSetPhysicsVolumeDetectSinglePrim()
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 m_so1.ScriptSetVolumeDetect(true);
131  
132 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Phantom | PrimFlags.Physics));
133  
134 m_so1.ScriptSetVolumeDetect(false);
135  
136 Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Physics));
137 }
138  
139 [Test]
140 public void TestSetPhysicsLinkset()
141 {
142 TestHelpers.InMethod();
143  
144 m_scene.AddSceneObject(m_so1);
145 m_scene.AddSceneObject(m_so2);
146  
147 m_scene.LinkObjects(m_ownerId, m_so1.LocalId, new List<uint>() { m_so2.LocalId });
148  
149 m_so1.ScriptSetPhysicsStatus(true);
150  
151 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.Physics));
152 Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.Physics));
153  
154 m_so1.ScriptSetPhysicsStatus(false);
155  
156 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.None));
157 Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.None));
158  
159 m_so1.ScriptSetPhysicsStatus(true);
160  
161 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.Physics));
162 Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.Physics));
163 }
164  
165 /// <summary>
166 /// Test that linking results in the correct physical status for all linkees.
167 /// </summary>
168 [Test]
169 public void TestLinkPhysicsBothPhysical()
170 {
171 TestHelpers.InMethod();
172  
173 m_scene.AddSceneObject(m_so1);
174 m_scene.AddSceneObject(m_so2);
175  
176 m_so1.ScriptSetPhysicsStatus(true);
177 m_so2.ScriptSetPhysicsStatus(true);
178  
179 m_scene.LinkObjects(m_ownerId, m_so1.LocalId, new List<uint>() { m_so2.LocalId });
180  
181 Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.Physics));
182 Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.Physics));
183 }
184  
185 /// <summary>
186 /// Test that linking results in the correct physical status for all linkees.
187 /// </summary>
188 [Test]
189 public void TestLinkPhysicsRootPhysicalOnly()
190 {
191 TestHelpers.InMethod();
192  
193 m_scene.AddSceneObject(m_so1);
194 m_scene.AddSceneObject(m_so2);
195  
196 m_so1.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 TestLinkPhysicsChildPhysicalOnly()
209 {
210 TestHelpers.InMethod();
211  
212 m_scene.AddSceneObject(m_so1);
213 m_scene.AddSceneObject(m_so2);
214  
215 m_so2.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.None));
220 Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.None));
221 }
222 }
223 }