public void DateTimeColumn_Basic()
        {
            DateTime[] samples = new DateTime[] { DateTime.UtcNow, DateTime.UtcNow.AddDays(-10), DateTime.MinValue.ToUniversalTime(), DateTime.MaxValue.ToUniversalTime() };

            DateTimeColumn column = new DateTimeColumn();

            Assert.AreEqual(0, column.Count);

            Verify.Exception <ArgumentOutOfRangeException>(() => { DateTime value = column[0]; });

            // Set values and verify they are read back consistently (all UTC)
            for (int i = 0; i < samples.Length; ++i)
            {
                column.Add();
                column[i] = samples[i];
                Assert.AreEqual(samples[i], column[i]);
            }

            Assert.AreEqual(samples.Length, column.Count);

            // Add a local time value and verify it's UTC when it comes back
            DateTime localTime = new DateTime(2017, 3, 7, 10, 26, 56, DateTimeKind.Local);

            column.Add();
            column[column.Count - 1] = localTime;
            Assert.AreEqual(localTime.ToUniversalTime(), column[column.Count - 1]);

            // Round-Trip the column
            DateTimeColumn readColumn = new DateTimeColumn();

            Verify.RoundTrip <DateTimeColumn>(column, readColumn);
            Assert.AreEqual(column.Count, readColumn.Count);

            for (int i = 0; i < column.Count; ++i)
            {
                Assert.AreEqual(column[i], readColumn[i]);
            }

            // Verify clear works
            column.Clear();
            Assert.AreEqual(0, column.Count);
            Verify.Exception <ArgumentOutOfRangeException>(() => { DateTime value = column[0]; });

            // Verify SetCount works
            column.SetCount(2);
            Assert.AreEqual(2, column.Count);
            Assert.AreEqual(DateTime.MinValue, column[1]);
        }