public void AllReplacementsTest() { Mock <HelperFilesCache> mockHelperFilesCache = new Mock <HelperFilesCache>(); mockHelperFilesCache.Setup(c => c.GetReplacementsMap(It.IsAny <string>())).Returns( new Dictionary <string, string> { { nameof(IGoogleTestAdapterSettings.ConfigurationName), "MyDebug" }, { nameof(IGoogleTestAdapterSettings.PlatformName), "Win33" } }); Mock <IGoogleTestAdapterSettings> mockOptions = new Mock <IGoogleTestAdapterSettings>(); Mock <ILogger> mockLogger = new Mock <ILogger>(); var placeholderReplacer = new PlaceholderReplacer( () => TestResources.SampleTestsSolutionDir, () => mockOptions.Object, mockHelperFilesCache.Object, mockLogger.Object); foreach (string methodName in MethodNames) { foreach (PlaceholderAndValue placeholder in PlaceholdersAndExpectedValues) { if (!UnsupportedCombinations.Any(combination => combination.MethodName == methodName && combination.Placeholder == placeholder.Placeholder)) { var result = InvokeMethodWithStandardParameters(placeholderReplacer, methodName, placeholder.Placeholder); result.Should().Be(placeholder.Value.ToString(), $"{methodName} should replace {placeholder.Placeholder} with {(object) placeholder.Value.ToString()}"); mockLogger.Verify(l => l.LogWarning(It.IsAny <string>()), Times.Never); } } } }
private string InvokeMethodWithStandardParameters(PlaceholderReplacer placeholderReplacer, string methodName, string input) { var method = typeof(PlaceholderReplacer).GetMethod(methodName); // ReSharper disable once PossibleNullReferenceException var parameters = method.GetParameters(); var parameterValues = new List <object> { input }; for (int i = 1; i < parameters.Length; i++) { parameterValues.Add(GetValue(parameters[i])); } return((string)method.Invoke(placeholderReplacer, parameterValues.ToArray())); }
public void AllReplacementMethods_UnknownPlaceholderResultsInWarning() { Mock <HelperFilesCache> mockHelperFilesCache = new Mock <HelperFilesCache>(); mockHelperFilesCache.Setup(c => c.GetReplacementsMap(It.IsAny <string>())) .Returns(new Dictionary <string, string>()); Mock <IGoogleTestAdapterSettings> mockOptions = new Mock <IGoogleTestAdapterSettings>(); Mock <ILogger> mockLogger = new Mock <ILogger>(); var replacer = new PlaceholderReplacer(() => "solutiondir", () => mockOptions.Object, mockHelperFilesCache.Object, mockLogger.Object); string placeholder = "$(UnknownPlaceholder)"; foreach (string methodName in MethodNames) { mockLogger.Reset(); string result = InvokeMethodWithStandardParameters(replacer, methodName, placeholder); result.Should().Be(placeholder); mockLogger.Verify(l => l.LogWarning(It.Is <string>(msg => msg.Contains(placeholder))), Times.Once); } }