public void MergeTest()
        {
            // ReSharper disable AccessToModifiedClosure

            // Normal merge. The origin workspace is removed.
            TestWorkspace from = _manager.CreateEmptyWorkspace();
            TestWorkspace target = _manager.CreateEmptyWorkspace();
            _manager.Merge( from, target );
            Assert.IsFalse( _manager.Workspaces.Contains( from ) );
            Assert.IsTrue( _manager.Workspaces.Contains( target ) );

            // Merge with itself, nothing should happen.
            _manager.Merge( target, target );

            // Attempting to merge workspaces not managed by this manager.
            AssertHelper.ThrowsException<ArgumentException>( () => _manager.Merge( new TestWorkspace(), target ) );
            AssertHelper.ThrowsException<ArgumentException>( () => _manager.Merge( null, target ) );
            AssertHelper.ThrowsException<ArgumentException>( () => _manager.Merge( target, new TestWorkspace() ) );
            AssertHelper.ThrowsException<ArgumentException>( () => _manager.Merge( target, null ) );
            AssertHelper.ThrowsException<ArgumentException>( () => _manager.Merge( null, null ) );

            // Can't merge startup workspace
            _manager = new TestWorkspaceManager(); // Previous exception disposed the manager.
            target = _manager.CreateEmptyWorkspace();
            AssertHelper.ThrowsException<ArgumentException>( () => _manager.Merge( _manager.StartupWorkspace, target ) );

            // Can't merge current desktop.
            _manager = new TestWorkspaceManager(); // Previous exception disposed the manager.
            TestWorkspace current = _manager.CreateEmptyWorkspace();
            target = _manager.CreateEmptyWorkspace();
            _manager.SwitchToWorkspace( current );
            AssertHelper.ThrowsException<ArgumentException>( () => _manager.Merge( current, target ) );

            // ReSharper restore AccessToModifiedClosure
        }
 public void TestInitialize()
 {
     _manager = new TestWorkspaceManager();
 }