public void UnPeriodoIniciadoNoSePuedeTerminarConFinMenorQueInicio()
        {
            var fixture = new Fixture();
            var fin = fixture.CreateAnonymous<DateTime>();
            var inicio = fixture.CreateAnonymous<DateTime>();
            var sut = new Periodo(inicio);

            Assert.Throws<InvalidOperationException>(() => sut.Finalizar(fin));
        }
        public void UnPeriodoConFinNoEstaIniciado()
        {
            var fixture = new Fixture();
            var inicio = fixture.CreateAnonymous<DateTime>();
            var fin = fixture.CreateAnonymous<DateTime>();
            var sut = new Periodo(inicio, fin);

            sut.Inicio.Should().Be(inicio);
            sut.Fin.Should().Be(fin);
            sut.EstaIniciado.Should().BeFalse();
        }
        public void UnPeriodoIniciadoSePuedeTerminar()
        {
            var fixture = new Fixture();
            var inicio = fixture.CreateAnonymous<DateTime>();
            var fin = fixture.CreateAnonymous<DateTime>();
            var sut = new Periodo(inicio);

            sut.Finalizar(fin);

            sut.Inicio.Should().Be(inicio);
            sut.Fin.Should().Be(fin);
            sut.EstaIniciado.Should().BeFalse();
        }
        public void UnPeriodoSinFinEstaIniciado()
        {
            var fixture = new Fixture();
            var inicio = fixture.CreateAnonymous<DateTime>();
            var sut = new Periodo(inicio);

            sut.Inicio.Should().Be(inicio);
            sut.EstaIniciado.Should().BeTrue();
        }
 public void UnPeriodoIniciadoTieneDuracionZero(Periodo sut)
 {
     sut.Duracion.Should().Be(TimeSpan.Zero);
 }
        public void UnPeriodoTerminadoTieneDuracion(Periodo sut, DateTime fin)
        {
            sut.Finalizar(fin);
            var expected = fin.Subtract(sut.Inicio);

            sut.Duracion.Should().Be(expected);
        }