コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }