Improve regression test TestSetAppearance()
parent
bc9952f901
commit
26fe59c35e
|
@ -48,23 +48,103 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
|||
public void TestSetAppearance()
|
||||
{
|
||||
TestHelpers.InMethod();
|
||||
// log4net.Config.XmlConfigurator.Configure();
|
||||
// TestHelpers.EnableLogging();
|
||||
|
||||
UUID userId = TestHelpers.ParseTail(0x1);
|
||||
UUID bakedTextureID = TestHelpers.ParseTail(0x2);
|
||||
|
||||
// We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly
|
||||
// to the AssetService, which will then store temporary and local assets permanently
|
||||
CoreAssetCache assetCache = new CoreAssetCache();
|
||||
|
||||
AvatarFactoryModule afm = new AvatarFactoryModule();
|
||||
TestScene scene = new SceneHelpers().SetupScene();
|
||||
TestScene scene = new SceneHelpers(assetCache).SetupScene();
|
||||
SceneHelpers.SetupSceneModules(scene, afm);
|
||||
ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
|
||||
|
||||
// TODO: Use the actual BunchOfCaps functionality once we slot in the CapabilitiesModules
|
||||
AssetBase bakedTextureAsset;
|
||||
bakedTextureAsset
|
||||
= new AssetBase(
|
||||
bakedTextureID, "Test Baked Texture", (sbyte)AssetType.Texture, userId.ToString());
|
||||
bakedTextureAsset.Data = new byte[] { 2 }; // Not necessary to have a genuine JPEG2000 asset here yet
|
||||
bakedTextureAsset.Temporary = true;
|
||||
bakedTextureAsset.Local = true;
|
||||
scene.AssetService.Store(bakedTextureAsset);
|
||||
|
||||
byte[] visualParams = new byte[AvatarAppearance.VISUALPARAM_COUNT];
|
||||
for (byte i = 0; i < visualParams.Length; i++)
|
||||
visualParams[i] = i;
|
||||
|
||||
// afm.SetAppearance(sp, new Primitive.TextureEntry(TestHelpers.ParseTail(0x10)), visualParams);
|
||||
Primitive.TextureEntry bakedTextureEntry = new Primitive.TextureEntry(TestHelpers.ParseTail(0x10));
|
||||
uint eyesFaceIndex = (uint)AppearanceManager.BakeTypeToAgentTextureIndex(BakeType.Eyes);
|
||||
Primitive.TextureEntryFace eyesFace = bakedTextureEntry.CreateFace(eyesFaceIndex);
|
||||
|
||||
// TODO: Check baked texture
|
||||
// Assert.AreEqual(visualParams, sp.Appearance.VisualParams);
|
||||
int rebakeRequestsReceived = 0;
|
||||
((TestClient)sp.ControllingClient).OnReceivedSendRebakeAvatarTextures += id => rebakeRequestsReceived++;
|
||||
|
||||
// This is the alpha texture
|
||||
eyesFace.TextureID = bakedTextureID;
|
||||
afm.SetAppearance(sp, bakedTextureEntry, visualParams, null);
|
||||
|
||||
Assert.That(rebakeRequestsReceived, Is.EqualTo(0));
|
||||
|
||||
AssetBase eyesBake = scene.AssetService.Get(bakedTextureID.ToString());
|
||||
Assert.That(eyesBake, Is.Not.Null);
|
||||
Assert.That(eyesBake.Temporary, Is.True);
|
||||
Assert.That(eyesBake.Local, Is.True);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test appearance setting where the baked texture UUID are library alpha textures.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// For a mesh avatar, it appears these 'baked textures' are used. So these should not trigger a request to
|
||||
/// rebake.
|
||||
/// </remarks>
|
||||
[Test]
|
||||
public void TestSetAppearanceAlphaBakedTextures()
|
||||
{
|
||||
TestHelpers.InMethod();
|
||||
// TestHelpers.EnableLogging();
|
||||
|
||||
UUID userId = TestHelpers.ParseTail(0x1);
|
||||
UUID alphaTextureID = new UUID("3a367d1c-bef1-6d43-7595-e88c1e3aadb3");
|
||||
|
||||
// We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly
|
||||
// to the AssetService, which will then store temporary and local assets permanently
|
||||
CoreAssetCache assetCache = new CoreAssetCache();
|
||||
|
||||
AvatarFactoryModule afm = new AvatarFactoryModule();
|
||||
TestScene scene = new SceneHelpers(assetCache).SetupScene();
|
||||
SceneHelpers.SetupSceneModules(scene, afm);
|
||||
ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
|
||||
|
||||
AssetBase libraryAsset;
|
||||
libraryAsset
|
||||
= new AssetBase(
|
||||
alphaTextureID, "Default Alpha Layer Texture", (sbyte)AssetType.Texture, userId.ToString());
|
||||
libraryAsset.Data = new byte[] { 2 }; // Not necessary to have a genuine JPEG2000 asset here yet
|
||||
libraryAsset.Temporary = false;
|
||||
libraryAsset.Local = false;
|
||||
scene.AssetService.Store(libraryAsset);
|
||||
|
||||
byte[] visualParams = new byte[AvatarAppearance.VISUALPARAM_COUNT];
|
||||
for (byte i = 0; i < visualParams.Length; i++)
|
||||
visualParams[i] = i;
|
||||
|
||||
Primitive.TextureEntry bakedTextureEntry = new Primitive.TextureEntry(TestHelpers.ParseTail(0x10));
|
||||
uint eyesFaceIndex = (uint)AppearanceManager.BakeTypeToAgentTextureIndex(BakeType.Eyes);
|
||||
Primitive.TextureEntryFace eyesFace = bakedTextureEntry.CreateFace(eyesFaceIndex);
|
||||
|
||||
int rebakeRequestsReceived = 0;
|
||||
((TestClient)sp.ControllingClient).OnReceivedSendRebakeAvatarTextures += id => rebakeRequestsReceived++;
|
||||
|
||||
// This is the alpha texture
|
||||
eyesFace.TextureID = alphaTextureID;
|
||||
afm.SetAppearance(sp, bakedTextureEntry, visualParams, null);
|
||||
|
||||
Assert.That(rebakeRequestsReceived, Is.EqualTo(0));
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -114,58 +194,5 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
|||
Assert.That(eyesBake.Temporary, Is.False);
|
||||
Assert.That(eyesBake.Local, Is.False);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test appearance setting where the baked texture UUID are library alpha textures.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// For a mesh avatar, it appears these 'baked textures' are used. So these should not trigger a request to
|
||||
/// rebake.
|
||||
/// </remarks>
|
||||
[Test]
|
||||
public void TestSetAppearanceAlphaBakedTextures()
|
||||
{
|
||||
TestHelpers.InMethod();
|
||||
// TestHelpers.EnableLogging();
|
||||
|
||||
UUID userId = TestHelpers.ParseTail(0x1);
|
||||
UUID alphaTextureID = new UUID("3a367d1c-bef1-6d43-7595-e88c1e3aadb3");
|
||||
|
||||
|
||||
// We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly
|
||||
// to the AssetService, which will then store temporary and local assets permanently
|
||||
CoreAssetCache assetCache = new CoreAssetCache();
|
||||
|
||||
AvatarFactoryModule afm = new AvatarFactoryModule();
|
||||
TestScene scene = new SceneHelpers(assetCache).SetupScene();
|
||||
SceneHelpers.SetupSceneModules(scene, afm);
|
||||
ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId);
|
||||
|
||||
AssetBase libraryAsset;
|
||||
libraryAsset
|
||||
= new AssetBase(
|
||||
alphaTextureID, "Default Alpha Layer Texturee", (sbyte)AssetType.Texture, userId.ToString());
|
||||
libraryAsset.Data = new byte[] { 2 }; // Not necessary to have a genuine JPEG2000 asset here yet
|
||||
libraryAsset.Temporary = false;
|
||||
libraryAsset.Local = false;
|
||||
scene.AssetService.Store(libraryAsset);
|
||||
|
||||
byte[] visualParams = new byte[AvatarAppearance.VISUALPARAM_COUNT];
|
||||
for (byte i = 0; i < visualParams.Length; i++)
|
||||
visualParams[i] = i;
|
||||
|
||||
Primitive.TextureEntry bakedTextureEntry = new Primitive.TextureEntry(TestHelpers.ParseTail(0x10));
|
||||
uint eyesFaceIndex = (uint)AppearanceManager.BakeTypeToAgentTextureIndex(BakeType.Eyes);
|
||||
Primitive.TextureEntryFace eyesFace = bakedTextureEntry.CreateFace(eyesFaceIndex);
|
||||
|
||||
int rebakeRequestsReceived = 0;
|
||||
((TestClient)sp.ControllingClient).OnReceivedSendRebakeAvatarTextures += id => rebakeRequestsReceived++;
|
||||
|
||||
// This is the alpha texture
|
||||
eyesFace.TextureID = alphaTextureID;
|
||||
afm.SetAppearance(sp, bakedTextureEntry, visualParams, null);
|
||||
|
||||
Assert.That(rebakeRequestsReceived, Is.EqualTo(0));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue