Add regression TestRezScriptedAttachmentsFromInventory() though this currently only checks for the presence of script items, not for started scripts
parent
56d894ae24
commit
0cb1b0bb4a
|
@ -185,7 +185,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestAddAttachmentFromInventory()
|
public void TestRezAttachmentFromInventory()
|
||||||
{
|
{
|
||||||
TestHelpers.InMethod();
|
TestHelpers.InMethod();
|
||||||
// log4net.Config.XmlConfigurator.Configure();
|
// log4net.Config.XmlConfigurator.Configure();
|
||||||
|
@ -217,6 +217,31 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
||||||
Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(1));
|
Assert.That(scene.GetSceneObjectGroups().Count, Is.EqualTo(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Test specific conditions associated with rezzing a scripted attachment from inventory.
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public void TestRezScriptedAttachmentFromInventory()
|
||||||
|
{
|
||||||
|
TestHelpers.InMethod();
|
||||||
|
|
||||||
|
Scene scene = CreateDefaultTestScene();
|
||||||
|
UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(scene, 0x1);
|
||||||
|
ScenePresence sp = SceneHelpers.AddScenePresence(scene, ua1.PrincipalID);
|
||||||
|
|
||||||
|
SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, sp.UUID, "att-name", 0x10);
|
||||||
|
TaskInventoryHelpers.AddScript(scene, so.RootPart);
|
||||||
|
InventoryItemBase userItem = UserInventoryHelpers.AddInventoryItem(scene, so, 0x100, 0x1000);
|
||||||
|
|
||||||
|
scene.AttachmentsModule.RezSingleAttachmentFromInventory(sp, userItem.ID, (uint)AttachmentPoint.Chest);
|
||||||
|
|
||||||
|
// TODO: Need to have a test that checks the script is actually started but this involves a lot more
|
||||||
|
// plumbing of the script engine and either pausing for events or more infrastructure to turn off various
|
||||||
|
// script engine delays/asychronicity that isn't helpful in an automated regression testing context.
|
||||||
|
SceneObjectGroup attSo = scene.GetSceneObjectGroup(so.Name);
|
||||||
|
Assert.That(attSo.ContainsScripts(), Is.True);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestDetachAttachmentToGround()
|
public void TestDetachAttachmentToGround()
|
||||||
{
|
{
|
||||||
|
|
|
@ -69,7 +69,7 @@ namespace OpenSim.Tests.Common
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add a blank script to the given part.
|
/// Add a simple script to the given part.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// TODO: Accept input for item and asset IDs to avoid mysterious script failures that try to use any of these
|
/// TODO: Accept input for item and asset IDs to avoid mysterious script failures that try to use any of these
|
||||||
|
@ -81,6 +81,7 @@ namespace OpenSim.Tests.Common
|
||||||
public static TaskInventoryItem AddScript(Scene scene, SceneObjectPart part)
|
public static TaskInventoryItem AddScript(Scene scene, SceneObjectPart part)
|
||||||
{
|
{
|
||||||
AssetScriptText ast = new AssetScriptText();
|
AssetScriptText ast = new AssetScriptText();
|
||||||
|
ast.Source = "default { state_entry() {} }";
|
||||||
ast.Encode();
|
ast.Encode();
|
||||||
|
|
||||||
UUID assetUuid = new UUID("00000000-0000-0000-1000-000000000000");
|
UUID assetUuid = new UUID("00000000-0000-0000-1000-000000000000");
|
||||||
|
|
|
@ -42,6 +42,57 @@ namespace OpenSim.Tests.Common
|
||||||
{
|
{
|
||||||
public static readonly string PATH_DELIMITER = "/";
|
public static readonly string PATH_DELIMITER = "/";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add an existing scene object as an item in the user's inventory.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name='scene'></param>
|
||||||
|
/// <param name='so'></param>
|
||||||
|
/// <param name='inventoryIdTail'></param>
|
||||||
|
/// <param name='assetIdTail'></param>
|
||||||
|
/// <returns>The inventory item created.</returns>
|
||||||
|
public static InventoryItemBase AddInventoryItem(
|
||||||
|
Scene scene, SceneObjectGroup so, int inventoryIdTail, int assetIdTail)
|
||||||
|
{
|
||||||
|
return AddInventoryItem(
|
||||||
|
scene,
|
||||||
|
so.Name,
|
||||||
|
TestHelpers.ParseTail(inventoryIdTail),
|
||||||
|
InventoryType.Object,
|
||||||
|
AssetHelpers.CreateAsset(TestHelpers.ParseTail(assetIdTail), so),
|
||||||
|
so.OwnerID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a notecard in the objects folder and specify an item id.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="scene"></param>
|
||||||
|
/// <param name="itemName"></param>
|
||||||
|
/// <param name="itemId"></param>
|
||||||
|
/// <param name="itemType"></param>
|
||||||
|
/// <param name="asset">The serialized asset for this item</param>
|
||||||
|
/// <param name="userId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private static InventoryItemBase AddInventoryItem(
|
||||||
|
Scene scene, string itemName, UUID itemId, InventoryType itemType, AssetBase asset, UUID userId)
|
||||||
|
{
|
||||||
|
scene.AssetService.Store(asset);
|
||||||
|
|
||||||
|
InventoryItemBase item = new InventoryItemBase();
|
||||||
|
item.Name = itemName;
|
||||||
|
item.AssetID = asset.FullID;
|
||||||
|
item.ID = itemId;
|
||||||
|
item.Owner = userId;
|
||||||
|
item.AssetType = asset.Type;
|
||||||
|
item.InvType = (int)itemType;
|
||||||
|
|
||||||
|
InventoryFolderBase folder = scene.InventoryService.GetFolderForType(userId, (AssetType)asset.Type);
|
||||||
|
|
||||||
|
item.Folder = folder.ID;
|
||||||
|
scene.AddInventoryItem(item);
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a notecard in the objects folder and specify an item id.
|
/// Creates a notecard in the objects folder and specify an item id.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -81,42 +132,27 @@ namespace OpenSim.Tests.Common
|
||||||
/// <param name="type">Type of item to create</param>
|
/// <param name="type">Type of item to create</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static InventoryItemBase CreateInventoryItem(
|
public static InventoryItemBase CreateInventoryItem(
|
||||||
Scene scene, string itemName, UUID itemId, UUID assetId, UUID userId, InventoryType type)
|
Scene scene, string itemName, UUID itemId, UUID assetId, UUID userId, InventoryType itemType)
|
||||||
{
|
{
|
||||||
AssetBase asset = null;
|
AssetBase asset = null;
|
||||||
|
|
||||||
if (type == InventoryType.Notecard)
|
if (itemType == InventoryType.Notecard)
|
||||||
{
|
{
|
||||||
asset = AssetHelpers.CreateNotecardAsset();
|
asset = AssetHelpers.CreateNotecardAsset();
|
||||||
asset.CreatorID = userId.ToString();
|
asset.CreatorID = userId.ToString();
|
||||||
}
|
}
|
||||||
else if (type == InventoryType.Object)
|
else if (itemType == InventoryType.Object)
|
||||||
{
|
{
|
||||||
asset = AssetHelpers.CreateAsset(assetId, SceneHelpers.CreateSceneObject(1, userId));
|
asset = AssetHelpers.CreateAsset(assetId, SceneHelpers.CreateSceneObject(1, userId));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format("Inventory type {0} not supported", type));
|
throw new Exception(string.Format("Inventory type {0} not supported", itemType));
|
||||||
}
|
}
|
||||||
|
|
||||||
scene.AssetService.Store(asset);
|
return AddInventoryItem(scene, itemName, itemId, itemType, asset, userId);
|
||||||
|
|
||||||
InventoryItemBase item = new InventoryItemBase();
|
|
||||||
item.Name = itemName;
|
|
||||||
item.AssetID = asset.FullID;
|
|
||||||
item.ID = itemId;
|
|
||||||
item.Owner = userId;
|
|
||||||
item.AssetType = asset.Type;
|
|
||||||
item.InvType = (int)type;
|
|
||||||
|
|
||||||
InventoryFolderBase folder = scene.InventoryService.GetFolderForType(userId, AssetType.Notecard);
|
|
||||||
|
|
||||||
item.Folder = folder.ID;
|
|
||||||
scene.AddInventoryItem(item);
|
|
||||||
|
|
||||||
return item;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create inventory folders starting from the user's root folder.
|
/// Create inventory folders starting from the user's root folder.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in New Issue