|
1 | 1 | using System; |
2 | 2 | using System.Collections.Generic; |
| 3 | +using System.Globalization; |
3 | 4 | using System.Linq; |
4 | 5 | using System.Threading.Tasks; |
5 | 6 | using Microsoft.VisualBasic; |
@@ -858,5 +859,44 @@ public async Task TestStatelessCollection() |
858 | 859 | Assert.Equal(0,collection.StateManager.Data.Count); |
859 | 860 | Assert.Equal(0,collection.StateManager.Snapshot.Count); |
860 | 861 | } |
| 862 | + |
| 863 | + public void CompareTimestamps(DateTime ts1, DateTime ts2) |
| 864 | + { |
| 865 | + Assert.Equal(ts1.ToString("yyyy-MM-ddTHH\\:mm\\:ss.fff", CultureInfo.InvariantCulture), ts2.ToString("yyyy-MM-ddTHH\\:mm\\:ss.fff", CultureInfo.InvariantCulture)); |
| 866 | + } |
| 867 | + |
| 868 | + [Fact] |
| 869 | + public async Task TestTimeStampRanges() |
| 870 | + { |
| 871 | + var collection = new RedisCollection<ObjectWithDateTime>(_connection, false, 10000); |
| 872 | + var timestamp = DateTime.Now; |
| 873 | + var greaterThanTimestamp = DateTime.Now.Subtract(TimeSpan.FromHours(1)); |
| 874 | + var unixTimestamp = new DateTimeOffset(timestamp).ToUnixTimeMilliseconds(); |
| 875 | + var obj = new ObjectWithDateTime { Timestamp = timestamp, NullableTimestamp = timestamp }; |
| 876 | + var id = await collection.InsertAsync(obj); |
| 877 | + var first = await collection.FirstOrDefaultAsync(x => x.Timestamp > greaterThanTimestamp); |
| 878 | + Assert.NotNull(first); |
| 879 | + Assert.NotNull(first.NullableTimestamp); |
| 880 | + CompareTimestamps(timestamp, first.Timestamp); |
| 881 | + CompareTimestamps(timestamp, first.NullableTimestamp.Value); |
| 882 | + Assert.Equal(obj.Id, first.Id); |
| 883 | + } |
| 884 | + |
| 885 | + [Fact] |
| 886 | + public async Task TestTimeStampRangesHash() |
| 887 | + { |
| 888 | + var collection = new RedisCollection<ObjectWithDateTimeHash>(_connection, false, 10000); |
| 889 | + var timestamp = DateTime.Now; |
| 890 | + var greaterThanTimestamp = DateTime.Now.Subtract(TimeSpan.FromHours(1)); |
| 891 | + var unixTimestamp = new DateTimeOffset(timestamp).ToUnixTimeMilliseconds(); |
| 892 | + var obj = new ObjectWithDateTimeHash { Timestamp = timestamp, NullableTimestamp = timestamp }; |
| 893 | + var id = await collection.InsertAsync(obj); |
| 894 | + var first = await collection.FirstOrDefaultAsync(x => x.Timestamp > greaterThanTimestamp); |
| 895 | + Assert.NotNull(first); |
| 896 | + Assert.NotNull(first.NullableTimestamp); |
| 897 | + CompareTimestamps(timestamp, first.Timestamp); |
| 898 | + CompareTimestamps(timestamp, first.NullableTimestamp.Value); |
| 899 | + Assert.Equal(obj.Id, first.Id); |
| 900 | + } |
861 | 901 | } |
862 | 902 | } |
0 commit comments