public void Does_Return_1DayBefore_StartDateTime_When_TemplateValue_first_With_MinusTime()
        {
            //Arrange
            var startDateTime = new DateTimeOffset(new DateTime(2019, 04, 01, 12, 00, 00), TimeSpan.FromHours(2));
            var endDateTime   = new DateTimeOffset(new DateTime(2019, 04, 01, 18, 00, 00), TimeSpan.FromHours(-7));

            var points = new PointDate()
            {
                DateTimeStart = startDateTime,
                DateTimeEnd   = endDateTime
            };

            var templateValue = "first-1440";

            //Act
            var result = DateTimeTransformer.CalculateToRightDateTime(points, templateValue);

            //Assert
            Assert.AreEqual("2019/03/31 12:00:00", result.Value.ToString("yyyy/MM/dd HH:mm:ss"));
        }
        public void Does_ReturnDateTimeEnd_When_TemplateValue_last()
        {
            //Arrange
            var startDateTime = new DateTimeOffset(new DateTime(2019, 04, 01, 12, 00, 00), TimeSpan.FromHours(2));
            var endDateTime   = new DateTimeOffset(new DateTime(2019, 04, 01, 18, 00, 00), TimeSpan.FromHours(-7));

            var points = new PointDate()
            {
                DateTimeStart = startDateTime,
                DateTimeEnd   = endDateTime
            };

            var templateValue = "last";

            //Act
            var result = DateTimeTransformer.CalculateToRightDateTime(points, templateValue);

            //Assert
            Assert.AreEqual(endDateTime, result.Value);
        }
        public void Does_ReturnNull_When_TemplateValueIsNull()
        {
            //Arrange
            var startDateTime = new DateTimeOffset(new DateTime(2019, 04, 01, 12, 00, 00), TimeSpan.FromHours(2));
            var endDateTime   = new DateTimeOffset(new DateTime(2019, 04, 01, 18, 00, 00), TimeSpan.FromHours(-7));

            var points = new PointDate()
            {
                DateTimeStart = startDateTime,
                DateTimeEnd   = endDateTime
            };

            string templateValue = null;

            //Act
            var result = DateTimeTransformer.CalculateToRightDateTime(points, templateValue);

            //Assert
            Assert.IsFalse(result.HasValue);
        }
        public void Does_Return_1DaysAfter_EndDateTime_When_TemplateValue_last_With_PlusTime_with_leading_zero()
        {
            //Arrange
            var startDateTime = new DateTimeOffset(new DateTime(2019, 04, 01, 12, 00, 00), TimeSpan.FromHours(2));
            var endDateTime   = new DateTimeOffset(new DateTime(2019, 04, 01, 18, 00, 00), TimeSpan.FromHours(-7));

            var points = new PointDate()
            {
                DateTimeStart = startDateTime,
                DateTimeEnd   = endDateTime
            };

            var templateValue = "last+001440";

            //Act
            var result = DateTimeTransformer.CalculateToRightDateTime(points, templateValue);

            //Assert
            Assert.AreEqual("2019/04/02 18:00:00", result.Value.ToString("yyyy/MM/dd HH:mm:ss"));
        }