public void MultipleBuildsSameSolution(params int[] buildTimeInMilliseconds)
        {
            var json = CreateBuildsJSON(buildTimeInMilliseconds.Select(b => CreateBuild(buildTimeInMilliseconds: b)));

            var buildTimes = new AnalyseBuildTimes().Calculate(json);

            Assert.That(buildTimes.Total == TimeSpan.FromMilliseconds(buildTimeInMilliseconds.Sum()));
        }
        public void OneBuildTimeTotal(int singleBuildTimeInMilliseconds)
        {
            var json = CreateBuildsJSON(CreateBuildJSON(CreateBuild(buildTimeInMilliseconds: singleBuildTimeInMilliseconds)));

            var buildTimes = new AnalyseBuildTimes().Calculate(json);

            Assert.That(buildTimes.Total == TimeSpan.FromMilliseconds(singleBuildTimeInMilliseconds));
        }
        public void IgnoreNullSolutionNames()
        {
            const string json =
                @"[{
    'Start': '2016-01-22T18:53:33.6172723+00:00',
    'Time': 2,
    'Solution': {
                }
}]";

            var buildTimes = new AnalyseBuildTimes().Calculate(json);

            Assert.AreEqual(0, buildTimes.AvailableSolutions.Count());
        }
        public void AvailableMonths()
        {
            var solutionbuilds = CreateBuilds(
                CreateBuild(buildDateTime: JANUARY1())
                , CreateBuild(buildDateTime: JANUARY31())
                , CreateBuild(buildDateTime: MARCH())
                );

            var json = CreateBuildsJSON(solutionbuilds);

            var buildTimes = new AnalyseBuildTimes().Calculate(json);

            var expected = CreateSolutionMonths(CreateSolutionMonth(JANUARY1()), CreateSolutionMonth(MARCH()));

            CollectionAssert.AreEqual(expected, buildTimes.AvailableMonths);
        }
        public void MultipleBuildsMultipleSolutions()
        {
            var solutionbuilds = CreateBuilds(
                CreateBuild("BuildMonitor", 1)
                , CreateBuild("Cedd", 2)
                , CreateBuild("BuildMonitor", 982734789)
                , CreateBuild("Cedd", 83468)
                );

            var json = CreateBuildsJSON(solutionbuilds);

            var buildTimes = new AnalyseBuildTimes().Calculate(json);

            foreach (var solution in solutionbuilds.Select(s => s.Solution).Distinct())
            {
                Assert.That(buildTimes.Solution(solution) == TimeSpan.FromMilliseconds(solutionbuilds.Where(s => s.Solution == solution).Sum(s => s.BuildTimeInMilliseconds)));
            }
        }
        public void AvailableSolutions()
        {
            const string CEDD         = "Cedd";
            const string BUILDMONITOR = "BuildMonitor";

            var solutionbuilds = CreateBuilds(
                CreateBuild(solution: CEDD)
                , CreateBuild(solution: BUILDMONITOR)
                , CreateBuild(solution: CEDD)
                );

            var json = CreateBuildsJSON(solutionbuilds);

            var buildTimes = new AnalyseBuildTimes().Calculate(json);

            var expected = new List <string>()
            {
                CEDD, BUILDMONITOR
            };

            CollectionAssert.AreEqual(expected, buildTimes.AvailableSolutions);
        }
        public void MultipleBuildsMultipleMonthsMultipleSolutions()
        {
            var solutionbuilds = CreateBuilds(
                CreateBuild("BuildMonitor", 1, JANUARY1())
                , CreateBuild("Cedd", 2, JANUARY31())
                , CreateBuild("BuildMonitor", 982734789, FEBRUARY())
                , CreateBuild("Cedd", 83468, MARCH())
                );

            var json = CreateBuildsJSON(solutionbuilds);

            //act
            var buildTimes = new AnalyseBuildTimes().Calculate(json);

            // assert
            var solutionMonths = solutionbuilds.Select(s => new SolutionMonth(solution: s.Solution, month: s.BuildDateTime.Month, year: s.BuildDateTime.Year)).Distinct();

            foreach (var solutionMonth in solutionMonths)
            {
                Assert.That(buildTimes.SolutionMonth(solutionMonth.Solution, solutionMonth.Month, solutionMonth.Year) == TimeSpan.FromMilliseconds(solutionbuilds.Where(s => s.Solution == solutionMonth.Solution && s.BuildDateTime.Month == solutionMonth.Month && s.BuildDateTime.Year == solutionMonth.Year).Sum(s => s.BuildTimeInMilliseconds)));
            }
        }