public void WhenLongValuePassedIntoConstructor_ExpectSameValueReturned()
        {
            // Arrange
            long expected = DateTime.Now.Ticks;

            // Act
            var target = new DateTimeWrap(expected);
            var actual = target.DateTimeInstance.Ticks;

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenYearMonthDayPassedIntoConstructor_ExpectSameValueReturned()
        {
            // Arrange
            var expected = new DateTime(2012, 10, 15);

            // Act
            var target = new DateTimeWrap(expected.Year, expected.Month, expected.Day);
            var actual = target.DateTimeInstance;

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenYearMonthDayCalendarPassedIntoConstructor_ExpectSameValueReturned()
        {
            // Arrange
            var calendar = new HebrewCalendar();
            var expected = new DateTime(5776, 8, 17, calendar);

            // Act
            var target = new DateTimeWrap(5776, 8, 17, calendar);
            var actual = target.DateTimeInstance;

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenLongAndKindValuePassedIntoConstructor_ExpectSameValueReturned()
        {
            // Arrange
            long expected = DateTime.Now.Ticks;
            DateTimeKind expectedKind = DateTimeKind.Local;

            // Act
            var target = new DateTimeWrap(expected, expectedKind);
            var actual = target.DateTimeInstance;

            // Assert
            actual.Ticks.Should().Equal(expected);
            actual.Kind.Should().Equal(expectedKind);
        }
        public void WhenObjectEqualsDate1EqualsDate2_ExpectTrueReturned()
        {
            // Arrange
            var date1 = new DateTime(2015, 10, 15);
            object date2 = new DateTime(2015, 10, 15);
            const bool expected = true;

            // Act
            var target1 = new DateTimeWrap(date1);
            var target2 = date2;
            var actual = target1.Equals(target2);

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenDaysInMonthCalled_ExpectSameYearReturned()
        {
            // Arrange
            var now = DateTime.Now;
            var expected = DateTime.DaysInMonth(now.Year, now.Month);

            // Act
            var target = new DateTimeWrap(now);
            var actual = target.DaysInMonth(now.Year, now.Month);

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenEqualsCalled_ExpectFalseReturned()
        {
            // Arrange
            var now = DateTime.Now;
            const bool expected = false;

            // Act
            var target = new DateTimeWrap(now);
            var actual = target.Equals(target);

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenTryParseExactFormatsWithInvalidDate_ExpectFalse()
        {
            // Arrange
            const string dateTimeString = "10/55/2015";
            var formats = new[] { "MM/dd/yyyy" };
            var formatProvider = new DateTimeFormatInfo();
            var dateTimeStyles = DateTimeStyles.AdjustToUniversal;
            const bool expected = false;

            // Act
            IDateTime output;
            var target = new DateTimeWrap();
            var actual = target.TryParseExact(dateTimeString, formats, formatProvider, dateTimeStyles, out output);

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenObjectCompareToDate1GreaterThanDate2_ExpectOneReturned()
        {
            // Arrange
            var date1 = new DateTime(2015, 10, 15);
            object date2 = new DateTime(2015, 10, 15).AddDays(-3);
            var expected = 1;

            // Act
            var target1 = new DateTimeWrap(date1);
            var target2 = date2;
            var actual = target1.CompareTo(target2);

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenHourCalled_ExpectSameHourReturned()
        {
            // Arrange
            DateTime expected = DateTime.Now;

            // Act
            var target = new DateTimeWrap(expected);
            var actual = target.Hour;

            // Assert
            actual.Should().Equal(expected.Hour);
        }
        public void WhenParseCalled_ExpectEquivalentDateTimeValue()
        {
            // Arrange
            var dateTimeString = "10/15/2015";
            var expected = DateTime.Parse(dateTimeString);

            // Act
            var target = new DateTimeWrap();
            var actual = target.Parse(dateTimeString);

            // Assert
            actual.DateTimeInstance.Should().Equal(expected);
        }
        public void WhenFromFileTimeUtcCalled_ExpectSameValueReturned()
        {
            // Arrange
            const long fileTime = 12345578;
            var expected = DateTime.FromFileTimeUtc(fileTime);

            // Act
            var target = new DateTimeWrap();
            var actual = target.FromFileTimeUtc(fileTime);

            // Assert
            actual.DateTimeInstance.Should().Equal(expected);
        }
        public void WhenGetDateTimeFormatsWithFormatProviderCharCalled_ExpectSameValueReturned()
        {
            // Arrange
            var today = DateTime.Today;
            var formatProvider = new DateTimeFormatInfo();
            char format = 'd';
            var expected = today.GetDateTimeFormats(format, formatProvider);

            // Act
            var target = new DateTimeWrap(today);
            var actual = target.GetDateTimeFormats(format, formatProvider);

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenYearCalled_ExpectSameYearReturned()
        {
            // Arrange
            DateTime expected = DateTime.Now;

            // Act
            var target = new DateTimeWrap(expected);
            var actual = target.TimeOfDay;

            // Assert
            actual.Should().Equal(expected.TimeOfDay);
        }
        public void WhenAddCalled_ExpectSameValueReturned()
        {
            // Arrange
            var now = DateTime.Now;
            var addedTimeSpan = TimeSpan.FromDays(15);
            var expected = now.Add(addedTimeSpan);

            // Act
            var target = new DateTimeWrap(now);
            var actual = target.Add(addedTimeSpan);

            // Assert
            actual.DateTimeInstance.Should().Equal(expected);
        }
        public void WhenSecondCalled_ExpectSameSecondReturned()
        {
            // Arrange
            DateTime expected = DateTime.Now;

            // Act
            var target = new DateTimeWrap(expected);
            var actual = target.Second;

            // Assert
            actual.Should().Equal(expected.Second);
        }
        public void WhenMonthCalled_ExpectSameMonthReturned()
        {
            // Arrange
            DateTime expected = DateTime.Now;

            // Act
            var target = new DateTimeWrap(expected);
            var actual = target.Month;

            // Assert
            actual.Should().Equal(expected.Month);
        }
        public void WhenDateCalled_ExpectDateReturned()
        {
            // Arrange
            DateTime expected = DateTime.Now;

            // Act
            var target = new DateTimeWrap(expected);
            var actual = target.Date;

            // Assert
            actual.Year.Should().Equal(expected.Year);
            actual.Month.Should().Equal(expected.Month);
            actual.Day.Should().Equal(expected.Day);
        }
        public void WhenYearMonthDayHoursMinutesSecondsMillisecondCalendarKindPassedIntoConstructor_ExpectSameValueReturned()
        {
            // Arrange
            var calendar = new HebrewCalendar();
            DateTimeKind expectedKind = DateTimeKind.Local;
            var expected = new DateTime(5776, 8, 17, 23, 15, 15, 151, calendar, expectedKind);

            // Act
            var target = new DateTimeWrap(5776, 8, 17, 23, 15, 15, 151, calendar, expectedKind);
            var actual = target.DateTimeInstance;

            // Assert
            actual.Should().Equal(expected);
            expectedKind.Should().Equal(actual.Kind);
        }
        public void WhenIsNotDaylightSavingTime_ExpectFalseReturned()
        {
            // Arrange
            var date = new DateTime(2015, 1, 1);
            const bool expected = false;

            // Act
            var target = new DateTimeWrap(date);
            var actual = target.IsDaylightSavingTime();

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenNotEqualsDate1EqualsDate2_ExpectTrueReturned()
        {
            // Arrange
            var date1 = new DateTime(2015, 10, 15);
            var date2 = new DateTime(2015, 10, 15).AddDays(15);
            const bool expected = false;

            // Act
            var target1 = new DateTimeWrap(date1);
            var target2 = new DateTimeWrap(date2);
            var actual = target1.Equals(target1, target2);

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenDayOfWeekCalled_ExpectSameDayOfWeekReturned()
        {
            // Arrange
            DateTime expected = DateTime.Now;

            // Act
            var target = new DateTimeWrap(expected);
            var actual = target.DayOfWeek;

            // Assert
            actual.Should().Equal(expected.DayOfWeek);
        }
        public void WhenFromOADateUtcCalled_ExpectSameValueReturned()
        {
            // Arrange
            const double oaTime = 30000;
            var expected = DateTime.FromOADate(oaTime);

            // Act
            var target = new DateTimeWrap();
            var actual = target.FromOADate(oaTime);

            // Assert
            actual.DateTimeInstance.Should().Equal(expected);
        }
        public void WhenAddYearsCalled_ExpectSameValueReturned()
        {
            // Arrange
            var now = DateTime.Now;
            const int added = 15;
            var expected = now.AddYears(added);

            // Act
            var target = new DateTimeWrap(now);
            var actual = target.AddYears(added);

            // Assert
            actual.DateTimeInstance.Should().Equal(expected);
        }
        public void WhenGetTypeCodeCalled_ExpectSameValueReturned()
        {
            // Arrange
            var today = DateTime.Today;
            var expected = today.GetTypeCode();

            // Act
            var target = new DateTimeWrap(today);
            var actual = target.GetTypeCode();

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenCompareToDate1LessThanDate2_ExpectNegativeOneReturned()
        {
            // Arrange
            var date1 = new DateTime(2015, 10, 15).AddDays(-3);
            var date2 = new DateTime(2015, 10, 15);
            var expected = -1;

            // Act
            var target1 = new DateTimeWrap(date1);
            var target2 = new DateTimeWrap(date2);
            var actual = target1.CompareTo(target2);

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenYearIsNotLeapYear_ExpectFalse()
        {
            // Arrange
            const bool expected = false;
            const int input = 2011;

            // Act
            var target = new DateTimeWrap();
            var actual = target.IsLeapYear(input);

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenObjectCompareToEqualDates_ExpectZeroReturned()
        {
            // Arrange
            var date1 = new DateTime(2015, 10, 15);
            object date2 = new DateTime(2015, 10, 15);
            var expected = 0;

            // Act
            var target1 = new DateTimeWrap(date1);
            var target2 = date2;
            var actual = target1.CompareTo(target2);

            // Assert
            actual.Should().Equal(expected);
        }
        public void WhenParseWithFormatProviderCalled_ExpectEquivalentValue()
        {
            // Arrange
            var dateTimeString = "10/15/2015";
            var formatProvider = new DateTimeFormatInfo();
            var expected = DateTime.Parse(dateTimeString, formatProvider);

            // Act
            var target = new DateTimeWrap();
            var actual = target.Parse(dateTimeString, formatProvider);

            // Assert
            actual.DateTimeInstance.Should().Equal(expected);
        }
        public void WhenYearMonthDayHoursMinutesSecondsMillisecondKindPassedIntoConstructor_ExpectSameValueReturned()
        {
            // Arrange
            DateTimeKind expectedKind = DateTimeKind.Local;
            var expected = new DateTime(2015, 10, 15, 23, 15, 15, 151);

            // Act
            var target = new DateTimeWrap(expected.Year, expected.Month, expected.Day, expected.Hour, expected.Minute, expected.Second, expected.Millisecond, expectedKind);
            var actual = target.DateTimeInstance;

            // Assert
            actual.Should().Equal(expected);
            expectedKind.Should().Equal(actual.Kind);
        }