Skip to content

Instantly share code, notes, and snippets.

@ankitvijay
Last active April 11, 2020 22:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ankitvijay/5fb9f0b07bb359abe36c9edb535e407d to your computer and use it in GitHub Desktop.
Save ankitvijay/5fb9f0b07bb359abe36c9edb535e407d to your computer and use it in GitHub Desktop.
xUnitMemberDataExample_Version2_2
public class AnimalRepositoryTestSource : TestSource
{
public AnimalRepositoryTestSource(SearchCriteria searchCriteria, string expectedResult, [CallerMemberName]string testName = null)
: base(testName)
{
SearchCriteria = searchCriteria;
ExpectedResult = expectedResult;
}
public SearchCriteria SearchCriteria { get; }
public string ExpectedResult { get; }
}
public class AnimalRepositoryTests
{
[Theory]
[MemberData(nameof(GetFindAnimalData))]
public void FindReturnsCorrectResult(AnimalRepositoryTestSource testData)
{
var repository = new AnimalRepository();
// Act
var result = repository.Find(testData.SearchCriteria);
// Assert
Assert.Equal(testData.ExpectedResult, result);
}
public static IEnumerable<object[]> GetFindAnimalData()
{
yield return WhenSearchTermDoesNotExist();
yield return WhenIgnoreCaseIsSetToTrue();
yield return WhenSearchTermIsPartialMatch();
}
private static object[] WhenSearchTermDoesNotExist()
{
return new object[]
{
new AnimalRepositoryTestSource(new SearchCriteria("FOX"), null)
};
}
private static object[] WhenIgnoreCaseIsSetToTrue()
{
return new object[]
{
new AnimalRepositoryTestSource(new SearchCriteria("dog", true), "DOG")
};
}
private static object[] WhenSearchTermIsPartialMatch()
{
return new object[]
{
new AnimalRepositoryTestSource(new SearchCriteria("IG", true), "TIGER")
};
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment