aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Serialiser
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2014-08-29 18:06:29 +0100
committerJustin Clark-Casey (justincc)2014-08-29 18:06:29 +0100
commit305c3e668a36f8a53582d57a0eee79084c62a280 (patch)
tree1cb14dbbb676b5b7e6d8dcb7cee9b290b659d62d /OpenSim/Region/CoreModules/World/Serialiser
parentminor: Eliminate more unnecessary code copying individual parameters for Vect... (diff)
downloadopensim-SC-305c3e668a36f8a53582d57a0eee79084c62a280.zip
opensim-SC-305c3e668a36f8a53582d57a0eee79084c62a280.tar.gz
opensim-SC-305c3e668a36f8a53582d57a0eee79084c62a280.tar.bz2
opensim-SC-305c3e668a36f8a53582d57a0eee79084c62a280.tar.xz
Add regression test for deserializing xml objects with more than one non-root part.
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Serialiser')
-rw-r--r--OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs533
1 files changed, 406 insertions, 127 deletions
diff --git a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs
index 66059fb..52203f7 100644
--- a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs
+++ b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs
@@ -27,6 +27,7 @@
27 27
28using System.Collections.Generic; 28using System.Collections.Generic;
29using System.IO; 29using System.IO;
30using System.Text;
30using System.Xml; 31using System.Xml;
31using log4net.Config; 32using log4net.Config;
32using NUnit.Framework; 33using NUnit.Framework;
@@ -42,128 +43,351 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests
42 [TestFixture] 43 [TestFixture]
43 public class SerialiserTests : OpenSimTestCase 44 public class SerialiserTests : OpenSimTestCase
44 { 45 {
45 private string xml = @" 46 private const string ObjectRootPartStubXml =
46 <SceneObjectGroup> 47@"<SceneObjectGroup>
47 <RootPart> 48 <RootPart>
48 <SceneObjectPart xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> 49 <SceneObjectPart xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
49 <AllowedDrop>false</AllowedDrop> 50 <AllowedDrop>false</AllowedDrop>
50 <CreatorID><Guid>a6dacf01-4636-4bb9-8a97-30609438af9d</Guid></CreatorID> 51 <CreatorID><Guid>a6dacf01-4636-4bb9-8a97-30609438af9d</Guid></CreatorID>
51 <FolderID><Guid>e6a5a05e-e8cc-4816-8701-04165e335790</Guid></FolderID> 52 <FolderID><Guid>e6a5a05e-e8cc-4816-8701-04165e335790</Guid></FolderID>
52 <InventorySerial>1</InventorySerial> 53 <InventorySerial>1</InventorySerial>
53 <TaskInventory /> 54 <TaskInventory />
54 <ObjectFlags>0</ObjectFlags> 55 <ObjectFlags>0</ObjectFlags>
55 <UUID><Guid>e6a5a05e-e8cc-4816-8701-04165e335790</Guid></UUID> 56 <UUID><Guid>e6a5a05e-e8cc-4816-8701-04165e335790</Guid></UUID>
56 <LocalId>2698615125</LocalId> 57 <LocalId>2698615125</LocalId>
57 <Name>PrimMyRide</Name> 58 <Name>PrimMyRide</Name>
58 <Material>0</Material> 59 <Material>0</Material>
59 <PassTouches>false</PassTouches> 60 <PassTouches>false</PassTouches>
60 <RegionHandle>1099511628032000</RegionHandle> 61 <RegionHandle>1099511628032000</RegionHandle>
61 <ScriptAccessPin>0</ScriptAccessPin> 62 <ScriptAccessPin>0</ScriptAccessPin>
62 <GroupPosition><X>147.23</X><Y>92.698</Y><Z>22.78084</Z></GroupPosition> 63 <GroupPosition><X>147.23</X><Y>92.698</Y><Z>22.78084</Z></GroupPosition>
63 <OffsetPosition><X>0</X><Y>0</Y><Z>0</Z></OffsetPosition> 64 <OffsetPosition><X>0</X><Y>0</Y><Z>0</Z></OffsetPosition>
64 <RotationOffset><X>-4.371139E-08</X><Y>-1</Y><Z>-4.371139E-08</Z><W>0</W></RotationOffset> 65 <RotationOffset><X>-4.371139E-08</X><Y>-1</Y><Z>-4.371139E-08</Z><W>0</W></RotationOffset>
65 <Velocity><X>0</X><Y>0</Y><Z>0</Z></Velocity> 66 <Velocity><X>0</X><Y>0</Y><Z>0</Z></Velocity>
66 <RotationalVelocity><X>0</X><Y>0</Y><Z>0</Z></RotationalVelocity> 67 <RotationalVelocity><X>0</X><Y>0</Y><Z>0</Z></RotationalVelocity>
67 <AngularVelocity><X>0</X><Y>0</Y><Z>0</Z></AngularVelocity> 68 <AngularVelocity><X>0</X><Y>0</Y><Z>0</Z></AngularVelocity>
68 <Acceleration><X>0</X><Y>0</Y><Z>0</Z></Acceleration> 69 <Acceleration><X>0</X><Y>0</Y><Z>0</Z></Acceleration>
69 <Description /> 70 <Description />
70 <Color /> 71 <Color />
71 <Text /> 72 <Text />
72 <SitName /> 73 <SitName />
73 <TouchName /> 74 <TouchName />
74 <LinkNum>0</LinkNum> 75 <LinkNum>0</LinkNum>
75 <ClickAction>0</ClickAction> 76 <ClickAction>0</ClickAction>
76 <Shape> 77 <Shape>
77 <ProfileCurve>1</ProfileCurve> 78 <ProfileCurve>1</ProfileCurve>
78 <TextureEntry>AAAAAAAAERGZmQAAAAAABQCVlZUAAAAAQEAAAABAQAAAAAAAAAAAAAAAAAAAAA==</TextureEntry> 79 <TextureEntry>AAAAAAAAERGZmQAAAAAABQCVlZUAAAAAQEAAAABAQAAAAAAAAAAAAAAAAAAAAA==</TextureEntry>
79 <ExtraParams>AA==</ExtraParams> 80 <ExtraParams>AA==</ExtraParams>
80 <PathBegin>0</PathBegin> 81 <PathBegin>0</PathBegin>
81 <PathCurve>16</PathCurve> 82 <PathCurve>16</PathCurve>
82 <PathEnd>0</PathEnd> 83 <PathEnd>0</PathEnd>
83 <PathRadiusOffset>0</PathRadiusOffset> 84 <PathRadiusOffset>0</PathRadiusOffset>
84 <PathRevolutions>0</PathRevolutions> 85 <PathRevolutions>0</PathRevolutions>
85 <PathScaleX>100</PathScaleX> 86 <PathScaleX>100</PathScaleX>
86 <PathScaleY>100</PathScaleY> 87 <PathScaleY>100</PathScaleY>
87 <PathShearX>0</PathShearX> 88 <PathShearX>0</PathShearX>
88 <PathShearY>0</PathShearY> 89 <PathShearY>0</PathShearY>
89 <PathSkew>0</PathSkew> 90 <PathSkew>0</PathSkew>
90 <PathTaperX>0</PathTaperX> 91 <PathTaperX>0</PathTaperX>
91 <PathTaperY>0</PathTaperY> 92 <PathTaperY>0</PathTaperY>
92 <PathTwist>0</PathTwist> 93 <PathTwist>0</PathTwist>
93 <PathTwistBegin>0</PathTwistBegin> 94 <PathTwistBegin>0</PathTwistBegin>
94 <PCode>9</PCode> 95 <PCode>9</PCode>
95 <ProfileBegin>0</ProfileBegin> 96 <ProfileBegin>0</ProfileBegin>
96 <ProfileEnd>0</ProfileEnd> 97 <ProfileEnd>0</ProfileEnd>
97 <ProfileHollow>0</ProfileHollow> 98 <ProfileHollow>0</ProfileHollow>
98 <Scale><X>10</X><Y>10</Y><Z>0.5</Z></Scale> 99 <Scale><X>10</X><Y>10</Y><Z>0.5</Z></Scale>
99 <State>0</State> 100 <State>0</State>
100 <ProfileShape>Square</ProfileShape> 101 <ProfileShape>Square</ProfileShape>
101 <HollowShape>Same</HollowShape> 102 <HollowShape>Same</HollowShape>
102 <SculptTexture><Guid>00000000-0000-0000-0000-000000000000</Guid></SculptTexture> 103 <SculptTexture><Guid>00000000-0000-0000-0000-000000000000</Guid></SculptTexture>
103 <SculptType>0</SculptType><SculptData /> 104 <SculptType>0</SculptType><SculptData />
104 <FlexiSoftness>0</FlexiSoftness> 105 <FlexiSoftness>0</FlexiSoftness>
105 <FlexiTension>0</FlexiTension> 106 <FlexiTension>0</FlexiTension>
106 <FlexiDrag>0</FlexiDrag> 107 <FlexiDrag>0</FlexiDrag>
107 <FlexiGravity>0</FlexiGravity> 108 <FlexiGravity>0</FlexiGravity>
108 <FlexiWind>0</FlexiWind> 109 <FlexiWind>0</FlexiWind>
109 <FlexiForceX>0</FlexiForceX> 110 <FlexiForceX>0</FlexiForceX>
110 <FlexiForceY>0</FlexiForceY> 111 <FlexiForceY>0</FlexiForceY>
111 <FlexiForceZ>0</FlexiForceZ> 112 <FlexiForceZ>0</FlexiForceZ>
112 <LightColorR>0</LightColorR> 113 <LightColorR>0</LightColorR>
113 <LightColorG>0</LightColorG> 114 <LightColorG>0</LightColorG>
114 <LightColorB>0</LightColorB> 115 <LightColorB>0</LightColorB>
115 <LightColorA>1</LightColorA> 116 <LightColorA>1</LightColorA>
116 <LightRadius>0</LightRadius> 117 <LightRadius>0</LightRadius>
117 <LightCutoff>0</LightCutoff> 118 <LightCutoff>0</LightCutoff>
118 <LightFalloff>0</LightFalloff> 119 <LightFalloff>0</LightFalloff>
119 <LightIntensity>1</LightIntensity> 120 <LightIntensity>1</LightIntensity>
120 <FlexiEntry>false</FlexiEntry> 121 <FlexiEntry>false</FlexiEntry>
121 <LightEntry>false</LightEntry> 122 <LightEntry>false</LightEntry>
122 <SculptEntry>false</SculptEntry> 123 <SculptEntry>false</SculptEntry>
123 </Shape> 124 </Shape>
124 <Scale><X>10</X><Y>10</Y><Z>0.5</Z></Scale> 125 <Scale><X>10</X><Y>10</Y><Z>0.5</Z></Scale>
125 <UpdateFlag>0</UpdateFlag> 126 <UpdateFlag>0</UpdateFlag>
126 <SitTargetOrientation><X>0</X><Y>0</Y><Z>0</Z><W>1</W></SitTargetOrientation> 127 <SitTargetOrientation><X>0</X><Y>0</Y><Z>0</Z><W>1</W></SitTargetOrientation>
127 <SitTargetPosition><X>0</X><Y>0</Y><Z>0</Z></SitTargetPosition> 128 <SitTargetPosition><X>0</X><Y>0</Y><Z>0</Z></SitTargetPosition>
128 <SitTargetPositionLL><X>0</X><Y>0</Y><Z>0</Z></SitTargetPositionLL> 129 <SitTargetPositionLL><X>0</X><Y>0</Y><Z>0</Z></SitTargetPositionLL>
129 <SitTargetOrientationLL><X>0</X><Y>0</Y><Z>0</Z><W>1</W></SitTargetOrientationLL> 130 <SitTargetOrientationLL><X>0</X><Y>0</Y><Z>0</Z><W>1</W></SitTargetOrientationLL>
130 <ParentID>0</ParentID> 131 <ParentID>0</ParentID>
131 <CreationDate>1211330445</CreationDate> 132 <CreationDate>1211330445</CreationDate>
132 <Category>0</Category> 133 <Category>0</Category>
133 <SalePrice>0</SalePrice> 134 <SalePrice>0</SalePrice>
134 <ObjectSaleType>0</ObjectSaleType> 135 <ObjectSaleType>0</ObjectSaleType>
135 <OwnershipCost>0</OwnershipCost> 136 <OwnershipCost>0</OwnershipCost>
136 <GroupID><Guid>00000000-0000-0000-0000-000000000000</Guid></GroupID> 137 <GroupID><Guid>00000000-0000-0000-0000-000000000000</Guid></GroupID>
137 <OwnerID><Guid>a6dacf01-4636-4bb9-8a97-30609438af9d</Guid></OwnerID> 138 <OwnerID><Guid>a6dacf01-4636-4bb9-8a97-30609438af9d</Guid></OwnerID>
138 <LastOwnerID><Guid>a6dacf01-4636-4bb9-8a97-30609438af9d</Guid></LastOwnerID> 139 <LastOwnerID><Guid>a6dacf01-4636-4bb9-8a97-30609438af9d</Guid></LastOwnerID>
139 <BaseMask>2147483647</BaseMask> 140 <BaseMask>2147483647</BaseMask>
140 <OwnerMask>2147483647</OwnerMask> 141 <OwnerMask>2147483647</OwnerMask>
141 <GroupMask>0</GroupMask> 142 <GroupMask>0</GroupMask>
142 <EveryoneMask>0</EveryoneMask> 143 <EveryoneMask>0</EveryoneMask>
143 <NextOwnerMask>2147483647</NextOwnerMask> 144 <NextOwnerMask>2147483647</NextOwnerMask>
144 <Flags>None</Flags> 145 <Flags>None</Flags>
145 <CollisionSound><Guid>00000000-0000-0000-0000-000000000000</Guid></CollisionSound> 146 <CollisionSound><Guid>00000000-0000-0000-0000-000000000000</Guid></CollisionSound>
146 <CollisionSoundVolume>0</CollisionSoundVolume> 147 <CollisionSoundVolume>0</CollisionSoundVolume>
147 <DynAttrs> 148 <DynAttrs>
148 <llsd> 149 <llsd>
149 <map> 150 <map>
150 <key>MyNamespace</key> 151 <key>MyNamespace</key>
151 <map> 152 <map>
152 <key>MyStore</key> 153 <key>MyStore</key>
153 <map> 154 <map>
154 <key>the answer</key> 155 <key>the answer</key>
155 <integer>42</integer> 156 <integer>42</integer>
156 </map>
157 </map>
158 </map> 157 </map>
159 </llsd> 158 </map>
160 </DynAttrs> 159 </map>
161 </SceneObjectPart> 160 </llsd>
162 </RootPart> 161 </DynAttrs>
163 <OtherParts /> 162 </SceneObjectPart>
164 </SceneObjectGroup>"; 163 </RootPart>";
165 164
166 private string badFloatsXml = @" 165 private const string ObjectWithNoOtherPartsXml = ObjectRootPartStubXml +
166@"
167 <OtherParts />
168</SceneObjectGroup>";
169
170 private const string ObjectWithOtherPartsXml = ObjectRootPartStubXml +
171@"
172 <OtherParts>
173 <Part>
174 <SceneObjectPart xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
175 <AllowedDrop>false</AllowedDrop>
176 <CreatorID><Guid>a6dacf01-4636-4bb9-8a97-30609438af9d</Guid></CreatorID>
177 <FolderID><Guid>9958feb1-02a6-49e4-a4ce-eba6f578ee13</Guid></FolderID>
178 <InventorySerial>3</InventorySerial>
179 <UUID><Guid>9958feb1-02a6-49e4-a4ce-eba6f578ee13</Guid></UUID>
180 <LocalId>1154704500</LocalId>
181 <Name>Alien Head 1</Name>
182 <Material>3</Material>
183 <PassTouches>false</PassTouches>
184 <PassCollisions>false</PassCollisions>
185 <RegionHandle>21990232560640000</RegionHandle>
186 <ScriptAccessPin>0</ScriptAccessPin>
187 <GroupPosition><X>125.5655</X><Y>127.346</Y><Z>22.48036</Z></GroupPosition>
188 <OffsetPosition><X>-0.2171936</X><Y>0.1083984</Y><Z>0.0009994507</Z></OffsetPosition>
189 <RotationOffset><X>-0.5122106</X><Y>0.4851225</Y><Z>-0.4957454</Z><W>0.5064908</W></RotationOffset>
190 <Velocity><X>0</X><Y>0</Y><Z>0</Z></Velocity>
191 <AngularVelocity><X>0</X><Y>0</Y><Z>0</Z></AngularVelocity>
192 <Acceleration><X>0</X><Y>0</Y><Z>0</Z></Acceleration>
193 <Description>(No Description)</Description>
194 <Color><R>0</R><G>0</G><B>0</B><A>255</A></Color>
195 <Text/>
196 <SitName/>
197 <TouchName/>
198 <LinkNum>253</LinkNum>
199 <ClickAction>0</ClickAction>
200 <Shape>
201 <ProfileCurve>5</ProfileCurve>
202 <TextureEntry>Vw3dpvgTRUOiIUOGsnpWlAB/f38AAAAAgL8AAACAPwAAAAAAAAAF4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</TextureEntry>
203 <ExtraParams>AA==</ExtraParams>
204 <PathBegin>0</PathBegin>
205 <PathCurve>32</PathCurve>
206 <PathEnd>0</PathEnd>
207 <PathRadiusOffset>0</PathRadiusOffset>
208 <PathRevolutions>0</PathRevolutions>
209 <PathScaleX>100</PathScaleX>
210 <PathScaleY>100</PathScaleY>
211 <PathShearX>0</PathShearX>
212 <PathShearY>0</PathShearY>
213 <PathSkew>0</PathSkew>
214 <PathTaperX>0</PathTaperX>
215 <PathTaperY>0</PathTaperY>
216 <PathTwist>0</PathTwist>
217 <PathTwistBegin>0</PathTwistBegin>
218 <PCode>9</PCode>
219 <ProfileBegin>0</ProfileBegin>
220 <ProfileEnd>0</ProfileEnd>
221 <ProfileHollow>0</ProfileHollow>
222 <State>9</State>
223 <LastAttachPoint>0</LastAttachPoint>
224 <ProfileShape>HalfCircle</ProfileShape>
225 <HollowShape>Same</HollowShape>
226 <SculptTexture><Guid>00000000-0000-0000-0000-000000000000</Guid></SculptTexture>
227 <SculptType>0</SculptType>
228 <FlexiSoftness>0</FlexiSoftness>
229 <FlexiTension>0</FlexiTension>
230 <FlexiDrag>0</FlexiDrag>
231 <FlexiGravity>0</FlexiGravity>
232 <FlexiWind>0</FlexiWind>
233 <FlexiForceX>0</FlexiForceX>
234 <FlexiForceY>0</FlexiForceY>
235 <FlexiForceZ>0</FlexiForceZ>
236 <LightColorR>0</LightColorR>
237 <LightColorG>0</LightColorG>
238 <LightColorB>0</LightColorB>
239 <LightColorA>1</LightColorA>
240 <LightRadius>0</LightRadius>
241 <LightCutoff>0</LightCutoff>
242 <LightFalloff>0</LightFalloff>
243 <LightIntensity>1</LightIntensity>
244 <FlexiEntry>false</FlexiEntry>
245 <LightEntry>false</LightEntry>
246 <SculptEntry>false</SculptEntry>
247 </Shape>
248 <Scale><X>0.1148195</X><Y>0.0143891</Y><Z>0.02768878</Z></Scale>
249 <SitTargetOrientation><X>0</X><Y>0</Y><Z>0</Z><W>1</W></SitTargetOrientation>
250 <SitTargetPosition><X>0</X><Y>0</Y><Z>0</Z></SitTargetPosition>
251 <SitTargetPositionLL><X>0</X><Y>0</Y><Z>0</Z></SitTargetPositionLL>
252 <SitTargetOrientationLL><X>0</X><Y>0</Y><Z>0</Z><W>1</W></SitTargetOrientationLL>
253 <ParentID>1154704499</ParentID>
254 <CreationDate>1256611042</CreationDate>
255 <Category>0</Category>
256 <SalePrice>10</SalePrice>
257 <ObjectSaleType>0</ObjectSaleType>
258 <OwnershipCost>0</OwnershipCost>
259 <GroupID><Guid>00000000-0000-0000-0000-000000000000</Guid></GroupID>
260 <OwnerID><Guid>7b2022f0-5f19-488c-b7e5-829d8f96b448</Guid></OwnerID>
261 <LastOwnerID><Guid>7b2022f0-5f19-488c-b7e5-829d8f96b448</Guid></LastOwnerID>
262 <BaseMask>647168</BaseMask>
263 <OwnerMask>647168</OwnerMask>
264 <GroupMask>0</GroupMask>
265 <EveryoneMask>0</EveryoneMask>
266 <NextOwnerMask>581632</NextOwnerMask>
267 <Flags>None</Flags>
268 <CollisionSound><Guid>00000000-0000-0000-0000-000000000000</Guid></CollisionSound>
269 <CollisionSoundVolume>0</CollisionSoundVolume>
270 <AttachedPos><X>0</X><Y>0</Y><Z>0</Z></AttachedPos>
271 <TextureAnimation/>
272 <ParticleSystem/>
273 <PayPrice0>-2</PayPrice0>
274 <PayPrice1>-2</PayPrice1>
275 <PayPrice2>-2</PayPrice2>
276 <PayPrice3>-2</PayPrice3>
277 <PayPrice4>-2</PayPrice4>
278 </SceneObjectPart>
279 </Part>
280 <Part>
281 <SceneObjectPart xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
282 <AllowedDrop>false</AllowedDrop>
283 <CreatorID><Guid>a6dacf01-4636-4bb9-8a97-30609438af9d</Guid></CreatorID>
284 <FolderID><Guid>674b6b86-f5aa-439a-8e00-0d75bc08c80a</Guid></FolderID>
285 <InventorySerial>3</InventorySerial>
286 <UUID><Guid>674b6b86-f5aa-439a-8e00-0d75bc08c80a</Guid></UUID>
287 <LocalId>1154704501</LocalId>
288 <Name>Alien Head 2</Name>
289 <Material>3</Material>
290 <PassTouches>false</PassTouches>
291 <PassCollisions>false</PassCollisions>
292 <RegionHandle>21990232560640000</RegionHandle>
293 <ScriptAccessPin>0</ScriptAccessPin>
294 <GroupPosition><X>125.5655</X><Y>127.346</Y><Z>22.48036</Z></GroupPosition>
295 <OffsetPosition><X>-0.2490997</X><Y>0.08520126</Y><Z>0.0009002686</Z></OffsetPosition>
296 <RotationOffset><X>-0.4765368</X><Y>0.5194498</Y><Z>-0.5301372</Z><W>0.4712104</W></RotationOffset>
297 <Velocity><X>0</X><Y>0</Y><Z>0</Z></Velocity>
298 <AngularVelocity><X>0</X><Y>0</Y><Z>0</Z></AngularVelocity>
299 <Acceleration><X>0</X><Y>0</Y><Z>0</Z></Acceleration>
300 <Description>(No Description)</Description>
301 <Color><R>0</R><G>0</G><B>0</B><A>255</A></Color>
302 <Text/>
303 <SitName/>
304 <TouchName/>
305 <LinkNum>252</LinkNum>
306 <ClickAction>0</ClickAction>
307 <Shape>
308 <ProfileCurve>0</ProfileCurve>
309 <TextureEntry>Vw3dpvgTRUOiIUOGsnpWlAB/f38AAAAAgL8AAACAPwAAAAAAAAAF4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</TextureEntry>
310 <ExtraParams>AA==</ExtraParams>
311 <PathBegin>0</PathBegin>
312 <PathCurve>32</PathCurve>
313 <PathEnd>0</PathEnd>
314 <PathRadiusOffset>0</PathRadiusOffset>
315 <PathRevolutions>0</PathRevolutions>
316 <PathScaleX>100</PathScaleX>
317 <PathScaleY>150</PathScaleY>
318 <PathShearX>0</PathShearX>
319 <PathShearY>0</PathShearY>
320 <PathSkew>0</PathSkew>
321 <PathTaperX>0</PathTaperX>
322 <PathTaperY>0</PathTaperY>
323 <PathTwist>0</PathTwist>
324 <PathTwistBegin>0</PathTwistBegin>
325 <PCode>9</PCode>
326 <ProfileBegin>0</ProfileBegin>
327 <ProfileEnd>0</ProfileEnd>
328 <ProfileHollow>0</ProfileHollow>
329 <State>9</State>
330 <LastAttachPoint>0</LastAttachPoint>
331 <ProfileShape>Circle</ProfileShape>
332 <HollowShape>Same</HollowShape>
333 <SculptTexture><Guid>00000000-0000-0000-0000-000000000000</Guid></SculptTexture>
334 <SculptType>0</SculptType>
335 <FlexiSoftness>0</FlexiSoftness>
336 <FlexiTension>0</FlexiTension>
337 <FlexiDrag>0</FlexiDrag>
338 <FlexiGravity>0</FlexiGravity>
339 <FlexiWind>0</FlexiWind>
340 <FlexiForceX>0</FlexiForceX>
341 <FlexiForceY>0</FlexiForceY>
342 <FlexiForceZ>0</FlexiForceZ>
343 <LightColorR>0</LightColorR>
344 <LightColorG>0</LightColorG>
345 <LightColorB>0</LightColorB>
346 <LightColorA>1</LightColorA>
347 <LightRadius>0</LightRadius>
348 <LightCutoff>0</LightCutoff>
349 <LightFalloff>0</LightFalloff>
350 <LightIntensity>1</LightIntensity>
351 <FlexiEntry>false</FlexiEntry>
352 <LightEntry>false</LightEntry>
353 <SculptEntry>false</SculptEntry>
354 </Shape>
355 <Scale><X>0.03574385</X><Y>0.05958032</Y><Z>0.04764182</Z></Scale>
356 <SitTargetOrientation><X>0</X><Y>0</Y><Z>0</Z><W>1</W></SitTargetOrientation>
357 <SitTargetPosition><X>0</X><Y>0</Y><Z>0</Z></SitTargetPosition>
358 <SitTargetPositionLL><X>0</X><Y>0</Y><Z>0</Z></SitTargetPositionLL>
359 <SitTargetOrientationLL><X>0</X><Y>0</Y><Z>0</Z><W>1</W></SitTargetOrientationLL>
360 <ParentID>1154704499</ParentID>
361 <CreationDate>1256611042</CreationDate>
362 <Category>0</Category>
363 <SalePrice>10</SalePrice>
364 <ObjectSaleType>0</ObjectSaleType>
365 <OwnershipCost>0</OwnershipCost>
366 <GroupID><Guid>00000000-0000-0000-0000-000000000000</Guid></GroupID>
367 <OwnerID><Guid>7b2022f0-5f19-488c-b7e5-829d8f96b448</Guid></OwnerID>
368 <LastOwnerID><Guid>7b2022f0-5f19-488c-b7e5-829d8f96b448</Guid></LastOwnerID>
369 <BaseMask>647168</BaseMask>
370 <OwnerMask>647168</OwnerMask>
371 <GroupMask>0</GroupMask>
372 <EveryoneMask>0</EveryoneMask>
373 <NextOwnerMask>581632</NextOwnerMask>
374 <Flags>None</Flags>
375 <CollisionSound><Guid>00000000-0000-0000-0000-000000000000</Guid></CollisionSound>
376 <CollisionSoundVolume>0</CollisionSoundVolume>
377 <AttachedPos><X>0</X><Y>0</Y><Z>0</Z></AttachedPos>
378 <TextureAnimation/>
379 <ParticleSystem/>
380 <PayPrice0>-2</PayPrice0>
381 <PayPrice1>-2</PayPrice1>
382 <PayPrice2>-2</PayPrice2>
383 <PayPrice3>-2</PayPrice3>
384 <PayPrice4>-2</PayPrice4>
385 </SceneObjectPart>
386 </Part>
387 </OtherParts>
388</SceneObjectGroup>";
389
390 private const string ObjectWithBadFloatsXml = @"
167 <SceneObjectGroup> 391 <SceneObjectGroup>
168 <RootPart> 392 <RootPart>
169 <SceneObjectPart xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> 393 <SceneObjectPart xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
@@ -270,7 +494,7 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests
270 <OtherParts /> 494 <OtherParts />
271 </SceneObjectGroup>"; 495 </SceneObjectGroup>";
272 496
273 private string xml2 = @" 497 private const string ObjectWithNoPartsXml2 = @"
274 <SceneObjectGroup> 498 <SceneObjectGroup>
275 <SceneObjectPart xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> 499 <SceneObjectPart xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
276 <CreatorID><UUID>b46ef588-411e-4a8b-a284-d7dcfe8e74ef</UUID></CreatorID> 500 <CreatorID><UUID>b46ef588-411e-4a8b-a284-d7dcfe8e74ef</UUID></CreatorID>
@@ -377,12 +601,12 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests
377 } 601 }
378 602
379 [Test] 603 [Test]
380 public void TestDeserializeXml() 604 public void TestDeserializeXmlObjectWithNoOtherParts()
381 { 605 {
382 TestHelpers.InMethod(); 606 TestHelpers.InMethod();
383 //log4net.Config.XmlConfigurator.Configure(); 607 TestHelpers.EnableLogging();
384 608
385 SceneObjectGroup so = SceneObjectSerializer.FromOriginalXmlFormat(xml); 609 SceneObjectGroup so = SceneObjectSerializer.FromOriginalXmlFormat(ObjectWithNoOtherPartsXml);
386 SceneObjectPart rootPart = so.RootPart; 610 SceneObjectPart rootPart = so.RootPart;
387 611
388 Assert.That(rootPart.UUID, Is.EqualTo(new UUID("e6a5a05e-e8cc-4816-8701-04165e335790"))); 612 Assert.That(rootPart.UUID, Is.EqualTo(new UUID("e6a5a05e-e8cc-4816-8701-04165e335790")));
@@ -395,12 +619,67 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests
395 } 619 }
396 620
397 [Test] 621 [Test]
622 public void TestDeserializeXmlObjectWithOtherParts()
623 {
624 TestHelpers.InMethod();
625 TestHelpers.EnableLogging();
626
627 // We need to do this to get rid of whitespace between elements.
628 // TODO: Ultimately OpenSimulator xml parser should be set to ignore this but this means a bit of
629 // rejigging to replace old new XmlTextReader() with the post .NET 2.0 XmlReader.Create() calls
630 XmlDocument xdoc = new XmlDocument();
631 xdoc.LoadXml(ObjectWithOtherPartsXml);
632
633 StringBuilder sb = new StringBuilder();
634 using (StringWriter sw = new StringWriter(sb))
635 {
636 using (XmlTextWriter xtw = new XmlTextWriter(sw))
637 {
638 xtw.Formatting = Formatting.Indented;
639 xdoc.WriteTo(xtw);
640 }
641 }
642
643 SceneObjectGroup so = SceneObjectSerializer.FromOriginalXmlFormat(sb.ToString());
644 SceneObjectPart[] parts = so.Parts;
645 Assert.AreEqual(3, so.Parts.Length);
646
647 {
648 SceneObjectPart part = parts[0];
649
650 Assert.That(part.UUID, Is.EqualTo(new UUID("e6a5a05e-e8cc-4816-8701-04165e335790")));
651 Assert.That(part.CreatorID, Is.EqualTo(new UUID("a6dacf01-4636-4bb9-8a97-30609438af9d")));
652 Assert.That(part.Name, Is.EqualTo("PrimMyRide"));
653 OSDMap store = part.DynAttrs.GetStore("MyNamespace", "MyStore");
654 Assert.AreEqual(42, store["the answer"].AsInteger());
655 }
656
657 {
658 SceneObjectPart part = parts[1];
659
660 Assert.That(part.UUID, Is.EqualTo(new UUID("9958feb1-02a6-49e4-a4ce-eba6f578ee13")));
661 Assert.That(part.CreatorID, Is.EqualTo(new UUID("a6dacf01-4636-4bb9-8a97-30609438af9d")));
662 Assert.That(part.Name, Is.EqualTo("Alien Head 1"));
663 }
664
665 {
666 SceneObjectPart part = parts[2];
667
668 Assert.That(part.UUID, Is.EqualTo(new UUID("674b6b86-f5aa-439a-8e00-0d75bc08c80a")));
669 Assert.That(part.CreatorID, Is.EqualTo(new UUID("a6dacf01-4636-4bb9-8a97-30609438af9d")));
670 Assert.That(part.Name, Is.EqualTo("Alien Head 2"));
671 }
672
673 // TODO: Check other properties
674 }
675
676 [Test]
398 public void TestDeserializeBadFloatsXml() 677 public void TestDeserializeBadFloatsXml()
399 { 678 {
400 TestHelpers.InMethod(); 679 TestHelpers.InMethod();
401// log4net.Config.XmlConfigurator.Configure(); 680// log4net.Config.XmlConfigurator.Configure();
402 681
403 SceneObjectGroup so = SceneObjectSerializer.FromOriginalXmlFormat(badFloatsXml); 682 SceneObjectGroup so = SceneObjectSerializer.FromOriginalXmlFormat(ObjectWithBadFloatsXml);
404 SceneObjectPart rootPart = so.RootPart; 683 SceneObjectPart rootPart = so.RootPart;
405 684
406 Assert.That(rootPart.UUID, Is.EqualTo(new UUID("e6a5a05e-e8cc-4816-8701-04165e335790"))); 685 Assert.That(rootPart.UUID, Is.EqualTo(new UUID("e6a5a05e-e8cc-4816-8701-04165e335790")));
@@ -517,7 +796,7 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests
517 TestHelpers.InMethod(); 796 TestHelpers.InMethod();
518 //log4net.Config.XmlConfigurator.Configure(); 797 //log4net.Config.XmlConfigurator.Configure();
519 798
520 SceneObjectGroup so = m_serialiserModule.DeserializeGroupFromXml2(xml2); 799 SceneObjectGroup so = m_serialiserModule.DeserializeGroupFromXml2(ObjectWithNoPartsXml2);
521 SceneObjectPart rootPart = so.RootPart; 800 SceneObjectPart rootPart = so.RootPart;
522 801
523 Assert.That(rootPart.UUID, Is.EqualTo(new UUID("9be68fdd-f740-4a0f-9675-dfbbb536b946"))); 802 Assert.That(rootPart.UUID, Is.EqualTo(new UUID("9be68fdd-f740-4a0f-9675-dfbbb536b946")));