Example #1
0
        public void Buy_NotInitialized_ThrowsException()
        {
            var subject = new DemoBroker(Mock.Of <IExchange>());

            var exception = Expect.ThrowAsync <InvalidOperationException>(async() => { await subject.Buy(new Sample()); });

            Assert.AreEqual("Broker cannot Buy until Initialized!", exception.Message);
        }
Example #2
0
        public void GetTotalValue_NullSample_ThrowsException()
        {
            var subject = new DemoBroker(Mock.Of <IExchange>());

            var exception = Expect.Throw <ArgumentNullException>(() => { subject.GetTotalValue(null); });

            Assert.AreEqual("rate", exception.ParamName);
        }
Example #3
0
        public void Sell_NullSample_ThrowsException()
        {
            var subject = new DemoBroker(Mock.Of <IExchange>());

            var exception = Expect.ThrowAsync <ArgumentNullException>(async() => { await subject.Sell(null); });

            Assert.AreEqual("rate", exception.ParamName);
        }
Example #4
0
        public void Dispose_NotInitialized_CannotDoStuff()
        {
            var subject = new DemoBroker(Mock.Of <IExchange>());

            subject.Dispose();
            var exception = Expect.ThrowAsync <InvalidOperationException>(async() => { await subject.Sell(new Sample()); });

            Assert.AreEqual("Broker cannot Sell until Initialized!", exception.Message);
        }
Example #5
0
        public void GetTotalValue_GoodSample_CalculatesCorrectly()
        {
            var sample = new Sample()
            {
                Value = 1.25M
            };
            var subject = new DemoBroker(Mock.Of <IExchange>());

            var result = subject.GetTotalValue(sample);

            Assert.AreEqual(22.50M, result);
        }
Example #6
0
        public void Initialize_StartValueSmaller_ReturnsTrue()
        {
            var now          = DateTime.Now;
            var exchangeMock = new Mock <IExchange>();

            exchangeMock.SetupSequence(m => m.GetCurrentPrice())
            .ReturnsAsync(new Sample {
                Value = 100, DateTime = now
            })
            .ReturnsAsync(new Sample {
                Value = 99, DateTime = now + TimeSpan.FromMinutes(9)
            })
            .ReturnsAsync(new Sample {
                Value = 101, DateTime = now + TimeSpan.FromMinutes(10)
            });

            var subject = new DemoBroker(exchangeMock.Object);

            var result = subject.InitializeAsync(Assets.DOGE, Assets.BTC).Result;

            Assert.IsTrue(result);
        }
Example #7
0
        private DemoBroker InitBroker(Mock <IExchange> socketMock)
        {
            var now = DateTime.Now;

            socketMock.SetupSequence(m => m.GetCurrentPrice())
            .ReturnsAsync(new Sample {
                Value = 1.000M, DateTime = now
            })
            .ReturnsAsync(new Sample {
                Value = 1.000M, DateTime = now + TimeSpan.FromMinutes(9)
            })
            .ReturnsAsync(new Sample {
                Value = 1.000M, DateTime = now + TimeSpan.FromMinutes(10)
            });

            var subject = new DemoBroker(socketMock.Object);

            subject.InitializeAsync(Assets.DOGE, Assets.DOGE).Wait();

            socketMock.Reset();
            return(subject);
        }
Example #8
0
        public void Initialize_Connects_WarmsUpFor10Minutes()
        {
            var now          = DateTime.Now;
            var exchangeMock = new Mock <IExchange>();

            exchangeMock.SetupSequence(m => m.GetCurrentPrice())
            .ReturnsAsync(new Sample {
                Value = 100, DateTime = now
            })
            .ReturnsAsync(new Sample {
                Value = 100, DateTime = now + TimeSpan.FromMinutes(9)
            })
            .ReturnsAsync(new Sample {
                Value = 100, DateTime = now + TimeSpan.FromMinutes(10)
            });

            var subject = new DemoBroker(exchangeMock.Object);

            var result = subject.InitializeAsync(Assets.DOGE, Assets.BTC).Result;

            exchangeMock.Verify(m => m.Initialize(Assets.DOGE, Assets.BTC));
            exchangeMock.Verify(m => m.GetCurrentPrice(), Times.Exactly(3));
        }