theoryData
continuous-integration/drone/push Build is passing Details

master
Marc CHEVALDONNE 7 months ago
parent 0b00fe20b9
commit dc5ebf62ec

@ -0,0 +1,33 @@
using Model;
namespace TestDataManager;
public class DataManagerTest_WithTheoryDataAndClassData
{
[Theory]
[ClassData(typeof(TestData_BorrowBook_TheoryData))]
public async void TestBorrowBook(bool expectedResult, Book bookToBorrow, Person borrower, IDataManager dataManager)
{
bool result = await dataManager.BorrowBook(bookToBorrow, borrower);
Book? book = (await dataManager.GetBooksByIsbn(bookToBorrow?.Isbn, 0, 100)).SingleOrDefault();
Person? person = (await dataManager.GetPersonsByName(borrower?.LastName, 0, 100)).SingleOrDefault();
Assert.Equal(expectedResult, result);
if(result)
{
Assert.NotNull(book);
Assert.NotNull(person);
Assert.Contains(book, person.Books);
Assert.Equal(person, book.Borrower);
}
else
{
if(person != null && book != null)
{
Assert.DoesNotContain(book, person.Books);
Assert.NotEqual(person, book.Borrower);
}
}
}
}

@ -0,0 +1,34 @@
using System;
using Model;
namespace TestDataManager;
public class DataManagerTest_WithTheoryDataAndMemberData2
{
[Theory]
[MemberData(nameof(TestData_WithTheoryDataAndMemberData2.TestData_BorrowBook), MemberType = typeof(TestData_WithTheoryDataAndMemberData2))]
public async void TestBorrowBook(bool expectedResult, Book bookToBorrow, Person borrower, IDataManager dataManager)
{
bool result = await dataManager.BorrowBook(bookToBorrow, borrower);
Book? book = (await dataManager.GetBooksByIsbn(bookToBorrow?.Isbn, 0, 100)).SingleOrDefault();
Person? person = (await dataManager.GetPersonsByName(borrower?.LastName, 0, 100)).SingleOrDefault();
Assert.Equal(expectedResult, result);
if(result)
{
Assert.NotNull(book);
Assert.NotNull(person);
Assert.Contains(book, person.Books);
Assert.Equal(person, book.Borrower);
}
else
{
if(person != null && book != null)
{
Assert.DoesNotContain(book, person.Books);
Assert.NotEqual(person, book.Borrower);
}
}
}
}

@ -0,0 +1,41 @@
using System;
using Model;
namespace TestDataManager;
public class DataManagerTest_WithTheoryDataAndMemberData4
{
[Theory]
[MemberData(nameof(TestData_WithTheoryDataAndMemberData4.GetTestData_BorrowBook), parameters: true, MemberType = typeof(TestData_WithTheoryDataAndMemberData4))]
public async void TestBorrowBook_Success(bool expectedResult, Book bookToBorrow, Person borrower, IDataManager dataManager)
{
bool result = await dataManager.BorrowBook(bookToBorrow, borrower);
Book? book = (await dataManager.GetBooksByIsbn(bookToBorrow?.Isbn, 0, 100)).SingleOrDefault();
Person? person = (await dataManager.GetPersonsByName(borrower?.LastName, 0, 100)).SingleOrDefault();
Assert.Equal(expectedResult, result);
Assert.NotNull(book);
Assert.NotNull(person);
Assert.Contains(book, person.Books);
Assert.Equal(person, book.Borrower);
}
[Theory]
[MemberData(nameof(TestData_WithTheoryDataAndMemberData4.GetTestData_BorrowBook), parameters: false, MemberType = typeof(TestData_WithTheoryDataAndMemberData4))]
public async void TestBorrowBook_Fail(bool expectedResult, Book bookToBorrow, Person borrower, IDataManager dataManager)
{
bool result = await dataManager.BorrowBook(bookToBorrow, borrower);
Book? book = (await dataManager.GetBooksByIsbn(bookToBorrow?.Isbn, 0, 100)).SingleOrDefault();
Person? person = (await dataManager.GetPersonsByName(borrower?.LastName, 0, 100)).SingleOrDefault();
Assert.Equal(expectedResult, result);
if(person != null && book != null)
{
Assert.DoesNotContain(book, person.Books);
Assert.NotEqual(person, book.Borrower);
}
}
}

