public void TestMove()
		{
      Vector3F[] oldPosition = _testShapes.StoreShapePositionArray();
      foreach (Shape3D shape in _testShapes)
        shape.Position = new Vector3F( 100.0f, 0.0f, 0.0f );
 
      Vector3F[] newPosition = _testShapes.StoreShapePositionArray();

      // spawn the action
      IAction moveAction = new MoveShapesAction( _testShapes, oldPosition, newPosition);

      ResetPropertyChanged();
      moveAction.Do();
      Assert.AreEqual( newPosition[0], (_testShapes[0] as Shape3D).Position );
      Assert.AreEqual( newPosition[1], (_testShapes[1] as Shape3D).Position );
      Assert.AreEqual( true, _propertyChanged );

      ResetPropertyChanged();
      moveAction.Undo();
      Assert.AreEqual( oldPosition[0], (_testShapes[0] as Shape3D).Position );
      Assert.AreEqual( oldPosition[1], (_testShapes[1] as Shape3D).Position );
      Assert.AreEqual( true, _propertyChanged );

      ResetPropertyChanged();
      moveAction.Do();
      Assert.AreEqual( newPosition[0], (_testShapes[0] as Shape3D).Position );
      Assert.AreEqual( newPosition[1], (_testShapes[1] as Shape3D).Position );
      Assert.AreEqual( true, _propertyChanged );
		}