public void MoveAndCopyTest()
 {
     //this test checks that a object is correctly copied and moved
     //create a box
     using (var m = new MemoryModel(new Xbim.Ifc4.EntityFactoryIfc4()))
     {
         using (var txn = m.BeginTransaction("Test"))
         {
             {
                 var block = IfcModelBuilder.MakeBlock(m, 10, 10, 10);
                 var solid = _geomEngine.CreateSolid(block);
                 var ax3D  = IfcModelBuilder.MakeAxis2Placement3D(m);
                 ax3D.Location.Y = 100;
                 var solidA = _geomEngine.Moved(solid, ax3D) as IXbimSolid;
                 Assert.IsNotNull(solidA, "Should be the same type as the master");
                 Assert.IsTrue(Math.Abs(solidA.Volume - solid.Volume) < 1e-9, "Volume has changed");
                 var displacement = solidA.BoundingBox.Centroid() - solid.BoundingBox.Centroid();
                 Assert.IsTrue(displacement == new XbimVector3D(0, 100, 0));
                 var bbA    = solidA.BoundingBox;
                 var solidB = _geomEngine.Moved(solid, ax3D);
                 Assert.IsTrue(bbA.Centroid() - solidB.BoundingBox.Centroid() == new XbimVector3D(0, 0, 0));
             }
         }
     }
 }