diff --git a/ComiServUnitTest/AuthenticationServiceTests.cs b/ComiServUnitTest/AuthenticationServiceTests.cs new file mode 100644 index 0000000..7274b2c --- /dev/null +++ b/ComiServUnitTest/AuthenticationServiceTests.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ComiServ.Entities; +using ComiServ.Services; + +namespace ComiServUnitTest; + +[TestClass] +public class AuthenticationServiceTests +{ + [TestMethod] + public void FailAuth() + { + IAuthenticationService auth = new AuthenticationService(); + Assert.IsFalse(auth.Tested); + auth.FailAuth(); + Assert.IsTrue(auth.Tested); + Assert.IsNull(auth.User); + } + [TestMethod] + public void AuthenticateUser() + { + IAuthenticationService auth = new AuthenticationService(); + User user = new() + { + Username = "NewUser", + UserTypeId = UserTypeEnum.User, + }; + Assert.IsFalse(auth.Tested); + auth.Authenticate(user); + Assert.IsTrue(auth.Tested); + Assert.IsNotNull(auth.User); + Assert.AreSame(user, auth.User); + } +} diff --git a/ComiServUnitTest/ComiServUnitTest.csproj b/ComiServUnitTest/ComiServUnitTest.csproj new file mode 100644 index 0000000..beae4d9 --- /dev/null +++ b/ComiServUnitTest/ComiServUnitTest.csproj @@ -0,0 +1,28 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + + + + + + + + + + + + diff --git a/ComiServUnitTest/PaginatedTests.cs b/ComiServUnitTest/PaginatedTests.cs new file mode 100644 index 0000000..d04a911 --- /dev/null +++ b/ComiServUnitTest/PaginatedTests.cs @@ -0,0 +1,87 @@ +using ComiServ.Models; +using Microsoft.EntityFrameworkCore.Metadata.Conventions; +using System.CodeDom; +using System.Security.Policy; + +namespace ComiServUnitTest; + +[TestClass] +public class PaginatedTests +{ + [TestMethod] + public void PageUnderUnderflow() + { + const int pageNum = 1; + const int pageSize = 20; + const int dataSize = 30; + var data = Enumerable.Range(0, dataSize).ToArray(); + var page = new Paginated(pageSize, pageNum, data); + Assert.IsTrue(page.Last); + Assert.AreEqual(pageSize, page.Max); + Assert.AreEqual(pageNum, page.Page); + Assert.AreEqual(10, page.Count); + Assert.AreEqual(page.Items.Count, page.Count); + Assert.AreEqual(20, page.Items.First()); + Assert.AreEqual(data.Last(), page.Items.Last()); + } + [TestMethod] + public void PageOverflow() + { + const int pageNum = 2; + const int pageSize = 30; + const int dataSize = 150; + var data = Enumerable.Range(0, dataSize).ToArray(); + var page = new Paginated(pageSize, pageNum, data); + Assert.IsFalse(page.Last); + Assert.AreEqual(pageSize, page.Max); + Assert.AreEqual(pageNum, page.Page); + Assert.AreEqual(pageSize, page.Count); + Assert.AreEqual(page.Items.Count, page.Count); + Assert.AreEqual(pageSize*pageNum, page.Items.First()); + Assert.AreEqual(pageSize*(pageNum+1)-1, page.Items.Last()); + } + [TestMethod] + public void PageExact() + { + const int pageNum = 1; + const int pageSize = 30; + const int dataSize = 60; + var data = Enumerable.Range(0, dataSize).ToArray(); + var page = new Paginated(pageSize, pageNum, data); + Assert.IsTrue(page.Last); + Assert.AreEqual(pageSize, page.Max); + Assert.AreEqual(pageNum, page.Page); + Assert.AreEqual(pageSize, page.Count); + Assert.AreEqual(page.Items.Count, page.Count); + Assert.AreEqual(pageSize * pageNum, page.Items.First()); + Assert.AreEqual(data.Last(), page.Items.Last()); + } + [TestMethod] + public void PageEmpty() + { + const int pageNum = 0; + const int pageSize = 10; + const int dataSize = 0; + var data = Enumerable.Range(0, dataSize).ToArray(); + var page = new Paginated(pageSize, pageNum, data); + Assert.IsTrue(page.Last); + Assert.AreEqual(pageSize, page.Max); + Assert.AreEqual(pageNum, page.Page); + Assert.AreEqual(page.Items.Count, page.Count); + Assert.IsFalse(page.Items.Any()); + } + [TestMethod] + public void PageDoesntExist() + { + const int pageNum = 5; + const int pageSize = 20; + const int dataSize = 50; + var data = Enumerable.Range(0, dataSize).ToArray(); + var page = new Paginated(pageSize, pageNum, data); + Assert.IsTrue(page.Last); + Assert.AreEqual(pageSize, page.Max); + Assert.AreEqual(pageNum, page.Page); + Assert.AreEqual(page.Items.Count, page.Count); + Assert.IsFalse(page.Items.Any()); + } +} \ No newline at end of file diff --git a/ComiServUnitTest/TruncatedTests.cs b/ComiServUnitTest/TruncatedTests.cs new file mode 100644 index 0000000..8926f6e --- /dev/null +++ b/ComiServUnitTest/TruncatedTests.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ComiServ.Models; + +namespace ComiServUnitTest; + +[TestClass] +public class TruncatedTests +{ + [TestMethod] + public void TruncationUnderflow() + { + const int truncMax = 20; + const int dataSize = 10; + var data = Enumerable.Range(0, dataSize).ToArray(); + var trunc = new Truncated(truncMax, data); + Assert.IsTrue(trunc.Complete); + Assert.AreEqual(truncMax, trunc.Max); + Assert.AreEqual(dataSize, trunc.Count); + Assert.AreEqual(trunc.Items.Count, trunc.Count); + Assert.AreEqual(data.First(), trunc.Items.First()); + Assert.AreEqual(data.Last(), trunc.Items.Last()); + } + [TestMethod] + public void TruncationOverflow() + { + const int truncMax = 20; + const int dataSize = 30; + var data = Enumerable.Range(0, dataSize).ToArray(); + var trunc = new Truncated(truncMax, data); + Assert.IsFalse(trunc.Complete); + Assert.AreEqual(truncMax, trunc.Max); + Assert.AreEqual(truncMax, trunc.Count); + Assert.AreEqual(trunc.Items.Count, trunc.Count); + Assert.AreEqual(data.First(), trunc.Items.First()); + Assert.AreEqual(truncMax - 1, trunc.Items.Last()); + } + [TestMethod] + public void TruncationExact() + { + const int truncMax = 5; + const int dataSize = 5; + var data = Enumerable.Range(0, dataSize).ToArray(); + var trunc = new Truncated(truncMax, data); + Assert.IsTrue(trunc.Complete); + Assert.AreEqual(truncMax, trunc.Max); + Assert.AreEqual(truncMax, trunc.Count); + Assert.AreEqual(trunc.Items.Count, trunc.Count); + Assert.AreEqual(data.First(), trunc.Items.First()); + Assert.AreEqual(data.Last(), trunc.Items.Last()); + } + [TestMethod] + public void TruncationEmpty() + { + const int truncMax = 5; + const int dataSize = 0; + var data = Enumerable.Range(0, dataSize).ToArray(); + var trunc = new Truncated(truncMax, data); + Assert.IsTrue(trunc.Complete); + Assert.AreEqual(truncMax, trunc.Max); + Assert.AreEqual(0, trunc.Count); + Assert.AreEqual(trunc.Items.Count, trunc.Count); + } +}