public void ShouldIncludesNodaTimeRange() { var batchdr = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0), DateTimeExtensions.CreateNodaTime(2019, 2, 16, 23, 59, 59)); // start == batchdr.Start && end == batchdr.Start var dr1 = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0), DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0)); Assert.True(batchdr.Includes(dr1)); // start == batchdr.Start && end == batchdr.End var dr2 = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0), DateTimeExtensions.CreateNodaTime(2019, 2, 16, 23, 59, 59)); Assert.True(batchdr.Includes(dr2)); // start == batchdr.End && end == batchdr.End var dr3 = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 16, 23, 59, 59), DateTimeExtensions.CreateNodaTime(2019, 2, 16, 23, 59, 59)); Assert.True(batchdr.Includes(dr3)); // start > batchdr.Start && end < batchdr.End var dr4 = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 1, 59, 59), DateTimeExtensions.CreateNodaTime(2019, 2, 15, 23, 59, 59)); Assert.True(batchdr.Includes(dr4)); // start > batchdr.Start && end > batchdr.End var dr5 = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 1, 59, 59), DateTimeExtensions.CreateNodaTime(2019, 2, 17, 23, 59, 59)); Assert.False(batchdr.Includes(dr5)); // start < batchdr.Start && end < batchdr.End var dr6 = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 9, 1, 59, 59), DateTimeExtensions.CreateNodaTime(2019, 2, 15, 23, 59, 59)); Assert.False(batchdr.Includes(dr6)); // start < batchdr.Start && end > batchdr.End var dr7 = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 9, 1, 59, 59), DateTimeExtensions.CreateNodaTime(2019, 2, 17, 23, 59, 59)); Assert.False(batchdr.Includes(dr7)); }
public void ShouldIncludesNodaTime() { var batchdr = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0), DateTimeExtensions.CreateNodaTime(2019, 2, 16, 23, 59, 59)); // start bool included = batchdr.Includes(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0)); Assert.True(included); // > start && < end bool included1 = batchdr.Includes(DateTimeExtensions.CreateNodaTime(2019, 2, 13, 23, 22, 22)); Assert.True(included1); // end bool included2 = batchdr.Includes(DateTimeExtensions.CreateNodaTime(2019, 2, 16, 23, 59, 59)); Assert.True(included2); // < start bool included3 = batchdr.Includes(DateTimeExtensions.CreateNodaTime(1, 2, 13, 23, 22, 22)); Assert.False(included3); // > end bool included4 = batchdr.Includes(DateTimeExtensions.CreateNodaTime(2019, 2, 17, 0, 0, 0)); Assert.False(included4); }
public void ShouldReturnPrettyString() { var batchdr = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0), DateTimeExtensions.CreateNodaTime(2019, 2, 16, 23, 59, 59)); string str = batchdr.ToString(); Assert.Equal("Start: 2019-02-10 00:00:00 End: 2019-02-16 23:59:59", str); }
public void ShouldWriteWhenSeriesHasFirstItem_ShortDateRange() { CandleEvent[] candleEvents = new CandleEvent[] { // date NOT included in date range, event will NOT be added new CandleEvent(new Candle(11f, 34f, 12f, 15f), DateTimeExtensions.CreateNodaTime(1999, 12, 31, 0, 0, 0).ToUnixTimeTicks()), // date NOT included in date range, event will NOT be added new CandleEvent(new Candle(11f, 34f, 12f, 15f), DateTimeExtensions.CreateNodaTime(1999, 12, 31, 15, 0, 0).ToUnixTimeTicks()), // date included in date range, event will be added (mock that it was already written to a file) new CandleEvent(new Candle(33f, 34f, 12f, 15f), DateTimeExtensions.CreateNodaTime(2000, 1, 1, 0, 0, 0).ToUnixTimeTicks()), // date included in date range, event will be added new CandleEvent(new Candle(15f, 34f, 12f, 15f), DateTimeExtensions.CreateNodaTime(2000, 1, 1, 1, 0, 0).ToUnixTimeTicks()), // date included in date range, event will be added new CandleEvent(new Candle(15f, 66f, 12f, 15f), DateTimeExtensions.CreateNodaTime(2000, 1, 1, 1, 15, 0).ToUnixTimeTicks()), // date included in date range, event will be added new CandleEvent(new Candle(15f, 88f, 12f, 15f), DateTimeExtensions.CreateNodaTime(2000, 1, 1, 1, 54, 0).ToUnixTimeTicks()), // date NOT included in date range, event will NOT be added new CandleEvent(new Candle(99f, 99f, 12f, 15f), DateTimeExtensions.CreateNodaTime(2000, 1, 2, 1, 0, 0).ToUnixTimeTicks()), }; string filePath = Path.Combine(Environment.CurrentDirectory, "test5.csv"); Cleanup(filePath); // manually add 1st event using (StreamWriter sw = new StreamWriter(filePath, true)) { // write to the file sw.WriteLine("2000-01-01T00:00:00,33,34,12,15"); } var seriesWriter = new EventSavingService(); IRange <NodaTime.Instant> oneDayRange = new BatchDateRange( DateTimeExtensions.CreateNodaTime(2000, 1, 1, 0, 0, 0), DateTimeExtensions.CreateNodaTime(2000, 1, 1, 23, 59, 59) ); int addedCandles = seriesWriter.Write(candleEvents, filePath, cts.Token, oneDayRange); // writing should have added 4-1=3 events; Assert.Equal(3, addedCandles); Assert.True(File.Exists(filePath)); var fileContents = File.ReadAllText(filePath); Assert.Contains("2000-01-01T00:00:00,33,34,12,15", fileContents); Assert.Contains("2000-01-01T01:15:00,15,66,12,15", fileContents); Assert.Contains("2000-01-01T01:54:00,15,88,12,15", fileContents); Assert.DoesNotContain("99,99,12,15", fileContents); // assert that there are 4 candle events written to file (file has 5 lines) Assert.Equal(5, fileContents.SplitByNewLine().Length); int addedCandles2 = seriesWriter.Write(candleEvents, filePath, cts.Token, oneDayRange); // writing again should not have added any more events Assert.Equal(0, addedCandles2); // assert that there are 4 candle events written to file (file has 5 lines) (no changes) Assert.Equal(5, fileContents.SplitByNewLine().Length); Cleanup(filePath); }
public void ShouldHaveValidDateRange() { var batchdr = new BatchDateRange( new DateTime(2019, 2, 10, 0, 0, 0, DateTimeKind.Utc).ToNodaTime(), new DateTime(2019, 2, 16, 23, 59, 59, DateTimeKind.Utc).ToNodaTime()); Assert.Equal(new DateTime(2019, 2, 10, 0, 0, 0, DateTimeKind.Utc).ToNodaTime(), batchdr.Start); Assert.Equal(new DateTime(2019, 2, 16, 23, 59, 59, DateTimeKind.Utc).ToNodaTime(), batchdr.End); }
public void ShouldThrowExceptionWhenRangeIsTooShort() { var range = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0), DateTimeExtensions.CreateNodaTime(2019, 2, 2, 23, 59, 59)); Action testCode = () => { range.Verify(); }; var ex = Record.Exception(testCode); Assert.NotNull(ex); Assert.IsType <ArgumentException>(ex); Assert.Equal("Expected end datetime - start datetime to be 1 week - 1 hour, was: -168", ex.Message); }
public void ShouldThrowExceptionWhenEndIsNotAt235959() { var range = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0), DateTimeExtensions.CreateNodaTime(2019, 2, 16, 23, 59, 58)); Action testCode = () => { range.Verify(); }; var ex = Record.Exception(testCode); Assert.NotNull(ex); Assert.IsType <ArgumentException>(ex); Assert.Equal("Expected end dateTime to be HH:MM:SS 23:59:59, was: 23:59:58", ex.Message); }
public void ShouldThrowExceptionWhenEndIsNotSaturday() { var range = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0), DateTimeExtensions.CreateNodaTime(2019, 2, 15, 23, 59, 59)); Action testCode = () => { range.Verify(); }; var ex = Record.Exception(testCode); Assert.NotNull(ex); Assert.IsType <ArgumentException>(ex); Assert.Equal("Expected end dateTime to be Saturday, was: Friday", ex.Message); }
public void ShouldThrowExceptionWhenStartIsNotMidnight() { var range = new BatchDateRange( DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 1, 0), DateTimeExtensions.CreateNodaTime(2019, 2, 16, 23, 59, 59)); Action testCode = () => { range.Verify(); }; var ex = Record.Exception(testCode); Assert.NotNull(ex); Assert.IsType <ArgumentException>(ex); Assert.Equal("Expected start dateTime to be HH:MM:SS 00:00:00, was: 00:01:00", ex.Message); }
public void ShouldGetWiderBatchDateRange() { var range = new BatchDateRange( DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0), DateTimeExtensions.CreateNodaTime(2019, 2, 16, 23, 59, 59)); var service = new BatchNumberService(); var widerRange = service.GetWiderBatchDateRange(range); Assert.Equal(DateTimeExtensions.CreateNodaTime(2019, 2, 9, 23, 45, 0), widerRange.Start); Assert.Equal(DateTimeExtensions.CreateNodaTime(2019, 2, 17, 0, 14, 59), widerRange.End); }
public void ShouldReturnNextBatchDateRange() { var batchdr = new BatchDateRange(DateTimeExtensions.CreateNodaTime(2019, 2, 10, 0, 0, 0), DateTimeExtensions.CreateNodaTime(2019, 2, 16, 23, 59, 59)); var next = batchdr.GetNext(); Assert.Equal(DateTimeExtensions.CreateNodaTime(2019, 2, 17, 0, 0, 0), next.Start); Assert.Equal(DateTimeExtensions.CreateNodaTime(2019, 2, 23, 23, 59, 59), next.End); var next2 = next.GetNext(); Assert.Equal(DateTimeExtensions.CreateNodaTime(2019, 2, 24, 0, 0, 0), next2.Start); Assert.Equal(DateTimeExtensions.CreateNodaTime(2019, 3, 2, 23, 59, 59), next2.End); }