private static void TestFizzBuzzFooBarSequence(IReadOnlyList <string> actual, IFizzBuzzSettings settings) { Assert.IsNotNull(actual); long max = settings.Pairs.Aggregate <KeyValuePair <long, string>, long>(1, (current, kvp) => current * kvp.Key); Assert.AreEqual(actual.Count, max, $"For test should have a count of {max}"); for (var index = 0; index < max; index++) { var comp = index + settings.Start; var pairs = settings.Pairs.Where(x => (comp % x.Key) == 0).Select(kvp => kvp.Value).ToArray(); var expected = pairs.Any() ? $"{string.Join("", pairs)}" : $"{comp}"; Assert.AreEqual(actual[(int)index], expected, $"Expected: '{expected}', actual: '{actual[index]}'"); } }
public IEnumerable <string> ExecuteWhile(ContinueWhile condition, IFizzBuzzSettings fizzBuzzSettings = null) { Settings = fizzBuzzSettings; return(Shortcut() ?? Shortcut(condition) ?? ConditionalExecute(condition)); }
public FizzBuzz(IFizzBuzzSettings settings = null) { Settings = settings; }
public FizzBuzzWhile(IFizzBuzzSettings settings, ContinueWhile condition) : base(settings) { _condition = condition; }
public FizzBuzzWhile(IFizzBuzzSettings settings = null) : base(settings) { }
public FibonacciFizzBuzz(IFizzBuzzSettings settings) : base(settings) { }
public override IFizzBuzzSettings SettingsChanged(IFizzBuzzSettings settings) { _last = settings.Start = 1L; return(base.SettingsChanged(settings)); }
public FibonacciFizzBuzz(IFizzBuzzSettings settings, ContinueWhile condition) : base(settings, condition) { }