aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
diff options
context:
space:
mode:
authorMike Mazur2009-03-16 00:12:25 +0000
committerMike Mazur2009-03-16 00:12:25 +0000
commitf28886e26d32eaf97180d91dcd42fa045990bdd0 (patch)
tree69f36a36c809c9961758897d43c85413b1d4dd77 /OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
parentThis patch improves MXP connect and disconnect functionality. (diff)
downloadopensim-SC_OLD-f28886e26d32eaf97180d91dcd42fa045990bdd0.zip
opensim-SC_OLD-f28886e26d32eaf97180d91dcd42fa045990bdd0.tar.gz
opensim-SC_OLD-f28886e26d32eaf97180d91dcd42fa045990bdd0.tar.bz2
opensim-SC_OLD-f28886e26d32eaf97180d91dcd42fa045990bdd0.tar.xz
Rename OpenSim.Framework.Archive to OpenSim.Framework.Serialization
Update using statements and prebuild.xml. Also trim trailing whitespace.
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs')
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs154
1 files changed, 77 insertions, 77 deletions
diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
index f6d0347..6a64ff1 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
@@ -34,7 +34,7 @@ using NUnit.Framework;
34using NUnit.Framework.SyntaxHelpers; 34using NUnit.Framework.SyntaxHelpers;
35using OpenMetaverse; 35using OpenMetaverse;
36using OpenSim.Framework; 36using OpenSim.Framework;
37using OpenSim.Framework.Archive; 37using OpenSim.Framework.Serialization;
38using OpenSim.Region.CoreModules.World.Serialiser; 38using OpenSim.Region.CoreModules.World.Serialiser;
39using OpenSim.Region.CoreModules.World.Terrain; 39using OpenSim.Region.CoreModules.World.Terrain;
40using OpenSim.Region.Framework.Scenes; 40using OpenSim.Region.Framework.Scenes;
@@ -48,29 +48,29 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
48 private void SaveCompleted(string errorMessage) 48 private void SaveCompleted(string errorMessage)
49 { 49 {
50 lock (this) 50 lock (this)
51 { 51 {
52 System.Console.WriteLine("About to pulse ArchiverTests"); 52 System.Console.WriteLine("About to pulse ArchiverTests");
53 Monitor.PulseAll(this); 53 Monitor.PulseAll(this);
54 } 54 }
55 } 55 }
56 56
57 /// <summary> 57 /// <summary>
58 /// Test saving a V0.2 OpenSim Region Archive. 58 /// Test saving a V0.2 OpenSim Region Archive.
59 /// </summary> 59 /// </summary>
60 [Test] 60 [Test]
61 public void TestSaveOarV0p2() 61 public void TestSaveOarV0p2()
62 { 62 {
63 log4net.Config.XmlConfigurator.Configure(); 63 log4net.Config.XmlConfigurator.Configure();
64 64
65 ArchiverModule archiverModule = new ArchiverModule(); 65 ArchiverModule archiverModule = new ArchiverModule();
66 SerialiserModule serialiserModule = new SerialiserModule(); 66 SerialiserModule serialiserModule = new SerialiserModule();
67 TerrainModule terrainModule = new TerrainModule(); 67 TerrainModule terrainModule = new TerrainModule();
68 68
69 Scene scene = SceneSetupHelpers.SetupScene(); 69 Scene scene = SceneSetupHelpers.SetupScene();
70 SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule); 70 SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule);
71 71
72 SceneObjectPart part1; 72 SceneObjectPart part1;
73 73
74 // Create and add prim 1 74 // Create and add prim 1
75 { 75 {
76 string partName = "My Little Pony"; 76 string partName = "My Little Pony";
@@ -79,17 +79,17 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
79 Vector3 groupPosition = new Vector3(10, 20, 30); 79 Vector3 groupPosition = new Vector3(10, 20, 30);
80 Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); 80 Quaternion rotationOffset = new Quaternion(20, 30, 40, 50);
81 Vector3 offsetPosition = new Vector3(5, 10, 15); 81 Vector3 offsetPosition = new Vector3(5, 10, 15);
82 82
83 part1 83 part1
84 = new SceneObjectPart( 84 = new SceneObjectPart(
85 ownerId, shape, groupPosition, rotationOffset, offsetPosition); 85 ownerId, shape, groupPosition, rotationOffset, offsetPosition);
86 part1.Name = partName; 86 part1.Name = partName;
87 87
88 scene.AddNewSceneObject(new SceneObjectGroup(part1), false); 88 scene.AddNewSceneObject(new SceneObjectGroup(part1), false);
89 } 89 }
90 90
91 SceneObjectPart part2; 91 SceneObjectPart part2;
92 92
93 // Create and add prim 2 93 // Create and add prim 2
94 { 94 {
95 string partName = "Action Man"; 95 string partName = "Action Man";
@@ -98,28 +98,28 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
98 Vector3 groupPosition = new Vector3(90, 80, 70); 98 Vector3 groupPosition = new Vector3(90, 80, 70);
99 Quaternion rotationOffset = new Quaternion(60, 70, 80, 90); 99 Quaternion rotationOffset = new Quaternion(60, 70, 80, 90);
100 Vector3 offsetPosition = new Vector3(20, 25, 30); 100 Vector3 offsetPosition = new Vector3(20, 25, 30);
101 101
102 part2 102 part2
103 = new SceneObjectPart( 103 = new SceneObjectPart(
104 ownerId, shape, groupPosition, rotationOffset, offsetPosition); 104 ownerId, shape, groupPosition, rotationOffset, offsetPosition);
105 part2.Name = partName; 105 part2.Name = partName;
106 106
107 scene.AddNewSceneObject(new SceneObjectGroup(part2), false); 107 scene.AddNewSceneObject(new SceneObjectGroup(part2), false);
108 } 108 }
109 109
110 MemoryStream archiveWriteStream = new MemoryStream(); 110 MemoryStream archiveWriteStream = new MemoryStream();
111 scene.EventManager.OnOarFileSaved += SaveCompleted; 111 scene.EventManager.OnOarFileSaved += SaveCompleted;
112 112
113 lock (this) 113 lock (this)
114 { 114 {
115 archiverModule.ArchiveRegion(archiveWriteStream); 115 archiverModule.ArchiveRegion(archiveWriteStream);
116 Monitor.Wait(this, 60000); 116 Monitor.Wait(this, 60000);
117 } 117 }
118 118
119 byte[] archive = archiveWriteStream.ToArray(); 119 byte[] archive = archiveWriteStream.ToArray();
120 MemoryStream archiveReadStream = new MemoryStream(archive); 120 MemoryStream archiveReadStream = new MemoryStream(archive);
121 TarArchiveReader tar = new TarArchiveReader(archiveReadStream); 121 TarArchiveReader tar = new TarArchiveReader(archiveReadStream);
122 122
123 bool gotControlFile = false; 123 bool gotControlFile = false;
124 bool gotObject1File = false; 124 bool gotObject1File = false;
125 bool gotObject2File = false; 125 bool gotObject2File = false;
@@ -132,11 +132,11 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
132 "{0}_{1:000}-{2:000}-{3:000}__{4}.xml", 132 "{0}_{1:000}-{2:000}-{3:000}__{4}.xml",
133 part2.Name, 133 part2.Name,
134 Math.Round(part2.GroupPosition.X), Math.Round(part2.GroupPosition.Y), Math.Round(part2.GroupPosition.Z), 134 Math.Round(part2.GroupPosition.X), Math.Round(part2.GroupPosition.Y), Math.Round(part2.GroupPosition.Z),
135 part2.UUID); 135 part2.UUID);
136 136
137 string filePath; 137 string filePath;
138 TarArchiveReader.TarEntryType tarEntryType; 138 TarArchiveReader.TarEntryType tarEntryType;
139 139
140 while (tar.ReadEntry(out filePath, out tarEntryType) != null) 140 while (tar.ReadEntry(out filePath, out tarEntryType) != null)
141 { 141 {
142 if (ArchiveConstants.CONTROL_FILE_PATH == filePath) 142 if (ArchiveConstants.CONTROL_FILE_PATH == filePath)
@@ -146,7 +146,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
146 else if (filePath.StartsWith(ArchiveConstants.OBJECTS_PATH)) 146 else if (filePath.StartsWith(ArchiveConstants.OBJECTS_PATH))
147 { 147 {
148 string fileName = filePath.Remove(0, ArchiveConstants.OBJECTS_PATH.Length); 148 string fileName = filePath.Remove(0, ArchiveConstants.OBJECTS_PATH.Length);
149 149
150 if (fileName.StartsWith(part1.Name)) 150 if (fileName.StartsWith(part1.Name))
151 { 151 {
152 Assert.That(fileName, Is.EqualTo(expectedObject1FileName)); 152 Assert.That(fileName, Is.EqualTo(expectedObject1FileName));
@@ -155,7 +155,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
155 else if (fileName.StartsWith(part2.Name)) 155 else if (fileName.StartsWith(part2.Name))
156 { 156 {
157 Assert.That(fileName, Is.EqualTo(expectedObject2FileName)); 157 Assert.That(fileName, Is.EqualTo(expectedObject2FileName));
158 gotObject2File = true; 158 gotObject2File = true;
159 } 159 }
160 } 160 }
161 } 161 }
@@ -163,7 +163,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
163 Assert.That(gotControlFile, Is.True, "No control file in archive"); 163 Assert.That(gotControlFile, Is.True, "No control file in archive");
164 Assert.That(gotObject1File, Is.True, "No object1 file in archive"); 164 Assert.That(gotObject1File, Is.True, "No object1 file in archive");
165 Assert.That(gotObject2File, Is.True, "No object2 file in archive"); 165 Assert.That(gotObject2File, Is.True, "No object2 file in archive");
166 166
167 // TODO: Test presence of more files and contents of files. 167 // TODO: Test presence of more files and contents of files.
168 // Temporary 168 // Temporary
169 Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod()); 169 Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod());
@@ -171,143 +171,143 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
171 171
172 /// <summary> 172 /// <summary>
173 /// Test loading a V0.2 OpenSim Region Archive. 173 /// Test loading a V0.2 OpenSim Region Archive.
174 /// </summary> 174 /// </summary>
175 [Test] 175 [Test]
176 public void TestLoadOarV0p2() 176 public void TestLoadOarV0p2()
177 { 177 {
178 //log4net.Config.XmlConfigurator.Configure(); 178 //log4net.Config.XmlConfigurator.Configure();
179 179
180 MemoryStream archiveWriteStream = new MemoryStream(); 180 MemoryStream archiveWriteStream = new MemoryStream();
181 TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); 181 TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream);
182 182
183 tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestExecution.Create0p2ControlFile()); 183 tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestExecution.Create0p2ControlFile());
184 184
185 string part1Name = "object1"; 185 string part1Name = "object1";
186 PrimitiveBaseShape shape = PrimitiveBaseShape.CreateCylinder(); 186 PrimitiveBaseShape shape = PrimitiveBaseShape.CreateCylinder();
187 Vector3 groupPosition = new Vector3(90, 80, 70); 187 Vector3 groupPosition = new Vector3(90, 80, 70);
188 Quaternion rotationOffset = new Quaternion(60, 70, 80, 90); 188 Quaternion rotationOffset = new Quaternion(60, 70, 80, 90);
189 Vector3 offsetPosition = new Vector3(20, 25, 30); 189 Vector3 offsetPosition = new Vector3(20, 25, 30);
190 190
191 SceneObjectPart part1 191 SceneObjectPart part1
192 = new SceneObjectPart( 192 = new SceneObjectPart(
193 UUID.Zero, shape, groupPosition, rotationOffset, offsetPosition); 193 UUID.Zero, shape, groupPosition, rotationOffset, offsetPosition);
194 part1.Name = part1Name; 194 part1.Name = part1Name;
195 SceneObjectGroup object1 = new SceneObjectGroup(part1); 195 SceneObjectGroup object1 = new SceneObjectGroup(part1);
196 196
197 string object1FileName = string.Format( 197 string object1FileName = string.Format(
198 "{0}_{1:000}-{2:000}-{3:000}__{4}.xml", 198 "{0}_{1:000}-{2:000}-{3:000}__{4}.xml",
199 part1Name, 199 part1Name,
200 Math.Round(groupPosition.X), Math.Round(groupPosition.Y), Math.Round(groupPosition.Z), 200 Math.Round(groupPosition.X), Math.Round(groupPosition.Y), Math.Round(groupPosition.Z),
201 part1.UUID); 201 part1.UUID);
202 tar.WriteFile(ArchiveConstants.OBJECTS_PATH + object1FileName, object1.ToXmlString2()); 202 tar.WriteFile(ArchiveConstants.OBJECTS_PATH + object1FileName, object1.ToXmlString2());
203 203
204 tar.Close(); 204 tar.Close();
205 205
206 MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); 206 MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray());
207 207
208 SerialiserModule serialiserModule = new SerialiserModule(); 208 SerialiserModule serialiserModule = new SerialiserModule();
209 ArchiverModule archiverModule = new ArchiverModule(); 209 ArchiverModule archiverModule = new ArchiverModule();
210 210
211 Scene scene = SceneSetupHelpers.SetupScene(); 211 Scene scene = SceneSetupHelpers.SetupScene();
212 SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); 212 SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule);
213 213
214 archiverModule.DearchiveRegion(archiveReadStream); 214 archiverModule.DearchiveRegion(archiveReadStream);
215 215
216 SceneObjectPart object1PartLoaded = scene.GetSceneObjectPart(part1Name); 216 SceneObjectPart object1PartLoaded = scene.GetSceneObjectPart(part1Name);
217 217
218 Assert.That(object1PartLoaded, Is.Not.Null, "object1 was not loaded"); 218 Assert.That(object1PartLoaded, Is.Not.Null, "object1 was not loaded");
219 Assert.That(object1PartLoaded.Name, Is.EqualTo(part1Name), "object1 names not identical"); 219 Assert.That(object1PartLoaded.Name, Is.EqualTo(part1Name), "object1 names not identical");
220 Assert.That(object1PartLoaded.GroupPosition, Is.EqualTo(groupPosition), "object1 group position not equal"); 220 Assert.That(object1PartLoaded.GroupPosition, Is.EqualTo(groupPosition), "object1 group position not equal");
221 Assert.That( 221 Assert.That(
222 object1PartLoaded.RotationOffset, Is.EqualTo(rotationOffset), "object1 rotation offset not equal"); 222 object1PartLoaded.RotationOffset, Is.EqualTo(rotationOffset), "object1 rotation offset not equal");
223 Assert.That( 223 Assert.That(
224 object1PartLoaded.OffsetPosition, Is.EqualTo(offsetPosition), "object1 offset position not equal"); 224 object1PartLoaded.OffsetPosition, Is.EqualTo(offsetPosition), "object1 offset position not equal");
225 225
226 // Temporary 226 // Temporary
227 Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod()); 227 Console.WriteLine("Successfully completed {0}", MethodBase.GetCurrentMethod());
228 } 228 }
229 229
230 /// <summary> 230 /// <summary>
231 /// Test merging a V0.2 OpenSim Region Archive into an existing scene 231 /// Test merging a V0.2 OpenSim Region Archive into an existing scene
232 /// </summary> 232 /// </summary>
233 ///[Test] 233 ///[Test]
234 public void TestMergeOarV0p2() 234 public void TestMergeOarV0p2()
235 { 235 {
236 //XmlConfigurator.Configure(); 236 //XmlConfigurator.Configure();
237 237
238 MemoryStream archiveWriteStream = new MemoryStream(); 238 MemoryStream archiveWriteStream = new MemoryStream();
239 239
240 string part2Name = "objectMerge"; 240 string part2Name = "objectMerge";
241 PrimitiveBaseShape part2Shape = PrimitiveBaseShape.CreateCylinder(); 241 PrimitiveBaseShape part2Shape = PrimitiveBaseShape.CreateCylinder();
242 Vector3 part2GroupPosition = new Vector3(90, 80, 70); 242 Vector3 part2GroupPosition = new Vector3(90, 80, 70);
243 Quaternion part2RotationOffset = new Quaternion(60, 70, 80, 90); 243 Quaternion part2RotationOffset = new Quaternion(60, 70, 80, 90);
244 Vector3 part2OffsetPosition = new Vector3(20, 25, 30); 244 Vector3 part2OffsetPosition = new Vector3(20, 25, 30);
245 245
246 // Create an oar file that we can use for the merge 246 // Create an oar file that we can use for the merge
247 { 247 {
248 ArchiverModule archiverModule = new ArchiverModule(); 248 ArchiverModule archiverModule = new ArchiverModule();
249 SerialiserModule serialiserModule = new SerialiserModule(); 249 SerialiserModule serialiserModule = new SerialiserModule();
250 TerrainModule terrainModule = new TerrainModule(); 250 TerrainModule terrainModule = new TerrainModule();
251 251
252 Scene scene = SceneSetupHelpers.SetupScene(); 252 Scene scene = SceneSetupHelpers.SetupScene();
253 SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule); 253 SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule);
254 254
255 SceneObjectPart part2 255 SceneObjectPart part2
256 = new SceneObjectPart( 256 = new SceneObjectPart(
257 UUID.Zero, part2Shape, part2GroupPosition, part2RotationOffset, part2OffsetPosition); 257 UUID.Zero, part2Shape, part2GroupPosition, part2RotationOffset, part2OffsetPosition);
258 part2.Name = part2Name; 258 part2.Name = part2Name;
259 SceneObjectGroup object2 = new SceneObjectGroup(part2); 259 SceneObjectGroup object2 = new SceneObjectGroup(part2);
260 260
261 scene.AddNewSceneObject(object2, false); 261 scene.AddNewSceneObject(object2, false);
262 262
263 // Write out this scene 263 // Write out this scene
264 scene.EventManager.OnOarFileSaved += SaveCompleted; 264 scene.EventManager.OnOarFileSaved += SaveCompleted;
265 265
266 lock (this) 266 lock (this)
267 { 267 {
268 archiverModule.ArchiveRegion(archiveWriteStream); 268 archiverModule.ArchiveRegion(archiveWriteStream);
269 Monitor.Wait(this, 60000); 269 Monitor.Wait(this, 60000);
270 } 270 }
271 } 271 }
272 272
273 { 273 {
274 ArchiverModule archiverModule = new ArchiverModule(); 274 ArchiverModule archiverModule = new ArchiverModule();
275 SerialiserModule serialiserModule = new SerialiserModule(); 275 SerialiserModule serialiserModule = new SerialiserModule();
276 TerrainModule terrainModule = new TerrainModule(); 276 TerrainModule terrainModule = new TerrainModule();
277 277
278 Scene scene = SceneSetupHelpers.SetupScene(); 278 Scene scene = SceneSetupHelpers.SetupScene();
279 SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule); 279 SceneSetupHelpers.SetupSceneModules(scene, archiverModule, serialiserModule, terrainModule);
280 280
281 string part1Name = "objectExisting"; 281 string part1Name = "objectExisting";
282 PrimitiveBaseShape part1Shape = PrimitiveBaseShape.CreateCylinder(); 282 PrimitiveBaseShape part1Shape = PrimitiveBaseShape.CreateCylinder();
283 Vector3 part1GroupPosition = new Vector3(80, 70, 60); 283 Vector3 part1GroupPosition = new Vector3(80, 70, 60);
284 Quaternion part1RotationOffset = new Quaternion(50, 60, 70, 80); 284 Quaternion part1RotationOffset = new Quaternion(50, 60, 70, 80);
285 Vector3 part1OffsetPosition = new Vector3(15, 20, 25); 285 Vector3 part1OffsetPosition = new Vector3(15, 20, 25);
286 286
287 SceneObjectPart part1 287 SceneObjectPart part1
288 = new SceneObjectPart( 288 = new SceneObjectPart(
289 UUID.Zero, part1Shape, part1GroupPosition, part1RotationOffset, part1OffsetPosition); 289 UUID.Zero, part1Shape, part1GroupPosition, part1RotationOffset, part1OffsetPosition);
290 part1.Name = part1Name; 290 part1.Name = part1Name;
291 SceneObjectGroup object1 = new SceneObjectGroup(part1); 291 SceneObjectGroup object1 = new SceneObjectGroup(part1);
292 292
293 scene.AddNewSceneObject(object1, false); 293 scene.AddNewSceneObject(object1, false);
294 294
295 // Merge in the archive we created earlier 295 // Merge in the archive we created earlier
296 byte[] archive = archiveWriteStream.ToArray(); 296 byte[] archive = archiveWriteStream.ToArray();
297 MemoryStream archiveReadStream = new MemoryStream(archive); 297 MemoryStream archiveReadStream = new MemoryStream(archive);
298 298
299 archiverModule.DearchiveRegion(archiveReadStream, true); 299 archiverModule.DearchiveRegion(archiveReadStream, true);
300 300
301 SceneObjectPart object1Existing = scene.GetSceneObjectPart(part1Name); 301 SceneObjectPart object1Existing = scene.GetSceneObjectPart(part1Name);
302 Assert.That(object1Existing, Is.Not.Null, "object1 was not present after merge"); 302 Assert.That(object1Existing, Is.Not.Null, "object1 was not present after merge");
303 Assert.That(object1Existing.Name, Is.EqualTo(part1Name), "object1 names not identical after merge"); 303 Assert.That(object1Existing.Name, Is.EqualTo(part1Name), "object1 names not identical after merge");
304 Assert.That(object1Existing.GroupPosition, Is.EqualTo(part1GroupPosition), "object1 group position not equal after merge"); 304 Assert.That(object1Existing.GroupPosition, Is.EqualTo(part1GroupPosition), "object1 group position not equal after merge");
305 305
306 SceneObjectPart object2PartMerged = scene.GetSceneObjectPart(part2Name); 306 SceneObjectPart object2PartMerged = scene.GetSceneObjectPart(part2Name);
307 Assert.That(object2PartMerged, Is.Not.Null, "object2 was not present after merge"); 307 Assert.That(object2PartMerged, Is.Not.Null, "object2 was not present after merge");
308 Assert.That(object2PartMerged.Name, Is.EqualTo(part2Name), "object2 names not identical after merge"); 308 Assert.That(object2PartMerged.Name, Is.EqualTo(part2Name), "object2 names not identical after merge");
309 Assert.That(object2PartMerged.GroupPosition, Is.EqualTo(part2GroupPosition), "object2 group position not equal after merge"); 309 Assert.That(object2PartMerged.GroupPosition, Is.EqualTo(part2GroupPosition), "object2 group position not equal after merge");
310 } 310 }
311 } 311 }
312 } 312 }
313} 313}