public void Copy_Succeeds( [Values] ItemType itemType ) { switch (itemType) { case ItemType.BuildDefinition: Assert.That(() => _commands.Copy(itemType, "name1", "name2"), Throws.Nothing); _buildToolMock.Verify(x => x.Copy(It.IsAny <string>(), It.IsAny <string>()), Times.Once); break; case ItemType.ReleaseDefinition: Assert.That(() => _commands.Copy(itemType, "name1", "name2"), Throws.Nothing); _releaseToolMock.Verify(x => x.Copy(It.IsAny <string>(), It.IsAny <string>()), Times.Once); break; case ItemType.Repository: Assert.That(() => _commands.Copy(itemType, "name1", "name2"), Throws.Nothing); _repositoryToolMock.Verify(x => x.Copy(It.IsAny <string>(), It.IsAny <string>()), Times.Once); break; case ItemType.TaskGroup: Assert.That(() => _commands.Copy(itemType, "name1", "name2"), Throws.Nothing); _taskToolMock.Verify(x => x.Copy(It.IsAny <string>(), It.IsAny <string>()), Times.Once); break; case ItemType.VariableGroup: Assert.That(() => _commands.Copy(itemType, "name1", "name2"), Throws.Nothing); _variableToolMock.Verify(x => x.Copy(It.IsAny <string>(), It.IsAny <string>()), Times.Once); break; case ItemType.Project: Assert.That(() => _commands.Copy(itemType, "name1", "name2"), Throws.Nothing); _projectToolMock.Verify(x => x.Copy(It.IsAny <string>(), It.IsAny <string>()), Times.Once); break; default: Assert.Fail($"Unexpected Item {itemType}"); break; } }