/TheOrderedJobs/FluentAssertions.cs
C# | 48 lines | 40 code | 8 blank | 0 comment | 1 complexity | 5dfe39d6b66ec1b2e34383d666524d57 MD5 | raw file
- using System.Collections.Generic;
- using System.Linq;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using TheOrderedJobs.Code;
-
- namespace TheOrderedJobs
- {
- internal static class FluentAssertions
- {
- public static void ShouldContain(this IEnumerable<Job> jobs, string names)
- {
- Assert.IsTrue(jobs.All(job => names.Contains(job.Name)));
- }
-
- public static void ShouldBeFalse(this bool condition)
- {
- Assert.IsFalse(condition);
- }
-
- public static void ShouldEqual<T>(this T actual, T expected)
- {
- Assert.AreEqual(expected, actual);
- }
-
- public static void ShouldHaveFollowingOrder(this IEnumerable<Job> jobs, Job first, Job last)
- {
- jobs.ShouldHaveFollowingOrder(first.Name, last.Name);
- }
-
- public static void ShouldHaveFollowingOrder(this IEnumerable<Job> jobs, string first, string last)
- {
- Assert.IsTrue(jobs.HasFollowingOrder(first, last));
- }
-
- private static bool HasFollowingOrder(this IEnumerable<Job> jobs, string first, string last)
- {
- var firstIndex = jobs.OrderOf(first);
- var lastIndex = jobs.OrderOf(last);
-
- return firstIndex < lastIndex;
- }
-
- public static int OrderOf(this IEnumerable<Job> jobs, string name)
- {
- return jobs.TakeWhile(job => job.Name != name).Count();
- }
- }
- }