corrade-vassal – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 vero 1 /*
2 * Copyright (c) 2006-2014, openmetaverse.org
3 * All rights reserved.
4 *
5 * - Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * - Redistributions of source code must retain the above copyright notice, this
9 * list of conditions and the following disclaimer.
10 * - Neither the name of the openmetaverse.org nor the names
11 * of its contributors may be used to endorse or promote products derived from
12 * this software without specific prior written permission.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
18 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 * POSSIBILITY OF SUCH DAMAGE.
25 */
26  
27 using System;
28 using System.IO;
29 using System.Net;
30 using System.Collections.Generic;
31 using System.Runtime.Serialization.Formatters.Binary;
32 using System.Text;
33 using System.Xml.Serialization;
34 using OpenMetaverse;
35 using OpenMetaverse.Packets;
36 using OpenMetaverse.StructuredData;
37 using OpenMetaverse.Messages.Linden;
38 using NUnit.Framework;
39  
40 namespace OpenMetaverse.Tests
41 {
42 /// <summary>
43 /// These unit tests specifically test the Message class can serialize and deserialize its own data properly
44 /// a passed test does not necessarily indicate the formatting is correct in the resulting OSD to be handled
45 /// by the simulator.
46 /// </summary>
47 [TestFixture]
48 public class MessageTests : Assert
49 {
50 private Uri testURI = new Uri("https://sim3187.agni.lindenlab.com:12043/cap/6028fc44-c1e5-80a1-f902-19bde114458b");
51 private IPAddress testIP = IPAddress.Parse("127.0.0.1");
52 private ulong testHandle = 1106108697797888;
53  
54 [Test]
55 public void AgentGroupDataUpdateMessage()
56 {
57 AgentGroupDataUpdateMessage s = new AgentGroupDataUpdateMessage();
58 s.AgentID = UUID.Random();
59  
60  
61  
62 AgentGroupDataUpdateMessage.GroupData[] blocks = new AgentGroupDataUpdateMessage.GroupData[2];
63 AgentGroupDataUpdateMessage.GroupData g1 = new AgentGroupDataUpdateMessage.GroupData();
64  
65 g1.AcceptNotices = false;
66 g1.Contribution = 1024;
67 g1.GroupID = UUID.Random();
68 g1.GroupInsigniaID = UUID.Random();
69 g1.GroupName = "Group Name Test 1";
70 g1.GroupPowers = GroupPowers.Accountable | GroupPowers.AllowLandmark | GroupPowers.AllowSetHome;
71 blocks[0] = g1;
72  
73 AgentGroupDataUpdateMessage.GroupData g2 = new AgentGroupDataUpdateMessage.GroupData();
74 g2.AcceptNotices = false;
75 g2.Contribution = 16;
76 g2.GroupID = UUID.Random();
77 g2.GroupInsigniaID = UUID.Random();
78 g2.GroupName = "Group Name Test 2";
79 g2.GroupPowers = GroupPowers.ChangeActions | GroupPowers.DeedObject;
80 blocks[1] = g2;
81  
82 s.GroupDataBlock = blocks;
83  
84 AgentGroupDataUpdateMessage.NewGroupData[] nblocks = new AgentGroupDataUpdateMessage.NewGroupData[2];
85  
86 AgentGroupDataUpdateMessage.NewGroupData ng1 = new AgentGroupDataUpdateMessage.NewGroupData();
87 ng1.ListInProfile = false;
88 nblocks[0] = ng1;
89  
90 AgentGroupDataUpdateMessage.NewGroupData ng2 = new AgentGroupDataUpdateMessage.NewGroupData();
91 ng2.ListInProfile = true;
92 nblocks[1] = ng2;
93  
94 s.NewGroupDataBlock = nblocks;
95  
96 OSDMap map = s.Serialize();
97  
98 AgentGroupDataUpdateMessage t = new AgentGroupDataUpdateMessage();
99 t.Deserialize(map);
100  
101 Assert.AreEqual(s.AgentID, t.AgentID);
102  
103 for (int i = 0; i < t.GroupDataBlock.Length; i++)
104 {
105 Assert.AreEqual(s.GroupDataBlock[i].AcceptNotices, t.GroupDataBlock[i].AcceptNotices);
106 Assert.AreEqual(s.GroupDataBlock[i].Contribution, t.GroupDataBlock[i].Contribution);
107 Assert.AreEqual(s.GroupDataBlock[i].GroupID, t.GroupDataBlock[i].GroupID);
108 Assert.AreEqual(s.GroupDataBlock[i].GroupInsigniaID, t.GroupDataBlock[i].GroupInsigniaID);
109 Assert.AreEqual(s.GroupDataBlock[i].GroupName, t.GroupDataBlock[i].GroupName);
110 Assert.AreEqual(s.GroupDataBlock[i].GroupPowers, t.GroupDataBlock[i].GroupPowers);
111 }
112  
113 for (int i = 0; i < t.NewGroupDataBlock.Length; i++)
114 {
115 Assert.AreEqual(s.NewGroupDataBlock[i].ListInProfile, t.NewGroupDataBlock[i].ListInProfile);
116 }
117 }
118  
119 [Test]
120 public void TeleportFinishMessage()
121 {
122 TeleportFinishMessage s = new TeleportFinishMessage();
123 s.AgentID = UUID.Random();
124 s.Flags = TeleportFlags.ViaLocation | TeleportFlags.IsFlying;
125 s.IP = testIP;
126 s.LocationID = 32767;
127 s.Port = 3000;
128 s.RegionHandle = testHandle;
129 s.SeedCapability = testURI;
130 s.SimAccess = SimAccess.Mature;
131  
132 OSDMap map = s.Serialize();
133  
134 TeleportFinishMessage t = new TeleportFinishMessage();
135 t.Deserialize(map);
136  
137 Assert.AreEqual(s.AgentID, t.AgentID);
138 Assert.AreEqual(s.Flags, t.Flags);
139 Assert.AreEqual(s.IP, t.IP);
140 Assert.AreEqual(s.LocationID, t.LocationID);
141 Assert.AreEqual(s.Port, t.Port);
142 Assert.AreEqual(s.RegionHandle, t.RegionHandle);
143 Assert.AreEqual(s.SeedCapability, t.SeedCapability);
144 Assert.AreEqual(s.SimAccess, t.SimAccess);
145 }
146  
147 [Test]
148 public void EstablishAgentCommunicationMessage()
149 {
150 EstablishAgentCommunicationMessage s = new EstablishAgentCommunicationMessage();
151 s.Address = testIP;
152 s.AgentID = UUID.Random();
153 s.Port = 3000;
154 s.SeedCapability = testURI;
155  
156 OSDMap map = s.Serialize();
157  
158 EstablishAgentCommunicationMessage t = new EstablishAgentCommunicationMessage();
159 t.Deserialize(map);
160  
161 Assert.AreEqual(s.Address, t.Address);
162 Assert.AreEqual(s.AgentID, t.AgentID);
163 Assert.AreEqual(s.Port, t.Port);
164 Assert.AreEqual(s.SeedCapability, t.SeedCapability);
165 }
166  
167 [Test]
168 public void ParcelObjectOwnersMessage()
169 {
170 ParcelObjectOwnersReplyMessage s = new ParcelObjectOwnersReplyMessage();
171 s.PrimOwnersBlock = new ParcelObjectOwnersReplyMessage.PrimOwner[2];
172  
173 ParcelObjectOwnersReplyMessage.PrimOwner obj = new ParcelObjectOwnersReplyMessage.PrimOwner();
174 obj.OwnerID = UUID.Random();
175 obj.Count = 10;
176 obj.IsGroupOwned = true;
177 obj.OnlineStatus = false;
178 obj.TimeStamp = new DateTime(2010, 4, 13, 7, 19, 43);
179 s.PrimOwnersBlock[0] = obj;
180  
181 ParcelObjectOwnersReplyMessage.PrimOwner obj1 = new ParcelObjectOwnersReplyMessage.PrimOwner();
182 obj1.OwnerID = UUID.Random();
183 obj1.Count = 0;
184 obj1.IsGroupOwned = false;
185 obj1.OnlineStatus = false;
186 obj1.TimeStamp = new DateTime(1991, 1, 31, 3, 13, 31);
187 s.PrimOwnersBlock[1] = obj1;
188  
189 OSDMap map = s.Serialize();
190  
191 ParcelObjectOwnersReplyMessage t = new ParcelObjectOwnersReplyMessage();
192 t.Deserialize(map);
193  
194 for (int i = 0; i < t.PrimOwnersBlock.Length; i++)
195 {
196 Assert.AreEqual(s.PrimOwnersBlock[i].Count, t.PrimOwnersBlock[i].Count);
197 Assert.AreEqual(s.PrimOwnersBlock[i].IsGroupOwned, t.PrimOwnersBlock[i].IsGroupOwned);
198 Assert.AreEqual(s.PrimOwnersBlock[i].OnlineStatus, t.PrimOwnersBlock[i].OnlineStatus);
199 Assert.AreEqual(s.PrimOwnersBlock[i].OwnerID, t.PrimOwnersBlock[i].OwnerID);
200 Assert.AreEqual(s.PrimOwnersBlock[i].TimeStamp, t.PrimOwnersBlock[i].TimeStamp);
201 }
202 }
203  
204 [Test]
205 public void ChatterBoxInvitationMessage()
206 {
207 ChatterBoxInvitationMessage s = new ChatterBoxInvitationMessage();
208 s.BinaryBucket = Utils.EmptyBytes;
209 s.Dialog = InstantMessageDialog.InventoryOffered;
210 s.FromAgentID = UUID.Random();
211 s.FromAgentName = "Prokofy Neva";
212 s.GroupIM = false;
213 s.IMSessionID = s.FromAgentID ^ UUID.Random();
214 s.Message = "Test Test Test";
215 s.Offline = InstantMessageOnline.Online;
216 s.ParentEstateID = 1;
217 s.Position = Vector3.One;
218 s.RegionID = UUID.Random();
219 s.Timestamp = DateTime.UtcNow;
220 s.ToAgentID = UUID.Random();
221  
222 OSDMap map = s.Serialize();
223  
224 ChatterBoxInvitationMessage t = new ChatterBoxInvitationMessage();
225 t.Deserialize(map);
226  
227 Assert.AreEqual(s.BinaryBucket, t.BinaryBucket);
228 Assert.AreEqual(s.Dialog, t.Dialog);
229 Assert.AreEqual(s.FromAgentID, t.FromAgentID);
230 Assert.AreEqual(s.FromAgentName, t.FromAgentName);
231 Assert.AreEqual(s.GroupIM, t.GroupIM);
232 Assert.AreEqual(s.IMSessionID, t.IMSessionID);
233 Assert.AreEqual(s.Message, t.Message);
234 Assert.AreEqual(s.Offline, t.Offline);
235 Assert.AreEqual(s.ParentEstateID, t.ParentEstateID);
236 Assert.AreEqual(s.Position, t.Position);
237 Assert.AreEqual(s.RegionID, t.RegionID);
238 Assert.AreEqual(s.Timestamp, t.Timestamp);
239 Assert.AreEqual(s.ToAgentID, t.ToAgentID);
240 }
241  
242 [Test]
243 public void ChatterboxSessionEventReplyMessage()
244 {
245 ChatterboxSessionEventReplyMessage s = new ChatterboxSessionEventReplyMessage();
246 s.SessionID = UUID.Random();
247 s.Success = true;
248  
249 OSDMap map = s.Serialize();
250  
251 ChatterboxSessionEventReplyMessage t = new ChatterboxSessionEventReplyMessage();
252 t.Deserialize(map);
253  
254 Assert.AreEqual(s.SessionID, t.SessionID);
255 Assert.AreEqual(s.Success, t.Success);
256 }
257  
258 [Test]
259 public void ChatterBoxSessionStartReplyMessage()
260 {
261 ChatterBoxSessionStartReplyMessage s = new ChatterBoxSessionStartReplyMessage();
262 s.ModeratedVoice = true;
263 s.SessionID = UUID.Random();
264 s.SessionName = "Test Session";
265 s.Success = true;
266 s.TempSessionID = UUID.Random();
267 s.Type = 1;
268 s.VoiceEnabled = true;
269  
270 OSDMap map = s.Serialize();
271  
272 ChatterBoxSessionStartReplyMessage t = new ChatterBoxSessionStartReplyMessage();
273 t.Deserialize(map);
274  
275 Assert.AreEqual(s.ModeratedVoice, t.ModeratedVoice);
276 Assert.AreEqual(s.SessionID, t.SessionID);
277 Assert.AreEqual(s.SessionName, t.SessionName);
278 Assert.AreEqual(s.Success, t.Success);
279 Assert.AreEqual(s.TempSessionID, t.TempSessionID);
280 Assert.AreEqual(s.Type, t.Type);
281 Assert.AreEqual(s.VoiceEnabled, t.VoiceEnabled);
282 }
283  
284 [Test]
285 public void ChatterBoxSessionAgentListUpdatesMessage()
286 {
287 ChatterBoxSessionAgentListUpdatesMessage s = new ChatterBoxSessionAgentListUpdatesMessage();
288 s.SessionID = UUID.Random();
289 s.Updates = new ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock[1];
290  
291 ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock block1 = new ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock();
292 block1.AgentID = UUID.Random();
293 block1.CanVoiceChat = true;
294 block1.IsModerator = true;
295 block1.MuteText = true;
296 block1.MuteVoice = true;
297 block1.Transition = "ENTER";
298  
299 ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock block2 = new ChatterBoxSessionAgentListUpdatesMessage.AgentUpdatesBlock();
300 block2.AgentID = UUID.Random();
301 block2.CanVoiceChat = true;
302 block2.IsModerator = true;
303 block2.MuteText = true;
304 block2.MuteVoice = true;
305 block2.Transition = "LEAVE";
306  
307 s.Updates[0] = block1;
308 // s.Updates[1] = block2;
309  
310 OSDMap map = s.Serialize();
311  
312 ChatterBoxSessionAgentListUpdatesMessage t = new ChatterBoxSessionAgentListUpdatesMessage();
313 t.Deserialize(map);
314  
315 Assert.AreEqual(s.SessionID, t.SessionID);
316 for (int i = 0; i < t.Updates.Length; i++)
317 {
318 Assert.AreEqual(s.Updates[i].AgentID, t.Updates[i].AgentID);
319 Assert.AreEqual(s.Updates[i].CanVoiceChat, t.Updates[i].CanVoiceChat);
320 Assert.AreEqual(s.Updates[i].IsModerator, t.Updates[i].IsModerator);
321 Assert.AreEqual(s.Updates[i].MuteText, t.Updates[i].MuteText);
322 Assert.AreEqual(s.Updates[i].MuteVoice, t.Updates[i].MuteVoice);
323 Assert.AreEqual(s.Updates[i].Transition, t.Updates[i].Transition);
324 }
325 }
326  
327 [Test]
328 public void ViewerStatsMessage()
329 {
330 ViewerStatsMessage s = new ViewerStatsMessage();
331  
332 s.AgentFPS = 45.5f;
333 s.AgentsInView = 1;
334 s.SystemCPU = "Intel 80286";
335 s.StatsDropped = 2;
336 s.StatsFailedResends = 3;
337 s.SystemGPU = "Vesa VGA+";
338 s.SystemGPUClass = 4;
339 s.SystemGPUVendor = "China";
340 s.SystemGPUVersion = String.Empty;
341 s.InCompressedPackets = 5000;
342 s.InKbytes = 6000;
343 s.InPackets = 22000;
344 s.InSavings = 19;
345 s.MiscInt1 = 5;
346 s.MiscInt2 = 6;
347 s.FailuresInvalid = 20;
348 s.AgentLanguage = "en";
349 s.AgentMemoryUsed = 12878728;
350 s.MetersTraveled = 9999123;
351 s.object_kbytes = 70001;
352 s.FailuresOffCircuit = 201;
353 s.SystemOS = "Palm OS 3.1";
354 s.OutCompressedPackets = 8000;
355 s.OutKbytes = 9000999;
356 s.OutPackets = 21000210;
357 s.OutSavings = 181;
358 s.AgentPing = 135579;
359 s.SystemInstalledRam = 4000000;
360 s.RegionsVisited = 4579;
361 s.FailuresResent = 9;
362 s.AgentRuntime = 360023;
363 s.FailuresSendPacket = 565;
364 s.SessionID = UUID.Random();
365 s.SimulatorFPS = 454;
366 s.AgentStartTime = new DateTime(1973, 1, 16, 5, 23, 33);
367 s.MiscString1 = "Unused String";
368 s.texture_kbytes = 9367498382;
369 s.AgentVersion = "1";
370 s.MiscVersion = 1;
371 s.VertexBuffersEnabled = true;
372 s.world_kbytes = 232344439;
373  
374 OSDMap map = s.Serialize();
375 ViewerStatsMessage t = new ViewerStatsMessage();
376 t.Deserialize(map);
377  
378 Assert.AreEqual(s.AgentFPS, t.AgentFPS);
379 Assert.AreEqual(s.AgentsInView, t.AgentsInView);
380 Assert.AreEqual(s.SystemCPU, t.SystemCPU);
381 Assert.AreEqual(s.StatsDropped, t.StatsDropped);
382 Assert.AreEqual(s.StatsFailedResends, t.StatsFailedResends);
383 Assert.AreEqual(s.SystemGPU, t.SystemGPU);
384 Assert.AreEqual(s.SystemGPUClass, t.SystemGPUClass);
385 Assert.AreEqual(s.SystemGPUVendor, t.SystemGPUVendor);
386 Assert.AreEqual(s.SystemGPUVersion, t.SystemGPUVersion);
387 Assert.AreEqual(s.InCompressedPackets, t.InCompressedPackets);
388 Assert.AreEqual(s.InKbytes, t.InKbytes);
389 Assert.AreEqual(s.InPackets, t.InPackets);
390 Assert.AreEqual(s.InSavings, t.InSavings);
391 Assert.AreEqual(s.MiscInt1, t.MiscInt1);
392 Assert.AreEqual(s.MiscInt2, t.MiscInt2);
393 Assert.AreEqual(s.FailuresInvalid, t.FailuresInvalid);
394 Assert.AreEqual(s.AgentLanguage, t.AgentLanguage);
395 Assert.AreEqual(s.AgentMemoryUsed, t.AgentMemoryUsed);
396 Assert.AreEqual(s.MetersTraveled, t.MetersTraveled);
397 Assert.AreEqual(s.object_kbytes, t.object_kbytes);
398 Assert.AreEqual(s.FailuresOffCircuit, t.FailuresOffCircuit);
399 Assert.AreEqual(s.SystemOS, t.SystemOS);
400 Assert.AreEqual(s.OutCompressedPackets, t.OutCompressedPackets);
401 Assert.AreEqual(s.OutKbytes, t.OutKbytes);
402 Assert.AreEqual(s.OutPackets, t.OutPackets);
403 Assert.AreEqual(s.OutSavings, t.OutSavings);
404 Assert.AreEqual(s.AgentPing, t.AgentPing);
405 Assert.AreEqual(s.SystemInstalledRam, t.SystemInstalledRam);
406 Assert.AreEqual(s.RegionsVisited, t.RegionsVisited);
407 Assert.AreEqual(s.FailuresResent, t.FailuresResent);
408 Assert.AreEqual(s.AgentRuntime, t.AgentRuntime);
409 Assert.AreEqual(s.FailuresSendPacket, t.FailuresSendPacket);
410 Assert.AreEqual(s.SessionID, t.SessionID);
411 Assert.AreEqual(s.SimulatorFPS, t.SimulatorFPS);
412 Assert.AreEqual(s.AgentStartTime, t.AgentStartTime);
413 Assert.AreEqual(s.MiscString1, t.MiscString1);
414 Assert.AreEqual(s.texture_kbytes, t.texture_kbytes);
415 Assert.AreEqual(s.AgentVersion, t.AgentVersion);
416 Assert.AreEqual(s.MiscVersion, t.MiscVersion);
417 Assert.AreEqual(s.VertexBuffersEnabled, t.VertexBuffersEnabled);
418 Assert.AreEqual(s.world_kbytes, t.world_kbytes);
419  
420  
421 }
422  
423 [Test]
424 public void ParcelVoiceInfoRequestMessage()
425 {
426 ParcelVoiceInfoRequestMessage s = new ParcelVoiceInfoRequestMessage();
427 s.SipChannelUri = testURI;
428 s.ParcelID = 1;
429 s.RegionName = "Hooper";
430  
431 OSDMap map = s.Serialize();
432  
433 ParcelVoiceInfoRequestMessage t = new ParcelVoiceInfoRequestMessage();
434 t.Deserialize(map);
435  
436 Assert.AreEqual(s.SipChannelUri, t.SipChannelUri);
437 Assert.AreEqual(s.ParcelID, t.ParcelID);
438 Assert.AreEqual(s.RegionName, t.RegionName);
439 }
440  
441 [Test]
442 public void ScriptRunningReplyMessage()
443 {
444 ScriptRunningReplyMessage s = new ScriptRunningReplyMessage();
445 s.ItemID = UUID.Random();
446 s.Mono = true;
447 s.Running = true;
448 s.ObjectID = UUID.Random();
449  
450 OSDMap map = s.Serialize();
451  
452 ScriptRunningReplyMessage t = new ScriptRunningReplyMessage();
453 t.Deserialize(map);
454  
455 Assert.AreEqual(s.ItemID, t.ItemID);
456 Assert.AreEqual(s.Mono, t.Mono);
457 Assert.AreEqual(s.ObjectID, t.ObjectID);
458 Assert.AreEqual(s.Running, t.Running);
459  
460 }
461  
462 [Test]
463 public void MapLayerMessage()
464 {
465  
466 MapLayerReplyVariant s = new MapLayerReplyVariant();
467 s.Flags = 1;
468  
469 MapLayerReplyVariant.LayerData[] blocks = new MapLayerReplyVariant.LayerData[2];
470  
471 MapLayerReplyVariant.LayerData block = new MapLayerReplyVariant.LayerData();
472 block.ImageID = UUID.Random();
473 block.Bottom = 1;
474 block.Top = 2;
475 block.Left = 3;
476 block.Right = 4;
477  
478  
479  
480 blocks[0] = block;
481  
482 block.ImageID = UUID.Random();
483 block.Bottom = 5;
484 block.Top = 6;
485 block.Left = 7;
486 block.Right = 9;
487  
488 blocks[1] = block;
489  
490 s.LayerDataBlocks = blocks;
491  
492 OSDMap map = s.Serialize();
493  
494 MapLayerReplyVariant t = new MapLayerReplyVariant();
495  
496 t.Deserialize(map);
497  
498 Assert.AreEqual(s.Flags, t.Flags);
499  
500  
501 for (int i = 0; i < s.LayerDataBlocks.Length; i++)
502 {
503 Assert.AreEqual(s.LayerDataBlocks[i].ImageID, t.LayerDataBlocks[i].ImageID);
504 Assert.AreEqual(s.LayerDataBlocks[i].Top, t.LayerDataBlocks[i].Top);
505 Assert.AreEqual(s.LayerDataBlocks[i].Left, t.LayerDataBlocks[i].Left);
506 Assert.AreEqual(s.LayerDataBlocks[i].Right, t.LayerDataBlocks[i].Right);
507 Assert.AreEqual(s.LayerDataBlocks[i].Bottom, t.LayerDataBlocks[i].Bottom);
508 }
509 }
510  
511 [Test] // VARIANT A
512 public void ChatSessionRequestStartConference()
513 {
514 ChatSessionRequestStartConference s = new ChatSessionRequestStartConference();
515 s.SessionID = UUID.Random();
516 s.AgentsBlock = new UUID[2];
517 s.AgentsBlock[0] = UUID.Random();
518 s.AgentsBlock[0] = UUID.Random();
519  
520 OSDMap map = s.Serialize();
521  
522 ChatSessionRequestStartConference t = new ChatSessionRequestStartConference();
523 t.Deserialize(map);
524  
525 Assert.AreEqual(s.SessionID, t.SessionID);
526 Assert.AreEqual(s.Method, t.Method);
527 for (int i = 0; i < t.AgentsBlock.Length; i++)
528 {
529 Assert.AreEqual(s.AgentsBlock[i], t.AgentsBlock[i]);
530 }
531 }
532  
533 [Test]
534 public void ChatSessionRequestMuteUpdate()
535 {
536 ChatSessionRequestMuteUpdate s = new ChatSessionRequestMuteUpdate();
537 s.AgentID = UUID.Random();
538 s.RequestKey = "text";
539 s.RequestValue = true;
540 s.SessionID = UUID.Random();
541  
542 OSDMap map = s.Serialize();
543  
544 ChatSessionRequestMuteUpdate t = new ChatSessionRequestMuteUpdate();
545 t.Deserialize(map);
546  
547 Assert.AreEqual(s.AgentID, t.AgentID);
548 Assert.AreEqual(s.Method, t.Method);
549 Assert.AreEqual(s.RequestKey, t.RequestKey);
550 Assert.AreEqual(s.RequestValue, t.RequestValue);
551 Assert.AreEqual(s.SessionID, t.SessionID);
552 }
553  
554 [Test]
555 public void ChatSessionAcceptInvitation()
556 {
557 ChatSessionAcceptInvitation s = new ChatSessionAcceptInvitation();
558 s.SessionID = UUID.Random();
559  
560 OSDMap map = s.Serialize();
561  
562 ChatSessionAcceptInvitation t = new ChatSessionAcceptInvitation();
563 t.Deserialize(map);
564  
565 Assert.AreEqual(s.Method, t.Method);
566 Assert.AreEqual(s.SessionID, t.SessionID);
567 }
568  
569 [Test]
570 public void RequiredVoiceVersionMessage()
571 {
572 RequiredVoiceVersionMessage s = new RequiredVoiceVersionMessage();
573 s.MajorVersion = 1;
574 s.MinorVersion = 0;
575 s.RegionName = "Hooper";
576  
577 OSDMap map = s.Serialize();
578  
579 RequiredVoiceVersionMessage t = new RequiredVoiceVersionMessage();
580 t.Deserialize(map);
581  
582 Assert.AreEqual(s.MajorVersion, t.MajorVersion);
583 Assert.AreEqual(s.MinorVersion, t.MinorVersion);
584 Assert.AreEqual(s.RegionName, t.RegionName);
585 }
586  
587 [Test]
588 public void CopyInventoryFromNotecardMessage()
589 {
590 CopyInventoryFromNotecardMessage s = new CopyInventoryFromNotecardMessage();
591 s.CallbackID = 1;
592 s.FolderID = UUID.Random();
593 s.ItemID = UUID.Random();
594 s.NotecardID = UUID.Random();
595 s.ObjectID = UUID.Random();
596  
597 OSDMap map = s.Serialize();
598  
599 CopyInventoryFromNotecardMessage t = new CopyInventoryFromNotecardMessage();
600 t.Deserialize(map);
601  
602 Assert.AreEqual(s.CallbackID, t.CallbackID);
603 Assert.AreEqual(s.FolderID, t.FolderID);
604 Assert.AreEqual(s.ItemID, t.ItemID);
605 Assert.AreEqual(s.NotecardID, t.NotecardID);
606 Assert.AreEqual(s.ObjectID, t.ObjectID);
607 }
608  
609 [Test]
610 public void ProvisionVoiceAccountRequestMessage()
611 {
612 ProvisionVoiceAccountRequestMessage s = new ProvisionVoiceAccountRequestMessage();
613 s.Username = "username";
614 s.Password = "password";
615  
616 OSDMap map = s.Serialize();
617  
618 ProvisionVoiceAccountRequestMessage t = new ProvisionVoiceAccountRequestMessage();
619 t.Deserialize(map);
620  
621 Assert.AreEqual(s.Password, t.Password);
622 Assert.AreEqual(s.Username, t.Username);
623 }
624  
625 [Test]
626 public void UpdateAgentLanguageMessage()
627 {
628 UpdateAgentLanguageMessage s = new UpdateAgentLanguageMessage();
629 s.Language = "en";
630 s.LanguagePublic = false;
631  
632 OSDMap map = s.Serialize();
633  
634 UpdateAgentLanguageMessage t = new UpdateAgentLanguageMessage();
635 t.Deserialize(map);
636  
637 Assert.AreEqual(s.Language, t.Language);
638 Assert.AreEqual(s.LanguagePublic, t.LanguagePublic);
639  
640 }
641  
642 [Test]
643 public void ParcelPropertiesMessage()
644 {
645 ParcelPropertiesMessage s = new ParcelPropertiesMessage();
646 s.AABBMax = Vector3.Parse("<1,2,3>");
647 s.AABBMin = Vector3.Parse("<2,3,1>");
648 s.Area = 1024;
649 s.AuctionID = uint.MaxValue;
650 s.AuthBuyerID = UUID.Random();
651 s.Bitmap = Utils.EmptyBytes;
652 s.Category = ParcelCategory.Educational;
653 s.ClaimDate = new DateTime(2008, 12, 25, 3, 15, 22);
654 s.ClaimPrice = 1000;
655 s.Desc = "Test Description";
656 s.GroupID = UUID.Random();
657 s.GroupPrims = 50;
658 s.IsGroupOwned = false;
659 s.LandingType = LandingType.None;
660 s.LocalID = 1;
661 s.MaxPrims = 234;
662 s.MediaAutoScale = false;
663 s.MediaDesc = "Example Media Description";
664 s.MediaHeight = 480;
665 s.MediaID = UUID.Random();
666 s.MediaLoop = false;
667 s.MediaType = "text/html";
668 s.MediaURL = "http://www.openmetaverse.org";
669 s.MediaWidth = 640;
670 s.MusicURL = "http://scfire-ntc-aa04.stream.aol.com:80/stream/1075"; // Yee Haw
671 s.Name = "Test Name";
672 s.ObscureMedia = false;
673 s.ObscureMusic = false;
674 s.OtherCleanTime = 5;
675 s.OtherCount = 200;
676 s.OtherPrims = 300;
677 s.OwnerID = UUID.Random();
678 s.OwnerPrims = 0;
679 s.ParcelFlags = ParcelFlags.AllowDamage | ParcelFlags.AllowGroupScripts | ParcelFlags.AllowVoiceChat;
680 s.ParcelPrimBonus = 0f;
681 s.PassHours = 1.5f;
682 s.PassPrice = 10;
683 s.PublicCount = 20;
684 s.RegionDenyAgeUnverified = false;
685 s.RegionDenyAnonymous = false;
686 s.RegionPushOverride = true;
687 s.RentPrice = 0;
688 s.RequestResult = ParcelResult.Single;
689 s.SalePrice = 9999;
690 s.SelectedPrims = 1;
691 s.SelfCount = 2;
692 s.SequenceID = -4000;
693 s.SimWideMaxPrims = 937;
694 s.SimWideTotalPrims = 117;
695 s.SnapSelection = false;
696 s.SnapshotID = UUID.Random();
697 s.Status = ParcelStatus.Leased;
698 s.TotalPrims = 219;
699 s.UserLocation = Vector3.Parse("<3,4,5>");
700 s.UserLookAt = Vector3.Parse("<5,4,3>");
701  
702 OSDMap map = s.Serialize();
703 ParcelPropertiesMessage t = new ParcelPropertiesMessage();
704  
705 t.Deserialize(map);
706  
707 Assert.AreEqual(s.AABBMax, t.AABBMax);
708 Assert.AreEqual(s.AABBMin, t.AABBMin);
709 Assert.AreEqual(s.Area, t.Area);
710 Assert.AreEqual(s.AuctionID, t.AuctionID);
711 Assert.AreEqual(s.AuthBuyerID, t.AuthBuyerID);
712 Assert.AreEqual(s.Bitmap, t.Bitmap);
713 Assert.AreEqual(s.Category, t.Category);
714 Assert.AreEqual(s.ClaimDate, t.ClaimDate);
715 Assert.AreEqual(s.ClaimPrice, t.ClaimPrice);
716 Assert.AreEqual(s.Desc, t.Desc);
717 Assert.AreEqual(s.GroupID, t.GroupID);
718 Assert.AreEqual(s.GroupPrims, t.GroupPrims);
719 Assert.AreEqual(s.IsGroupOwned, t.IsGroupOwned);
720 Assert.AreEqual(s.LandingType, t.LandingType);
721 Assert.AreEqual(s.LocalID, t.LocalID);
722 Assert.AreEqual(s.MaxPrims, t.MaxPrims);
723 Assert.AreEqual(s.MediaAutoScale, t.MediaAutoScale);
724 Assert.AreEqual(s.MediaDesc, t.MediaDesc);
725 Assert.AreEqual(s.MediaHeight, t.MediaHeight);
726 Assert.AreEqual(s.MediaID, t.MediaID);
727 Assert.AreEqual(s.MediaLoop, t.MediaLoop);
728 Assert.AreEqual(s.MediaType, t.MediaType);
729 Assert.AreEqual(s.MediaURL, t.MediaURL);
730 Assert.AreEqual(s.MediaWidth, t.MediaWidth);
731 Assert.AreEqual(s.MusicURL, t.MusicURL);
732 Assert.AreEqual(s.Name, t.Name);
733 Assert.AreEqual(s.ObscureMedia, t.ObscureMedia);
734 Assert.AreEqual(s.ObscureMusic, t.ObscureMusic);
735 Assert.AreEqual(s.OtherCleanTime, t.OtherCleanTime);
736 Assert.AreEqual(s.OtherCount, t.OtherCount);
737 Assert.AreEqual(s.OtherPrims, t.OtherPrims);
738 Assert.AreEqual(s.OwnerID, t.OwnerID);
739 Assert.AreEqual(s.OwnerPrims, t.OwnerPrims);
740 Assert.AreEqual(s.ParcelFlags, t.ParcelFlags);
741 Assert.AreEqual(s.ParcelPrimBonus, t.ParcelPrimBonus);
742 Assert.AreEqual(s.PassHours, t.PassHours);
743 Assert.AreEqual(s.PassPrice, t.PassPrice);
744 Assert.AreEqual(s.PublicCount, t.PublicCount);
745 Assert.AreEqual(s.RegionDenyAgeUnverified, t.RegionDenyAgeUnverified);
746 Assert.AreEqual(s.RegionDenyAnonymous, t.RegionDenyAnonymous);
747 Assert.AreEqual(s.RegionPushOverride, t.RegionPushOverride);
748 Assert.AreEqual(s.RentPrice, t.RentPrice);
749 Assert.AreEqual(s.RequestResult, t.RequestResult);
750 Assert.AreEqual(s.SalePrice, t.SalePrice);
751 Assert.AreEqual(s.SelectedPrims, t.SelectedPrims);
752 Assert.AreEqual(s.SelfCount, t.SelfCount);
753 Assert.AreEqual(s.SequenceID, t.SequenceID);
754 Assert.AreEqual(s.SimWideMaxPrims, t.SimWideMaxPrims);
755 Assert.AreEqual(s.SimWideTotalPrims, t.SimWideTotalPrims);
756 Assert.AreEqual(s.SnapSelection, t.SnapSelection);
757 Assert.AreEqual(s.SnapshotID, t.SnapshotID);
758 Assert.AreEqual(s.Status, t.Status);
759 Assert.AreEqual(s.TotalPrims, t.TotalPrims);
760 Assert.AreEqual(s.UserLocation, t.UserLocation);
761 Assert.AreEqual(s.UserLookAt, t.UserLookAt);
762 }
763  
764 [Test]
765 public void ParcelPropertiesUpdateMessage()
766 {
767 ParcelPropertiesUpdateMessage s = new ParcelPropertiesUpdateMessage();
768 s.AuthBuyerID = UUID.Random();
769 s.Category = ParcelCategory.Gaming;
770 s.Desc = "Example Description";
771 s.GroupID = UUID.Random();
772 s.Landing = LandingType.LandingPoint;
773 s.LocalID = 160;
774 s.MediaAutoScale = true;
775 s.MediaDesc = "Example Media Description";
776 s.MediaHeight = 600;
777 s.MediaID = UUID.Random();
778 s.MediaLoop = false;
779 s.MediaType = "image/jpeg";
780 s.MediaURL = "http://www.openmetaverse.org/test.jpeg";
781 s.MediaWidth = 800;
782 s.MusicURL = "http://scfire-ntc-aa04.stream.aol.com:80/stream/1075";
783 s.Name = "Example Parcel Description";
784 s.ObscureMedia = true;
785 s.ObscureMusic = true;
786 s.ParcelFlags = ParcelFlags.AllowVoiceChat | ParcelFlags.ContributeWithDeed;
787 s.PassHours = 5.5f;
788 s.PassPrice = 100;
789 s.SalePrice = 99;
790 s.SnapshotID = UUID.Random();
791 s.UserLocation = Vector3.Parse("<128,128,128>");
792 s.UserLookAt = Vector3.Parse("<256,256,256>");
793  
794 OSDMap map = s.Serialize();
795  
796 ParcelPropertiesUpdateMessage t = new ParcelPropertiesUpdateMessage();
797  
798 t.Deserialize(map);
799  
800 Assert.AreEqual(s.AuthBuyerID, t.AuthBuyerID);
801 Assert.AreEqual(s.Category, t.Category);
802 Assert.AreEqual(s.Desc, t.Desc);
803 Assert.AreEqual(s.GroupID, t.GroupID);
804 Assert.AreEqual(s.Landing, t.Landing);
805 Assert.AreEqual(s.LocalID, t.LocalID);
806 Assert.AreEqual(s.MediaAutoScale, t.MediaAutoScale);
807 Assert.AreEqual(s.MediaDesc, t.MediaDesc);
808 Assert.AreEqual(s.MediaHeight, t.MediaHeight);
809 Assert.AreEqual(s.MediaID, t.MediaID);
810 Assert.AreEqual(s.MediaLoop, t.MediaLoop);
811 Assert.AreEqual(s.MediaType, t.MediaType);
812 Assert.AreEqual(s.MediaURL, t.MediaURL);
813 Assert.AreEqual(s.MediaWidth, t.MediaWidth);
814 Assert.AreEqual(s.MusicURL, t.MusicURL);
815 Assert.AreEqual(s.Name, t.Name);
816 Assert.AreEqual(s.ObscureMedia, t.ObscureMedia);
817 Assert.AreEqual(s.ObscureMusic, t.ObscureMusic);
818 Assert.AreEqual(s.ParcelFlags, t.ParcelFlags);
819 Assert.AreEqual(s.PassHours, t.PassHours);
820 Assert.AreEqual(s.PassPrice, t.PassPrice);
821 Assert.AreEqual(s.SalePrice, t.SalePrice);
822 Assert.AreEqual(s.SnapshotID, t.SnapshotID);
823 Assert.AreEqual(s.UserLocation, t.UserLocation);
824 Assert.AreEqual(s.UserLookAt, t.UserLookAt);
825 }
826 [Test]
827 public void EnableSimulatorMessage()
828 {
829 EnableSimulatorMessage s = new EnableSimulatorMessage();
830 s.Simulators = new EnableSimulatorMessage.SimulatorInfoBlock[2];
831  
832 EnableSimulatorMessage.SimulatorInfoBlock block1 = new EnableSimulatorMessage.SimulatorInfoBlock();
833 block1.IP = testIP;
834 block1.Port = 3000;
835 block1.RegionHandle = testHandle;
836 s.Simulators[0] = block1;
837  
838 EnableSimulatorMessage.SimulatorInfoBlock block2 = new EnableSimulatorMessage.SimulatorInfoBlock();
839 block2.IP = testIP;
840 block2.Port = 3001;
841 block2.RegionHandle = testHandle;
842 s.Simulators[1] = block2;
843  
844 OSDMap map = s.Serialize();
845  
846 EnableSimulatorMessage t = new EnableSimulatorMessage();
847 t.Deserialize(map);
848  
849 for (int i = 0; i < t.Simulators.Length; i++)
850 {
851 Assert.AreEqual(s.Simulators[i].IP, t.Simulators[i].IP);
852 Assert.AreEqual(s.Simulators[i].Port, t.Simulators[i].Port);
853 Assert.AreEqual(s.Simulators[i].RegionHandle, t.Simulators[i].RegionHandle);
854 }
855 }
856  
857 [Test]
858 public void RemoteParcelRequestReply()
859 {
860 RemoteParcelRequestReply s = new RemoteParcelRequestReply();
861 s.ParcelID = UUID.Random();
862 OSDMap map = s.Serialize();
863  
864 RemoteParcelRequestReply t = new RemoteParcelRequestReply();
865 t.Deserialize(map);
866  
867 Assert.AreEqual(s.ParcelID, t.ParcelID);
868 }
869  
870 [Test]
871 public void UpdateScriptTaskMessage()
872 {
873 UpdateScriptTaskUpdateMessage s = new UpdateScriptTaskUpdateMessage();
874 s.TaskID = UUID.Random();
875 s.Target = "mono";
876 s.ScriptRunning = true;
877 s.ItemID = UUID.Random();
878  
879 OSDMap map = s.Serialize();
880 UpdateScriptTaskUpdateMessage t = new UpdateScriptTaskUpdateMessage();
881 t.Deserialize(map);
882  
883 Assert.AreEqual(s.ItemID, t.ItemID);
884 Assert.AreEqual(s.ScriptRunning, t.ScriptRunning);
885 Assert.AreEqual(s.Target, t.Target);
886 Assert.AreEqual(s.TaskID, t.TaskID);
887 }
888  
889 [Test]
890 public void UpdateScriptAgentMessage()
891 {
892 UpdateScriptAgentRequestMessage s = new UpdateScriptAgentRequestMessage();
893 s.ItemID = UUID.Random();
894 s.Target = "lsl2";
895  
896 OSDMap map = s.Serialize();
897  
898 UpdateScriptAgentRequestMessage t = new UpdateScriptAgentRequestMessage();
899 t.Deserialize(map);
900  
901 Assert.AreEqual(s.ItemID, t.ItemID);
902 Assert.AreEqual(s.Target, t.Target);
903 }
904  
905 [Test]
906 public void SendPostcardMessage()
907 {
908 SendPostcardMessage s = new SendPostcardMessage();
909 s.FromEmail = "contact@openmetaverse.org";
910 s.FromName = "Jim Radford";
911 s.GlobalPosition = Vector3.One;
912 s.Message = "Hello, How are you today?";
913 s.Subject = "Postcard from the edge";
914 s.ToEmail = "test1@example.com";
915  
916 OSDMap map = s.Serialize();
917  
918 SendPostcardMessage t = new SendPostcardMessage();
919 t.Deserialize(map);
920  
921 Assert.AreEqual(s.FromEmail, t.FromEmail);
922 Assert.AreEqual(s.FromName, t.FromName);
923 Assert.AreEqual(s.GlobalPosition, t.GlobalPosition);
924 Assert.AreEqual(s.Message, t.Message);
925 Assert.AreEqual(s.Subject, t.Subject);
926 Assert.AreEqual(s.ToEmail, t.ToEmail);
927 }
928  
929 [Test]
930 public void UpdateNotecardAgentInventoryMessage()
931 {
932 UpdateAgentInventoryRequestMessage s = new UpdateAgentInventoryRequestMessage();
933 s.ItemID = UUID.Random();
934  
935 OSDMap map = s.Serialize();
936  
937 UpdateAgentInventoryRequestMessage t = new UpdateAgentInventoryRequestMessage();
938 t.Deserialize(map);
939  
940 Assert.AreEqual(s.ItemID, t.ItemID);
941 }
942  
943 [Test]
944 public void LandStatReplyMessage()
945 {
946 LandStatReplyMessage s = new LandStatReplyMessage();
947 s.ReportType = 22;
948 s.RequestFlags = 44;
949 s.TotalObjectCount = 2;
950 s.ReportDataBlocks = new LandStatReplyMessage.ReportDataBlock[2];
951  
952 LandStatReplyMessage.ReportDataBlock block1 = new LandStatReplyMessage.ReportDataBlock();
953 block1.Location = Vector3.One;
954 block1.MonoScore = 99;
955 block1.OwnerName = "Profoky Neva";
956 block1.Score = 10;
957 block1.TaskID = UUID.Random();
958 block1.TaskLocalID = 987341;
959 block1.TaskName = "Verbal Flogging";
960 block1.TimeStamp = new DateTime(2009, 5, 23, 4, 30, 0);
961 s.ReportDataBlocks[0] = block1;
962  
963 LandStatReplyMessage.ReportDataBlock block2 = new LandStatReplyMessage.ReportDataBlock();
964 block2.Location = Vector3.One;
965 block2.MonoScore = 1;
966 block2.OwnerName = "Philip Linden";
967 block2.Score = 5;
968 block2.TaskID = UUID.Random();
969 block2.TaskLocalID = 987342;
970 block2.TaskName = "Happy Ant";
971 block2.TimeStamp = new DateTime(2008, 4, 22, 3, 29, 55);
972 s.ReportDataBlocks[1] = block2;
973  
974 OSDMap map = s.Serialize();
975  
976 LandStatReplyMessage t = new LandStatReplyMessage();
977 t.Deserialize(map);
978  
979 Assert.AreEqual(s.ReportType, t.ReportType);
980 Assert.AreEqual(s.RequestFlags, t.RequestFlags);
981 Assert.AreEqual(s.TotalObjectCount, t.TotalObjectCount);
982  
983 for (int i = 0; i < t.ReportDataBlocks.Length; i++)
984 {
985 Assert.AreEqual(s.ReportDataBlocks[i].Location, t.ReportDataBlocks[i].Location);
986 Assert.AreEqual(s.ReportDataBlocks[i].MonoScore, t.ReportDataBlocks[i].MonoScore);
987 Assert.AreEqual(s.ReportDataBlocks[i].OwnerName, t.ReportDataBlocks[i].OwnerName);
988 Assert.AreEqual(s.ReportDataBlocks[i].Score, t.ReportDataBlocks[i].Score);
989 Assert.AreEqual(s.ReportDataBlocks[i].TaskID, t.ReportDataBlocks[i].TaskID);
990 Assert.AreEqual(s.ReportDataBlocks[i].TaskLocalID, t.ReportDataBlocks[i].TaskLocalID);
991 Assert.AreEqual(s.ReportDataBlocks[i].TaskName, t.ReportDataBlocks[i].TaskName);
992 Assert.AreEqual(s.ReportDataBlocks[i].TimeStamp, t.ReportDataBlocks[i].TimeStamp);
993 }
994 }
995  
996 [Test]
997 public void TelportFailedMessage()
998 {
999 TeleportFailedMessage s = new TeleportFailedMessage();
1000 s.AgentID = UUID.Random();
1001 s.MessageKey = "Key";
1002 s.Reason = "Unable To Teleport for some unspecified reason";
1003 s.ExtraParams = String.Empty;
1004  
1005 OSDMap map = s.Serialize();
1006  
1007 TeleportFailedMessage t = new TeleportFailedMessage();
1008 t.Deserialize(map);
1009  
1010 Assert.AreEqual(s.AgentID, t.AgentID);
1011 Assert.AreEqual(s.ExtraParams, t.ExtraParams);
1012 Assert.AreEqual(s.MessageKey, t.MessageKey);
1013 Assert.AreEqual(s.Reason, t.Reason);
1014  
1015 }
1016  
1017 [Test]
1018 public void UpdateAgentInformationMessage()
1019 {
1020 UpdateAgentInformationMessage s = new UpdateAgentInformationMessage();
1021 s.MaxAccess = "PG";
1022 OSDMap map = s.Serialize();
1023  
1024 UpdateAgentInformationMessage t = new UpdateAgentInformationMessage();
1025 t.Deserialize(map);
1026  
1027 Assert.AreEqual(s.MaxAccess, t.MaxAccess);
1028 }
1029  
1030 [Test]
1031 public void PlacesReplyMessage()
1032 {
1033 PlacesReplyMessage s = new PlacesReplyMessage();
1034 s.TransactionID = UUID.Random();
1035 s.AgentID = UUID.Random();
1036 s.QueryID = UUID.Random();
1037 s.QueryDataBlocks = new PlacesReplyMessage.QueryData[2];
1038  
1039 PlacesReplyMessage.QueryData q1 = new PlacesReplyMessage.QueryData();
1040 q1.ActualArea = 1024;
1041 q1.BillableArea = 768;
1042 q1.Description = "Test Description Q1";
1043 q1.Dwell = 1435.4f;
1044 q1.Flags = 1 << 6;
1045 q1.GlobalX = 1;
1046 q1.GlobalY = 2;
1047 q1.GlobalZ = 3;
1048 q1.Name = "Test Name Q1";
1049 q1.OwnerID = UUID.Random();
1050 q1.Price = 1;
1051 q1.ProductSku = "021";
1052 q1.SimName = "Hooper";
1053 q1.SnapShotID = UUID.Random();
1054  
1055 s.QueryDataBlocks[0] = q1;
1056  
1057 PlacesReplyMessage.QueryData q2 = new PlacesReplyMessage.QueryData();
1058 q2.ActualArea = 512;
1059 q2.BillableArea = 384;
1060 q2.Description = "Test Description Q2";
1061 q2.Dwell = 1;
1062 q2.Flags = 1 << 4;
1063 q2.GlobalX = 4;
1064 q2.GlobalY = 5;
1065 q2.GlobalZ = 6;
1066 q2.Name = "Test Name Q2";
1067 q2.OwnerID = UUID.Random();
1068 q2.Price = 2;
1069 q2.ProductSku = "022";
1070 q2.SimName = "Tethys";
1071 q2.SnapShotID = UUID.Random();
1072  
1073 s.QueryDataBlocks[1] = q2;
1074  
1075 OSDMap map = s.Serialize();
1076  
1077 PlacesReplyMessage t = new PlacesReplyMessage();
1078 t.Deserialize(map);
1079  
1080 Assert.AreEqual(s.AgentID, t.AgentID);
1081 Assert.AreEqual(s.TransactionID, t.TransactionID);
1082 Assert.AreEqual(s.QueryID, t.QueryID);
1083  
1084 for (int i = 0; i < s.QueryDataBlocks.Length; i++)
1085 {
1086 Assert.AreEqual(s.QueryDataBlocks[i].ActualArea, t.QueryDataBlocks[i].ActualArea);
1087 Assert.AreEqual(s.QueryDataBlocks[i].BillableArea, t.QueryDataBlocks[i].BillableArea);
1088 Assert.AreEqual(s.QueryDataBlocks[i].Description, t.QueryDataBlocks[i].Description);
1089 Assert.AreEqual(s.QueryDataBlocks[i].Dwell, t.QueryDataBlocks[i].Dwell);
1090 Assert.AreEqual(s.QueryDataBlocks[i].Flags, t.QueryDataBlocks[i].Flags);
1091 Assert.AreEqual(s.QueryDataBlocks[i].GlobalX, t.QueryDataBlocks[i].GlobalX);
1092 Assert.AreEqual(s.QueryDataBlocks[i].GlobalY, t.QueryDataBlocks[i].GlobalY);
1093 Assert.AreEqual(s.QueryDataBlocks[i].GlobalZ, t.QueryDataBlocks[i].GlobalZ);
1094 Assert.AreEqual(s.QueryDataBlocks[i].Name, t.QueryDataBlocks[i].Name);
1095 Assert.AreEqual(s.QueryDataBlocks[i].OwnerID, t.QueryDataBlocks[i].OwnerID);
1096 Assert.AreEqual(s.QueryDataBlocks[i].Price, t.QueryDataBlocks[i].Price);
1097 Assert.AreEqual(s.QueryDataBlocks[i].ProductSku, t.QueryDataBlocks[i].ProductSku);
1098 Assert.AreEqual(s.QueryDataBlocks[i].SimName, t.QueryDataBlocks[i].SimName);
1099 Assert.AreEqual(s.QueryDataBlocks[i].SnapShotID, t.QueryDataBlocks[i].SnapShotID);
1100 }
1101 }
1102  
1103 [Test]
1104 public void DirLandReplyMessage()
1105 {
1106 DirLandReplyMessage s = new DirLandReplyMessage();
1107 s.AgentID = UUID.Random();
1108 s.QueryID = UUID.Random();
1109 s.QueryReplies = new DirLandReplyMessage.QueryReply[2];
1110  
1111 DirLandReplyMessage.QueryReply q1 = new DirLandReplyMessage.QueryReply();
1112 q1.ActualArea = 1024;
1113 q1.Auction = true;
1114 q1.ForSale = true;
1115 q1.Name = "For Sale Parcel Q1";
1116 q1.ProductSku = "023";
1117 q1.SalePrice = 2193;
1118 q1.ParcelID = UUID.Random();
1119  
1120 s.QueryReplies[0] = q1;
1121  
1122 DirLandReplyMessage.QueryReply q2 = new DirLandReplyMessage.QueryReply();
1123 q2.ActualArea = 512;
1124 q2.Auction = true;
1125 q2.ForSale = true;
1126 q2.Name = "For Sale Parcel Q2";
1127 q2.ProductSku = "023";
1128 q2.SalePrice = 22193;
1129 q2.ParcelID = UUID.Random();
1130  
1131 s.QueryReplies[1] = q2;
1132  
1133 OSDMap map = s.Serialize();
1134  
1135 DirLandReplyMessage t = new DirLandReplyMessage();
1136 t.Deserialize(map);
1137  
1138 Assert.AreEqual(s.AgentID, t.AgentID);
1139 Assert.AreEqual(s.QueryID, t.QueryID);
1140  
1141 for (int i = 0; i < s.QueryReplies.Length; i++)
1142 {
1143 Assert.AreEqual(s.QueryReplies[i].ActualArea, t.QueryReplies[i].ActualArea);
1144 Assert.AreEqual(s.QueryReplies[i].Auction, t.QueryReplies[i].Auction);
1145 Assert.AreEqual(s.QueryReplies[i].ForSale, t.QueryReplies[i].ForSale);
1146 Assert.AreEqual(s.QueryReplies[i].Name, t.QueryReplies[i].Name);
1147 Assert.AreEqual(s.QueryReplies[i].ProductSku, t.QueryReplies[i].ProductSku);
1148 Assert.AreEqual(s.QueryReplies[i].ParcelID, t.QueryReplies[i].ParcelID);
1149 Assert.AreEqual(s.QueryReplies[i].SalePrice, t.QueryReplies[i].SalePrice);
1150 }
1151 }
1152 #region Performance Testing
1153  
1154 private const int TEST_ITER = 100000;
1155  
1156 [Test]
1157 [Category("Benchmark")]
1158 public void ReflectionPerformanceRemoteParcelResponse()
1159 {
1160 DateTime messageTestTime = DateTime.UtcNow;
1161 for (int x = 0; x < TEST_ITER; x++)
1162 {
1163 RemoteParcelRequestReply s = new RemoteParcelRequestReply();
1164 s.ParcelID = UUID.Random();
1165 OSDMap map = s.Serialize();
1166  
1167 RemoteParcelRequestReply t = new RemoteParcelRequestReply();
1168 t.Deserialize(map);
1169  
1170 Assert.AreEqual(s.ParcelID, t.ParcelID);
1171 }
1172 TimeSpan duration = DateTime.UtcNow - messageTestTime;
1173 Console.WriteLine("RemoteParcelRequestReply: OMV Message System Serialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, duration);
1174  
1175 BinaryFormatter formatter = new BinaryFormatter();
1176 DateTime xmlTestTime = DateTime.UtcNow;
1177 for (int x = 0; x < TEST_ITER; x++)
1178 {
1179 RemoteParcelRequestReply s = new RemoteParcelRequestReply();
1180 s.ParcelID = UUID.Random();
1181  
1182 MemoryStream stream = new MemoryStream();
1183  
1184 formatter.Serialize(stream, s);
1185  
1186 stream.Seek(0, SeekOrigin.Begin);
1187 RemoteParcelRequestReply t = (RemoteParcelRequestReply)formatter.Deserialize(stream);
1188  
1189 Assert.AreEqual(s.ParcelID, t.ParcelID);
1190 }
1191 TimeSpan durationxml = DateTime.UtcNow - xmlTestTime;
1192 Console.WriteLine("RemoteParcelRequestReply: .NET BinarySerialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, durationxml);
1193 }
1194  
1195  
1196 [Test]
1197 [Category("Benchmark")]
1198 public void ReflectionPerformanceDirLandReply()
1199 {
1200  
1201 DateTime messageTestTime = DateTime.UtcNow;
1202 for (int x = 0; x < TEST_ITER; x++)
1203 {
1204 DirLandReplyMessage s = new DirLandReplyMessage();
1205 s.AgentID = UUID.Random();
1206 s.QueryID = UUID.Random();
1207 s.QueryReplies = new DirLandReplyMessage.QueryReply[2];
1208  
1209 DirLandReplyMessage.QueryReply q1 = new DirLandReplyMessage.QueryReply();
1210 q1.ActualArea = 1024;
1211 q1.Auction = true;
1212 q1.ForSale = true;
1213 q1.Name = "For Sale Parcel Q1";
1214 q1.ProductSku = "023";
1215 q1.SalePrice = 2193;
1216 q1.ParcelID = UUID.Random();
1217  
1218 s.QueryReplies[0] = q1;
1219  
1220 DirLandReplyMessage.QueryReply q2 = new DirLandReplyMessage.QueryReply();
1221 q2.ActualArea = 512;
1222 q2.Auction = true;
1223 q2.ForSale = true;
1224 q2.Name = "For Sale Parcel Q2";
1225 q2.ProductSku = "023";
1226 q2.SalePrice = 22193;
1227 q2.ParcelID = UUID.Random();
1228  
1229 s.QueryReplies[1] = q2;
1230  
1231 OSDMap map = s.Serialize();
1232 DirLandReplyMessage t = new DirLandReplyMessage();
1233  
1234 t.Deserialize(map);
1235 Assert.AreEqual(s.AgentID, t.AgentID);
1236 Assert.AreEqual(s.QueryID, t.QueryID);
1237  
1238 for (int i = 0; i < s.QueryReplies.Length; i++)
1239 {
1240 Assert.AreEqual(s.QueryReplies[i].ActualArea, t.QueryReplies[i].ActualArea);
1241 Assert.AreEqual(s.QueryReplies[i].Auction, t.QueryReplies[i].Auction);
1242 Assert.AreEqual(s.QueryReplies[i].ForSale, t.QueryReplies[i].ForSale);
1243 Assert.AreEqual(s.QueryReplies[i].Name, t.QueryReplies[i].Name);
1244 Assert.AreEqual(s.QueryReplies[i].ProductSku, t.QueryReplies[i].ProductSku);
1245 Assert.AreEqual(s.QueryReplies[i].ParcelID, t.QueryReplies[i].ParcelID);
1246 Assert.AreEqual(s.QueryReplies[i].SalePrice, t.QueryReplies[i].SalePrice);
1247 }
1248 }
1249 TimeSpan duration = DateTime.UtcNow - messageTestTime;
1250 Console.WriteLine("DirLandReplyMessage: OMV Message System Serialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, duration);
1251  
1252 BinaryFormatter formatter = new BinaryFormatter();
1253 DateTime xmlTestTime = DateTime.UtcNow;
1254 for (int x = 0; x < TEST_ITER; x++)
1255 {
1256 DirLandReplyMessage s = new DirLandReplyMessage();
1257 s.AgentID = UUID.Random();
1258 s.QueryID = UUID.Random();
1259 s.QueryReplies = new DirLandReplyMessage.QueryReply[2];
1260  
1261 DirLandReplyMessage.QueryReply q1 = new DirLandReplyMessage.QueryReply();
1262 q1.ActualArea = 1024;
1263 q1.Auction = true;
1264 q1.ForSale = true;
1265 q1.Name = "For Sale Parcel Q1";
1266 q1.ProductSku = "023";
1267 q1.SalePrice = 2193;
1268 q1.ParcelID = UUID.Random();
1269  
1270 s.QueryReplies[0] = q1;
1271  
1272 DirLandReplyMessage.QueryReply q2 = new DirLandReplyMessage.QueryReply();
1273 q2.ActualArea = 512;
1274 q2.Auction = true;
1275 q2.ForSale = true;
1276 q2.Name = "For Sale Parcel Q2";
1277 q2.ProductSku = "023";
1278 q2.SalePrice = 22193;
1279 q2.ParcelID = UUID.Random();
1280  
1281 s.QueryReplies[1] = q2;
1282  
1283 MemoryStream stream = new MemoryStream();
1284  
1285 formatter.Serialize(stream, s);
1286  
1287 stream.Seek(0, SeekOrigin.Begin);
1288 DirLandReplyMessage t = (DirLandReplyMessage)formatter.Deserialize(stream);
1289  
1290 Assert.AreEqual(s.AgentID, t.AgentID);
1291 Assert.AreEqual(s.QueryID, t.QueryID);
1292  
1293 for (int i = 0; i < s.QueryReplies.Length; i++)
1294 {
1295 Assert.AreEqual(s.QueryReplies[i].ActualArea, t.QueryReplies[i].ActualArea);
1296 Assert.AreEqual(s.QueryReplies[i].Auction, t.QueryReplies[i].Auction);
1297 Assert.AreEqual(s.QueryReplies[i].ForSale, t.QueryReplies[i].ForSale);
1298 Assert.AreEqual(s.QueryReplies[i].Name, t.QueryReplies[i].Name);
1299 Assert.AreEqual(s.QueryReplies[i].ProductSku, t.QueryReplies[i].ProductSku);
1300 Assert.AreEqual(s.QueryReplies[i].ParcelID, t.QueryReplies[i].ParcelID);
1301 Assert.AreEqual(s.QueryReplies[i].SalePrice, t.QueryReplies[i].SalePrice);
1302 }
1303 }
1304 TimeSpan durationxml = DateTime.UtcNow - xmlTestTime;
1305 Console.WriteLine("DirLandReplyMessage: .NET BinarySerialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, durationxml);
1306 }
1307  
1308 [Test]
1309 [Category("Benchmark")]
1310 public void ReflectionPerformanceDirLandReply2()
1311 {
1312 XmlSerializer xmlSerializer = new XmlSerializer(typeof(DirLandReplyMessage));
1313  
1314 DirLandReplyMessage s = new DirLandReplyMessage();
1315 s.AgentID = UUID.Random();
1316 s.QueryID = UUID.Random();
1317 s.QueryReplies = new DirLandReplyMessage.QueryReply[2];
1318  
1319 DirLandReplyMessage.QueryReply q1 = new DirLandReplyMessage.QueryReply();
1320 q1.ActualArea = 1024;
1321 q1.Auction = true;
1322 q1.ForSale = true;
1323 q1.Name = "For Sale Parcel Q1";
1324 q1.ProductSku = "023";
1325 q1.SalePrice = 2193;
1326 q1.ParcelID = UUID.Random();
1327  
1328 s.QueryReplies[0] = q1;
1329  
1330 DirLandReplyMessage.QueryReply q2 = new DirLandReplyMessage.QueryReply();
1331 q2.ActualArea = 512;
1332 q2.Auction = true;
1333 q2.ForSale = true;
1334 q2.Name = "For Sale Parcel Q2";
1335 q2.ProductSku = "023";
1336 q2.SalePrice = 22193;
1337 q2.ParcelID = UUID.Random();
1338  
1339 s.QueryReplies[1] = q2;
1340  
1341 System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
1342 timer.Start();
1343 for (int i = 0; i < TEST_ITER; ++i)
1344 {
1345 MemoryStream stream = new MemoryStream();
1346 OSDMap map = s.Serialize();
1347 byte[] jsonData = Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(map));
1348 stream.Write(jsonData, 0, jsonData.Length);
1349 stream.Flush();
1350 stream.Close();
1351 }
1352 timer.Stop();
1353 Console.WriteLine("OMV Message System Serialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, timer.Elapsed.TotalSeconds);
1354  
1355 timer.Reset();
1356 timer.Start();
1357 for (int i = 0; i < TEST_ITER; ++i)
1358 {
1359 MemoryStream stream = new MemoryStream();
1360 xmlSerializer.Serialize(stream, s);
1361 stream.Flush();
1362 stream.Close();
1363 }
1364 timer.Stop();
1365 Console.WriteLine(".NET BinarySerialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, timer.Elapsed.TotalSeconds);
1366 }
1367  
1368 [Test]
1369 [Category("Benchmark")]
1370 public void ReflectionPerformanceParcelProperties()
1371 {
1372 DateTime messageTestTime = DateTime.UtcNow;
1373 for (int x = 0; x < TEST_ITER; x++)
1374 {
1375 ParcelPropertiesMessage s = new ParcelPropertiesMessage();
1376 s.AABBMax = Vector3.Parse("<1,2,3>");
1377 s.AABBMin = Vector3.Parse("<2,3,1>");
1378 s.Area = 1024;
1379 s.AuctionID = uint.MaxValue;
1380 s.AuthBuyerID = UUID.Random();
1381 s.Bitmap = Utils.EmptyBytes;
1382 s.Category = ParcelCategory.Educational;
1383 s.ClaimDate = new DateTime(2008, 12, 25, 3, 15, 22);
1384 s.ClaimPrice = 1000;
1385 s.Desc = "Test Description";
1386 s.GroupID = UUID.Random();
1387 s.GroupPrims = 50;
1388 s.IsGroupOwned = false;
1389 s.LandingType = LandingType.None;
1390 s.LocalID = 1;
1391 s.MaxPrims = 234;
1392 s.MediaAutoScale = false;
1393 s.MediaDesc = "Example Media Description";
1394 s.MediaHeight = 480;
1395 s.MediaID = UUID.Random();
1396 s.MediaLoop = false;
1397 s.MediaType = "text/html";
1398 s.MediaURL = "http://www.openmetaverse.org";
1399 s.MediaWidth = 640;
1400 s.MusicURL = "http://scfire-ntc-aa04.stream.aol.com:80/stream/1075"; // Yee Haw
1401 s.Name = "Test Name";
1402 s.ObscureMedia = false;
1403 s.ObscureMusic = false;
1404 s.OtherCleanTime = 5;
1405 s.OtherCount = 200;
1406 s.OtherPrims = 300;
1407 s.OwnerID = UUID.Random();
1408 s.OwnerPrims = 0;
1409 s.ParcelFlags = ParcelFlags.AllowDamage | ParcelFlags.AllowGroupScripts | ParcelFlags.AllowVoiceChat;
1410 s.ParcelPrimBonus = 0f;
1411 s.PassHours = 1.5f;
1412 s.PassPrice = 10;
1413 s.PublicCount = 20;
1414 s.RegionDenyAgeUnverified = false;
1415 s.RegionDenyAnonymous = false;
1416 s.RegionPushOverride = true;
1417 s.RentPrice = 0;
1418 s.RequestResult = ParcelResult.Single;
1419 s.SalePrice = 9999;
1420 s.SelectedPrims = 1;
1421 s.SelfCount = 2;
1422 s.SequenceID = -4000;
1423 s.SimWideMaxPrims = 937;
1424 s.SimWideTotalPrims = 117;
1425 s.SnapSelection = false;
1426 s.SnapshotID = UUID.Random();
1427 s.Status = ParcelStatus.Leased;
1428 s.TotalPrims = 219;
1429 s.UserLocation = Vector3.Parse("<3,4,5>");
1430 s.UserLookAt = Vector3.Parse("<5,4,3>");
1431  
1432 OSDMap map = s.Serialize();
1433 ParcelPropertiesMessage t = new ParcelPropertiesMessage();
1434  
1435 t.Deserialize(map);
1436  
1437 Assert.AreEqual(s.AABBMax, t.AABBMax);
1438 Assert.AreEqual(s.AABBMin, t.AABBMin);
1439 Assert.AreEqual(s.Area, t.Area);
1440 Assert.AreEqual(s.AuctionID, t.AuctionID);
1441 Assert.AreEqual(s.AuthBuyerID, t.AuthBuyerID);
1442 Assert.AreEqual(s.Bitmap, t.Bitmap);
1443 Assert.AreEqual(s.Category, t.Category);
1444 Assert.AreEqual(s.ClaimDate, t.ClaimDate);
1445 Assert.AreEqual(s.ClaimPrice, t.ClaimPrice);
1446 Assert.AreEqual(s.Desc, t.Desc);
1447 Assert.AreEqual(s.GroupID, t.GroupID);
1448 Assert.AreEqual(s.GroupPrims, t.GroupPrims);
1449 Assert.AreEqual(s.IsGroupOwned, t.IsGroupOwned);
1450 Assert.AreEqual(s.LandingType, t.LandingType);
1451 Assert.AreEqual(s.LocalID, t.LocalID);
1452 Assert.AreEqual(s.MaxPrims, t.MaxPrims);
1453 Assert.AreEqual(s.MediaAutoScale, t.MediaAutoScale);
1454 Assert.AreEqual(s.MediaDesc, t.MediaDesc);
1455 Assert.AreEqual(s.MediaHeight, t.MediaHeight);
1456 Assert.AreEqual(s.MediaID, t.MediaID);
1457 Assert.AreEqual(s.MediaLoop, t.MediaLoop);
1458 Assert.AreEqual(s.MediaType, t.MediaType);
1459 Assert.AreEqual(s.MediaURL, t.MediaURL);
1460 Assert.AreEqual(s.MediaWidth, t.MediaWidth);
1461 Assert.AreEqual(s.MusicURL, t.MusicURL);
1462 Assert.AreEqual(s.Name, t.Name);
1463 Assert.AreEqual(s.ObscureMedia, t.ObscureMedia);
1464 Assert.AreEqual(s.ObscureMusic, t.ObscureMusic);
1465 Assert.AreEqual(s.OtherCleanTime, t.OtherCleanTime);
1466 Assert.AreEqual(s.OtherCount, t.OtherCount);
1467 Assert.AreEqual(s.OtherPrims, t.OtherPrims);
1468 Assert.AreEqual(s.OwnerID, t.OwnerID);
1469 Assert.AreEqual(s.OwnerPrims, t.OwnerPrims);
1470 Assert.AreEqual(s.ParcelFlags, t.ParcelFlags);
1471 Assert.AreEqual(s.ParcelPrimBonus, t.ParcelPrimBonus);
1472 Assert.AreEqual(s.PassHours, t.PassHours);
1473 Assert.AreEqual(s.PassPrice, t.PassPrice);
1474 Assert.AreEqual(s.PublicCount, t.PublicCount);
1475 Assert.AreEqual(s.RegionDenyAgeUnverified, t.RegionDenyAgeUnverified);
1476 Assert.AreEqual(s.RegionDenyAnonymous, t.RegionDenyAnonymous);
1477 Assert.AreEqual(s.RegionPushOverride, t.RegionPushOverride);
1478 Assert.AreEqual(s.RentPrice, t.RentPrice);
1479 Assert.AreEqual(s.RequestResult, t.RequestResult);
1480 Assert.AreEqual(s.SalePrice, t.SalePrice);
1481 Assert.AreEqual(s.SelectedPrims, t.SelectedPrims);
1482 Assert.AreEqual(s.SelfCount, t.SelfCount);
1483 Assert.AreEqual(s.SequenceID, t.SequenceID);
1484 Assert.AreEqual(s.SimWideMaxPrims, t.SimWideMaxPrims);
1485 Assert.AreEqual(s.SimWideTotalPrims, t.SimWideTotalPrims);
1486 Assert.AreEqual(s.SnapSelection, t.SnapSelection);
1487 Assert.AreEqual(s.SnapshotID, t.SnapshotID);
1488 Assert.AreEqual(s.Status, t.Status);
1489 Assert.AreEqual(s.TotalPrims, t.TotalPrims);
1490 Assert.AreEqual(s.UserLocation, t.UserLocation);
1491 Assert.AreEqual(s.UserLookAt, t.UserLookAt);
1492 }
1493 TimeSpan duration = DateTime.UtcNow - messageTestTime;
1494 Console.WriteLine("ParcelPropertiesMessage: OMV Message System Serialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, duration);
1495  
1496 BinaryFormatter formatter = new BinaryFormatter();
1497  
1498 DateTime xmlTestTime = DateTime.UtcNow;
1499 for (int x = 0; x < TEST_ITER; x++)
1500 {
1501  
1502 ParcelPropertiesMessage s = new ParcelPropertiesMessage();
1503 s.AABBMax = Vector3.Parse("<1,2,3>");
1504 s.AABBMin = Vector3.Parse("<2,3,1>");
1505 s.Area = 1024;
1506 s.AuctionID = uint.MaxValue;
1507 s.AuthBuyerID = UUID.Random();
1508 s.Bitmap = Utils.EmptyBytes;
1509 s.Category = ParcelCategory.Educational;
1510 s.ClaimDate = new DateTime(2008, 12, 25, 3, 15, 22);
1511 s.ClaimPrice = 1000;
1512 s.Desc = "Test Description";
1513 s.GroupID = UUID.Random();
1514 s.GroupPrims = 50;
1515 s.IsGroupOwned = false;
1516 s.LandingType = LandingType.None;
1517 s.LocalID = 1;
1518 s.MaxPrims = 234;
1519 s.MediaAutoScale = false;
1520 s.MediaDesc = "Example Media Description";
1521 s.MediaHeight = 480;
1522 s.MediaID = UUID.Random();
1523 s.MediaLoop = false;
1524 s.MediaType = "text/html";
1525 s.MediaURL = "http://www.openmetaverse.org";
1526 s.MediaWidth = 640;
1527 s.MusicURL = "http://scfire-ntc-aa04.stream.aol.com:80/stream/1075"; // Yee Haw
1528 s.Name = "Test Name";
1529 s.ObscureMedia = false;
1530 s.ObscureMusic = false;
1531 s.OtherCleanTime = 5;
1532 s.OtherCount = 200;
1533 s.OtherPrims = 300;
1534 s.OwnerID = UUID.Random();
1535 s.OwnerPrims = 0;
1536 s.ParcelFlags = ParcelFlags.AllowDamage | ParcelFlags.AllowGroupScripts | ParcelFlags.AllowVoiceChat;
1537 s.ParcelPrimBonus = 0f;
1538 s.PassHours = 1.5f;
1539 s.PassPrice = 10;
1540 s.PublicCount = 20;
1541 s.RegionDenyAgeUnverified = false;
1542 s.RegionDenyAnonymous = false;
1543 s.RegionPushOverride = true;
1544 s.RentPrice = 0;
1545 s.RequestResult = ParcelResult.Single;
1546 s.SalePrice = 9999;
1547 s.SelectedPrims = 1;
1548 s.SelfCount = 2;
1549 s.SequenceID = -4000;
1550 s.SimWideMaxPrims = 937;
1551 s.SimWideTotalPrims = 117;
1552 s.SnapSelection = false;
1553 s.SnapshotID = UUID.Random();
1554 s.Status = ParcelStatus.Leased;
1555 s.TotalPrims = 219;
1556 s.UserLocation = Vector3.Parse("<3,4,5>");
1557 s.UserLookAt = Vector3.Parse("<5,4,3>");
1558  
1559 MemoryStream stream = new MemoryStream();
1560  
1561 formatter.Serialize(stream, s);
1562  
1563 stream.Seek(0, SeekOrigin.Begin);
1564  
1565 ParcelPropertiesMessage t = (ParcelPropertiesMessage)formatter.Deserialize(stream);
1566  
1567 Assert.AreEqual(s.AABBMax, t.AABBMax);
1568 Assert.AreEqual(s.AABBMin, t.AABBMin);
1569 Assert.AreEqual(s.Area, t.Area);
1570 Assert.AreEqual(s.AuctionID, t.AuctionID);
1571 Assert.AreEqual(s.AuthBuyerID, t.AuthBuyerID);
1572 Assert.AreEqual(s.Bitmap, t.Bitmap);
1573 Assert.AreEqual(s.Category, t.Category);
1574 Assert.AreEqual(s.ClaimDate, t.ClaimDate);
1575 Assert.AreEqual(s.ClaimPrice, t.ClaimPrice);
1576 Assert.AreEqual(s.Desc, t.Desc);
1577 Assert.AreEqual(s.GroupID, t.GroupID);
1578 Assert.AreEqual(s.GroupPrims, t.GroupPrims);
1579 Assert.AreEqual(s.IsGroupOwned, t.IsGroupOwned);
1580 Assert.AreEqual(s.LandingType, t.LandingType);
1581 Assert.AreEqual(s.LocalID, t.LocalID);
1582 Assert.AreEqual(s.MaxPrims, t.MaxPrims);
1583 Assert.AreEqual(s.MediaAutoScale, t.MediaAutoScale);
1584 Assert.AreEqual(s.MediaDesc, t.MediaDesc);
1585 Assert.AreEqual(s.MediaHeight, t.MediaHeight);
1586 Assert.AreEqual(s.MediaID, t.MediaID);
1587 Assert.AreEqual(s.MediaLoop, t.MediaLoop);
1588 Assert.AreEqual(s.MediaType, t.MediaType);
1589 Assert.AreEqual(s.MediaURL, t.MediaURL);
1590 Assert.AreEqual(s.MediaWidth, t.MediaWidth);
1591 Assert.AreEqual(s.MusicURL, t.MusicURL);
1592 Assert.AreEqual(s.Name, t.Name);
1593 Assert.AreEqual(s.ObscureMedia, t.ObscureMedia);
1594 Assert.AreEqual(s.ObscureMusic, t.ObscureMusic);
1595 Assert.AreEqual(s.OtherCleanTime, t.OtherCleanTime);
1596 Assert.AreEqual(s.OtherCount, t.OtherCount);
1597 Assert.AreEqual(s.OtherPrims, t.OtherPrims);
1598 Assert.AreEqual(s.OwnerID, t.OwnerID);
1599 Assert.AreEqual(s.OwnerPrims, t.OwnerPrims);
1600 Assert.AreEqual(s.ParcelFlags, t.ParcelFlags);
1601 Assert.AreEqual(s.ParcelPrimBonus, t.ParcelPrimBonus);
1602 Assert.AreEqual(s.PassHours, t.PassHours);
1603 Assert.AreEqual(s.PassPrice, t.PassPrice);
1604 Assert.AreEqual(s.PublicCount, t.PublicCount);
1605 Assert.AreEqual(s.RegionDenyAgeUnverified, t.RegionDenyAgeUnverified);
1606 Assert.AreEqual(s.RegionDenyAnonymous, t.RegionDenyAnonymous);
1607 Assert.AreEqual(s.RegionPushOverride, t.RegionPushOverride);
1608 Assert.AreEqual(s.RentPrice, t.RentPrice);
1609 Assert.AreEqual(s.RequestResult, t.RequestResult);
1610 Assert.AreEqual(s.SalePrice, t.SalePrice);
1611 Assert.AreEqual(s.SelectedPrims, t.SelectedPrims);
1612 Assert.AreEqual(s.SelfCount, t.SelfCount);
1613 Assert.AreEqual(s.SequenceID, t.SequenceID);
1614 Assert.AreEqual(s.SimWideMaxPrims, t.SimWideMaxPrims);
1615 Assert.AreEqual(s.SimWideTotalPrims, t.SimWideTotalPrims);
1616 Assert.AreEqual(s.SnapSelection, t.SnapSelection);
1617 Assert.AreEqual(s.SnapshotID, t.SnapshotID);
1618 Assert.AreEqual(s.Status, t.Status);
1619 Assert.AreEqual(s.TotalPrims, t.TotalPrims);
1620 Assert.AreEqual(s.UserLocation, t.UserLocation);
1621 Assert.AreEqual(s.UserLookAt, t.UserLookAt);
1622 }
1623 TimeSpan durationxml = DateTime.UtcNow - xmlTestTime;
1624 Console.WriteLine("ParcelPropertiesMessage: .NET BinarySerialization/Deserialization Passes: {0} Total time: {1}", TEST_ITER, durationxml);
1625 }
1626  
1627 #endregion
1628 }
1629 }
1630