diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs | 111 |
1 files changed, 69 insertions, 42 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs index b1f26ef..de014ba 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/Tests/AvatarFactoryModuleTests.cs | |||
@@ -48,33 +48,10 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
48 | public void TestSetAppearance() | 48 | public void TestSetAppearance() |
49 | { | 49 | { |
50 | TestHelpers.InMethod(); | 50 | TestHelpers.InMethod(); |
51 | // log4net.Config.XmlConfigurator.Configure(); | 51 | // TestHelpers.EnableLogging(); |
52 | |||
53 | UUID userId = TestHelpers.ParseTail(0x1); | ||
54 | |||
55 | AvatarFactoryModule afm = new AvatarFactoryModule(); | ||
56 | TestScene scene = new SceneHelpers().SetupScene(); | ||
57 | SceneHelpers.SetupSceneModules(scene, afm); | ||
58 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId); | ||
59 | |||
60 | byte[] visualParams = new byte[AvatarAppearance.VISUALPARAM_COUNT]; | ||
61 | for (byte i = 0; i < visualParams.Length; i++) | ||
62 | visualParams[i] = i; | ||
63 | |||
64 | // afm.SetAppearance(sp, new Primitive.TextureEntry(TestHelpers.ParseTail(0x10)), visualParams); | ||
65 | |||
66 | // TODO: Check baked texture | ||
67 | // Assert.AreEqual(visualParams, sp.Appearance.VisualParams); | ||
68 | } | ||
69 | |||
70 | [Test] | ||
71 | public void TestSaveBakedTextures() | ||
72 | { | ||
73 | TestHelpers.InMethod(); | ||
74 | // log4net.Config.XmlConfigurator.Configure(); | ||
75 | 52 | ||
76 | UUID userId = TestHelpers.ParseTail(0x1); | 53 | UUID userId = TestHelpers.ParseTail(0x1); |
77 | UUID eyesTextureId = TestHelpers.ParseTail(0x2); | 54 | UUID bakedTextureID = TestHelpers.ParseTail(0x2); |
78 | 55 | ||
79 | // We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly | 56 | // We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly |
80 | // to the AssetService, which will then store temporary and local assets permanently | 57 | // to the AssetService, which will then store temporary and local assets permanently |
@@ -86,12 +63,14 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
86 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId); | 63 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId); |
87 | 64 | ||
88 | // TODO: Use the actual BunchOfCaps functionality once we slot in the CapabilitiesModules | 65 | // TODO: Use the actual BunchOfCaps functionality once we slot in the CapabilitiesModules |
89 | AssetBase uploadedAsset; | 66 | AssetBase bakedTextureAsset; |
90 | uploadedAsset = new AssetBase(eyesTextureId, "Baked Texture", (sbyte)AssetType.Texture, userId.ToString()); | 67 | bakedTextureAsset |
91 | uploadedAsset.Data = new byte[] { 2 }; | 68 | = new AssetBase( |
92 | uploadedAsset.Temporary = true; | 69 | bakedTextureID, "Test Baked Texture", (sbyte)AssetType.Texture, userId.ToString()); |
93 | uploadedAsset.Local = true; // Local assets aren't persisted, non-local are | 70 | bakedTextureAsset.Data = new byte[] { 2 }; // Not necessary to have a genuine JPEG2000 asset here yet |
94 | scene.AssetService.Store(uploadedAsset); | 71 | bakedTextureAsset.Temporary = true; |
72 | bakedTextureAsset.Local = true; | ||
73 | scene.AssetService.Store(bakedTextureAsset); | ||
95 | 74 | ||
96 | byte[] visualParams = new byte[AvatarAppearance.VISUALPARAM_COUNT]; | 75 | byte[] visualParams = new byte[AvatarAppearance.VISUALPARAM_COUNT]; |
97 | for (byte i = 0; i < visualParams.Length; i++) | 76 | for (byte i = 0; i < visualParams.Length; i++) |
@@ -100,19 +79,20 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
100 | Primitive.TextureEntry bakedTextureEntry = new Primitive.TextureEntry(TestHelpers.ParseTail(0x10)); | 79 | Primitive.TextureEntry bakedTextureEntry = new Primitive.TextureEntry(TestHelpers.ParseTail(0x10)); |
101 | uint eyesFaceIndex = (uint)AppearanceManager.BakeTypeToAgentTextureIndex(BakeType.Eyes); | 80 | uint eyesFaceIndex = (uint)AppearanceManager.BakeTypeToAgentTextureIndex(BakeType.Eyes); |
102 | Primitive.TextureEntryFace eyesFace = bakedTextureEntry.CreateFace(eyesFaceIndex); | 81 | Primitive.TextureEntryFace eyesFace = bakedTextureEntry.CreateFace(eyesFaceIndex); |
103 | eyesFace.TextureID = eyesTextureId; | ||
104 | 82 | ||
105 | afm.SetAppearance(sp, bakedTextureEntry, visualParams, null); | 83 | int rebakeRequestsReceived = 0; |
106 | afm.SaveBakedTextures(userId); | 84 | ((TestClient)sp.ControllingClient).OnReceivedSendRebakeAvatarTextures += id => rebakeRequestsReceived++; |
107 | // Dictionary<BakeType, Primitive.TextureEntryFace> bakedTextures = afm.GetBakedTextureFaces(userId); | ||
108 | 85 | ||
109 | // We should also inpsect the asset data store layer directly, but this is difficult to get at right now. | 86 | // This is the alpha texture |
110 | assetCache.Clear(); | 87 | eyesFace.TextureID = bakedTextureID; |
88 | afm.SetAppearance(sp, bakedTextureEntry, visualParams, null); | ||
89 | |||
90 | Assert.That(rebakeRequestsReceived, Is.EqualTo(0)); | ||
111 | 91 | ||
112 | AssetBase eyesBake = scene.AssetService.Get(eyesTextureId.ToString()); | 92 | AssetBase eyesBake = scene.AssetService.Get(bakedTextureID.ToString()); |
113 | Assert.That(eyesBake, Is.Not.Null); | 93 | Assert.That(eyesBake, Is.Not.Null); |
114 | Assert.That(eyesBake.Temporary, Is.False); | 94 | Assert.That(eyesBake.Temporary, Is.True); |
115 | Assert.That(eyesBake.Local, Is.False); | 95 | Assert.That(eyesBake.Local, Is.True); |
116 | } | 96 | } |
117 | 97 | ||
118 | /// <summary> | 98 | /// <summary> |
@@ -131,7 +111,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
131 | UUID userId = TestHelpers.ParseTail(0x1); | 111 | UUID userId = TestHelpers.ParseTail(0x1); |
132 | UUID alphaTextureID = new UUID("3a367d1c-bef1-6d43-7595-e88c1e3aadb3"); | 112 | UUID alphaTextureID = new UUID("3a367d1c-bef1-6d43-7595-e88c1e3aadb3"); |
133 | 113 | ||
134 | |||
135 | // We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly | 114 | // We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly |
136 | // to the AssetService, which will then store temporary and local assets permanently | 115 | // to the AssetService, which will then store temporary and local assets permanently |
137 | CoreAssetCache assetCache = new CoreAssetCache(); | 116 | CoreAssetCache assetCache = new CoreAssetCache(); |
@@ -144,7 +123,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
144 | AssetBase libraryAsset; | 123 | AssetBase libraryAsset; |
145 | libraryAsset | 124 | libraryAsset |
146 | = new AssetBase( | 125 | = new AssetBase( |
147 | alphaTextureID, "Default Alpha Layer Texturee", (sbyte)AssetType.Texture, userId.ToString()); | 126 | alphaTextureID, "Default Alpha Layer Texture", (sbyte)AssetType.Texture, userId.ToString()); |
148 | libraryAsset.Data = new byte[] { 2 }; // Not necessary to have a genuine JPEG2000 asset here yet | 127 | libraryAsset.Data = new byte[] { 2 }; // Not necessary to have a genuine JPEG2000 asset here yet |
149 | libraryAsset.Temporary = false; | 128 | libraryAsset.Temporary = false; |
150 | libraryAsset.Local = false; | 129 | libraryAsset.Local = false; |
@@ -167,5 +146,53 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
167 | 146 | ||
168 | Assert.That(rebakeRequestsReceived, Is.EqualTo(0)); | 147 | Assert.That(rebakeRequestsReceived, Is.EqualTo(0)); |
169 | } | 148 | } |
149 | |||
150 | [Test] | ||
151 | public void TestSaveBakedTextures() | ||
152 | { | ||
153 | TestHelpers.InMethod(); | ||
154 | // log4net.Config.XmlConfigurator.Configure(); | ||
155 | |||
156 | UUID userId = TestHelpers.ParseTail(0x1); | ||
157 | UUID eyesTextureId = TestHelpers.ParseTail(0x2); | ||
158 | |||
159 | // We need an asset cache because otherwise the LocalAssetServiceConnector will short-circuit directly | ||
160 | // to the AssetService, which will then store temporary and local assets permanently | ||
161 | CoreAssetCache assetCache = new CoreAssetCache(); | ||
162 | |||
163 | AvatarFactoryModule afm = new AvatarFactoryModule(); | ||
164 | TestScene scene = new SceneHelpers(assetCache).SetupScene(); | ||
165 | SceneHelpers.SetupSceneModules(scene, afm); | ||
166 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, userId); | ||
167 | |||
168 | // TODO: Use the actual BunchOfCaps functionality once we slot in the CapabilitiesModules | ||
169 | AssetBase uploadedAsset; | ||
170 | uploadedAsset = new AssetBase(eyesTextureId, "Baked Texture", (sbyte)AssetType.Texture, userId.ToString()); | ||
171 | uploadedAsset.Data = new byte[] { 2 }; | ||
172 | uploadedAsset.Temporary = true; | ||
173 | uploadedAsset.Local = true; // Local assets aren't persisted, non-local are | ||
174 | scene.AssetService.Store(uploadedAsset); | ||
175 | |||
176 | byte[] visualParams = new byte[AvatarAppearance.VISUALPARAM_COUNT]; | ||
177 | for (byte i = 0; i < visualParams.Length; i++) | ||
178 | visualParams[i] = i; | ||
179 | |||
180 | Primitive.TextureEntry bakedTextureEntry = new Primitive.TextureEntry(TestHelpers.ParseTail(0x10)); | ||
181 | uint eyesFaceIndex = (uint)AppearanceManager.BakeTypeToAgentTextureIndex(BakeType.Eyes); | ||
182 | Primitive.TextureEntryFace eyesFace = bakedTextureEntry.CreateFace(eyesFaceIndex); | ||
183 | eyesFace.TextureID = eyesTextureId; | ||
184 | |||
185 | afm.SetAppearance(sp, bakedTextureEntry, visualParams, null); | ||
186 | afm.SaveBakedTextures(userId); | ||
187 | // Dictionary<BakeType, Primitive.TextureEntryFace> bakedTextures = afm.GetBakedTextureFaces(userId); | ||
188 | |||
189 | // We should also inpsect the asset data store layer directly, but this is difficult to get at right now. | ||
190 | assetCache.Clear(); | ||
191 | |||
192 | AssetBase eyesBake = scene.AssetService.Get(eyesTextureId.ToString()); | ||
193 | Assert.That(eyesBake, Is.Not.Null); | ||
194 | Assert.That(eyesBake.Temporary, Is.False); | ||
195 | Assert.That(eyesBake.Local, Is.False); | ||
196 | } | ||
170 | } | 197 | } |
171 | } \ No newline at end of file | 198 | } \ No newline at end of file |