diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs index 9378e20..e6d5a2f 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs | |||
@@ -31,10 +31,8 @@ using System.Reflection; | |||
31 | using NUnit.Framework; | 31 | using NUnit.Framework; |
32 | using OpenMetaverse; | 32 | using OpenMetaverse; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Communications; | ||
35 | using OpenSim.Region.Framework.Scenes; | 34 | using OpenSim.Region.Framework.Scenes; |
36 | using OpenSim.Tests.Common; | 35 | using OpenSim.Tests.Common; |
37 | using OpenSim.Tests.Common.Mock; | ||
38 | using log4net; | 36 | using log4net; |
39 | 37 | ||
40 | namespace OpenSim.Region.Framework.Scenes.Tests | 38 | namespace OpenSim.Region.Framework.Scenes.Tests |
@@ -91,7 +89,12 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
91 | grp2.RootPart.ClearUpdateSchedule(); | 89 | grp2.RootPart.ClearUpdateSchedule(); |
92 | 90 | ||
93 | // Link grp2 to grp1. part2 becomes child prim to grp1. grp2 is eliminated. | 91 | // Link grp2 to grp1. part2 becomes child prim to grp1. grp2 is eliminated. |
92 | Assert.IsFalse(grp1.GroupContainsForeignPrims); | ||
94 | grp1.LinkToGroup(grp2); | 93 | grp1.LinkToGroup(grp2); |
94 | Assert.IsTrue(grp1.GroupContainsForeignPrims); | ||
95 | |||
96 | scene.Backup(true); | ||
97 | Assert.IsFalse(grp1.GroupContainsForeignPrims); | ||
95 | 98 | ||
96 | // FIXME: Can't do this test yet since group 2 still has its root part! We can't yet null this since | 99 | // FIXME: Can't do this test yet since group 2 still has its root part! We can't yet null this since |
97 | // it might cause SOG.ProcessBackup() to fail due to the race condition. This really needs to be fixed. | 100 | // it might cause SOG.ProcessBackup() to fail due to the race condition. This really needs to be fixed. |
@@ -143,7 +146,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
143 | 146 | ||
144 | Assert.That(grp1.Parts.Length, Is.EqualTo(1), "Group 1 still contained part2 after delink."); | 147 | Assert.That(grp1.Parts.Length, Is.EqualTo(1), "Group 1 still contained part2 after delink."); |
145 | Assert.That(part2.AbsolutePosition == Vector3.Zero, "The absolute position should be zero"); | 148 | Assert.That(part2.AbsolutePosition == Vector3.Zero, "The absolute position should be zero"); |
146 | Assert.That(grp3.HasGroupChangedDueToDelink, Is.True); | 149 | Assert.NotNull(grp3); |
147 | } | 150 | } |
148 | 151 | ||
149 | [Test] | 152 | [Test] |
@@ -335,30 +338,34 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
335 | SceneObjectPart rootPart | 338 | SceneObjectPart rootPart |
336 | = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) | 339 | = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) |
337 | { Name = rootPartName, UUID = rootPartUuid }; | 340 | { Name = rootPartName, UUID = rootPartUuid }; |
341 | |||
338 | SceneObjectPart linkPart | 342 | SceneObjectPart linkPart |
339 | = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) | 343 | = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) |
340 | { Name = linkPartName, UUID = linkPartUuid }; | 344 | { Name = linkPartName, UUID = linkPartUuid }; |
345 | SceneObjectGroup linkGroup = new SceneObjectGroup(linkPart); | ||
346 | scene.AddNewSceneObject(linkGroup, true); | ||
341 | 347 | ||
342 | SceneObjectGroup sog = new SceneObjectGroup(rootPart); | 348 | SceneObjectGroup sog = new SceneObjectGroup(rootPart); |
343 | sog.AddPart(linkPart); | 349 | scene.AddNewSceneObject(sog, true); |
344 | scene.AddNewSceneObject(sog, true); | 350 | |
345 | 351 | Assert.IsFalse(sog.GroupContainsForeignPrims); | |
346 | // In a test, we have to crank the backup handle manually. Normally this would be done by the timer invoked | 352 | sog.LinkToGroup(linkGroup); |
347 | // scene backup thread. | 353 | Assert.IsTrue(sog.GroupContainsForeignPrims); |
354 | |||
348 | scene.Backup(true); | 355 | scene.Backup(true); |
349 | 356 | Assert.AreEqual(1, scene.SimulationDataService.LoadObjects(scene.RegionInfo.RegionID).Count); | |
357 | |||
350 | // These changes should occur immediately without waiting for a backup pass | 358 | // These changes should occur immediately without waiting for a backup pass |
351 | SceneObjectGroup groupToDelete = sog.DelinkFromGroup(linkPart, false); | 359 | SceneObjectGroup groupToDelete = sog.DelinkFromGroup(linkPart, false); |
352 | 360 | Assert.IsFalse(groupToDelete.GroupContainsForeignPrims); | |
353 | Assert.That(groupToDelete.HasGroupChangedDueToDelink, Is.True); | 361 | |
354 | scene.DeleteSceneObject(groupToDelete, false); | 362 | scene.DeleteSceneObject(groupToDelete, false); |
355 | Assert.That(groupToDelete.HasGroupChangedDueToDelink, Is.False); | ||
356 | 363 | ||
357 | List<SceneObjectGroup> storedObjects = scene.SimulationDataService.LoadObjects(scene.RegionInfo.RegionID); | 364 | List<SceneObjectGroup> storedObjects = scene.SimulationDataService.LoadObjects(scene.RegionInfo.RegionID); |
358 | 365 | ||
359 | Assert.That(storedObjects.Count, Is.EqualTo(1)); | 366 | Assert.AreEqual(1, storedObjects.Count); |
360 | Assert.That(storedObjects[0].Parts.Length, Is.EqualTo(1)); | 367 | Assert.AreEqual(1, storedObjects[0].Parts.Length); |
361 | Assert.That(storedObjects[0].ContainsPart(rootPartUuid)); | 368 | Assert.IsTrue(storedObjects[0].ContainsPart(rootPartUuid)); |
362 | } | 369 | } |
363 | } | 370 | } |
364 | } | 371 | } |