@ -1,12 +1,8 @@
using System;
using System.Collections; using System.Collections;
using Model; using Model;
using Stub;
namespace TestDataManager; namespace TestDataManager;
public class TestData_BorrowBook : IEnumerable<object[]> public class TestData_BorrowBook : IEnumerable<object[]>
{ {
public IEnumerator<object[]> GetEnumerator() public IEnumerator<object[]> GetEnumerator()
@ -15,7 +11,7 @@ public class TestData_BorrowBook : IEnumerable<object[]>
yield return new object[] { false, null, null, new BorrowBookStub() }; yield return new object[] { false, null, null, new BorrowBookStub() };
//no book //no book
yield return new object[] { false, null, new Person("John", "Coltrane"), new StubDataManager() }; yield return new object[] { false, null, new Person("John", "Coltrane"), new BorrowBookStub() };
//no borrower //no borrower
yield return new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), null, new BorrowBookStub() }; yield return new object[] { false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), null, new BorrowBookStub() };

@ -0,0 +1,40 @@
using System;
using Model;
namespace TestDataManager;
public class TestData_BorrowBook_TheoryData : TheoryData<bool, Book, Person, IDataManager>
{
public TestData_BorrowBook_TheoryData()
{
//no book and no borrower
Add(false, null, null, new BorrowBookStub());
//no book
Add(false, null, new Person("John", "Coltrane"), new BorrowBookStub());
//no borrower
Add(false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), null, new BorrowBookStub());
//new book and new borrower
Add(false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person("John", "Coltrane"), new BorrowBookStub());
//new book and already known borrower
Add(false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person(1, "Chick", "Corea"), new BorrowBookStub());
//already known but free book and new borrower
Add(false, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person("John", "Coltrane"), new BorrowBookStub());
//already known but already borrowed book and new borrower
Add(false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person("John", "Coltrane"), new BorrowBookStub());
//already known but free book and already known borrower
Add(true, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person(1, "Chick", "Corea"), new BorrowBookStub());
//already known but already borrowed book by another borrower and already known borrower
Add(false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(2, "Stanley", "Clarke"), new BorrowBookStub());
//already known but already borrowed book by this borrower and already known borrower
Add(true, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(1, "Chick", "Corea"), new BorrowBookStub());
}
}

@ -0,0 +1,42 @@
using System;
using Model;
using Xunit.Sdk;
namespace TestDataManager;
public class TestData_WithTheoryDataAndMemberData2
{
public static TheoryData<bool, Book, Person, IDataManager> TestData_BorrowBook =>
new TheoryData<bool, Book, Person, IDataManager>
{
//T1. no book and no borrower
{ false, null, null, new BorrowBookStub() },
//T2. no book
{ false, null, new Person("John", "Coltrane"), new BorrowBookStub() },
//T3. no borrower
{ false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), null, new BorrowBookStub() },
//T4. new book and new borrower
{ false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person("John", "Coltrane"), new BorrowBookStub() },
//T5. new book and already known borrower
{ false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
//T6. already known but free book and new borrower
{ false, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person("John", "Coltrane"), new BorrowBookStub() },
//T7. already known but already borrowed book and new borrower
{ false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person("John", "Coltrane"), new BorrowBookStub() },
//T8. already known but free book and already known borrower
{ true, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
//T9. already known but already borrowed book by another borrower and already known borrower
{ false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(2, "Stanley", "Clarke"), new BorrowBookStub() },
//T10. already known but already borrowed book by this borrower and already known borrower
{ true, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
};
}

@ -0,0 +1,45 @@
using System;
using Model;
namespace TestDataManager;
public class TestData_WithTheoryDataAndMemberData4
{
public static IEnumerable<object[]> GetTestData_BorrowBook(bool expectedResult)
{
var testData = new TheoryData<bool, Book, Person, IDataManager>
{
//T1. no book and no borrower
{ false, null, null, new BorrowBookStub() },
//T2. no book
{ false, null, new Person("John", "Coltrane"), new BorrowBookStub() },
//T3. no borrower
{ false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), null, new BorrowBookStub() },
//T4. new book and new borrower
{ false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person("John", "Coltrane"), new BorrowBookStub() },
//T5. new book and already known borrower
{ false, new Book( "Les Pardaillan", "Michel Zévaco", "978-2221098417"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
//T6. already known but free book and new borrower
{ false, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person("John", "Coltrane"), new BorrowBookStub() },
//T7. already known but already borrowed book and new borrower
{ false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person("John", "Coltrane"), new BorrowBookStub() },
//T8. already known but free book and already known borrower
{ true, new Book(2, "Les Misérables", "Victor Hugo", "979-8850172916"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
//T9. already known but already borrowed book by another borrower and already known borrower
{ false, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(2, "Stanley", "Clarke"), new BorrowBookStub() },
//T10. already known but already borrowed book by this borrower and already known borrower
{ true, new Book(1, "Les Trois Mousquetaires", "Alexandre Dumas", "979-8415441792"), new Person(1, "Chick", "Corea"), new BorrowBookStub() },
};
return testData.Where(data => (bool)data[0] == expectedResult);
}
}
Loading…
Cancel
Save