public void Compute_ShouldReturnBids_WhenBelowMinimalAcceptedSpeed_ZeroLimit()
        {
            // Arrange
            var complier = new SignOfAttackCondition(_serviceProvider.Object);
            var orders   = new List <BidEntry>()
            {
                new BidEntry()
                {
                    Price         = 1,
                    Alive         = true,
                    AcceptedSpeed = 1,
                    LimitSpeed    = 4
                },
                new BidEntry()
                {
                    Price         = 2,
                    Alive         = true,
                    LimitSpeed    = 0,
                    AcceptedSpeed = 2
                }
            };
            var config = new ApiConfiguration()
            {
                PriceThreshold       = 1,
                LimitSpeed           = 10,
                MinimalAcceptedSpeed = 4
            };

            // Act
            var data = complier.Compute(orders, config);

            // Assert
            Assert.AreEqual(0, data.Count());
        }
        public void Compute_ShouldReturnBids_WhenWithinThreashold()
        {
            // Arrange
            var complier = new SignOfAttackCondition(_serviceProvider.Object);
            var orders   = new List <BidEntry>()
            {
                new BidEntry()
                {
                    NiceHashId    = "21",
                    Price         = 21.5,
                    Alive         = true,
                    AcceptedSpeed = 1
                },
                new BidEntry()
                {
                    NiceHashId = "20",
                    Price      = 22,
                    Alive      = true,
                    LimitSpeed = 10
                }
            };
            var config = new ApiConfiguration()
            {
                PriceThreshold = 1,
                LimitSpeed     = 11
            };

            // Act
            var data = complier.Compute(orders, config);

            // Assert
            Assert.AreEqual(1, data.Count());
            Assert.AreEqual("21", data.First().BidEntry.NiceHashId);
        }
        public void Compute_ShouldReturnEmptyList_WhenNothingMeetsCondition(int id)
        {
            // Arrange
            var complier = new SignOfAttackCondition(_serviceProvider.Object);
            var config   = new ApiConfiguration()
            {
                PriceThreshold = 1,
                LimitSpeed     = 10
            };

            // Act
            var data = complier.Compute(GetSignBidSet(id), config);

            // Assert
            Assert.IsFalse(data.Any());
        }
        public void Compute_ShouldReturnBidsUpdate_WhenBidSeen()
        {
            // Arrange
            var complier = new SignOfAttackCondition(_serviceProvider.Object);
            var orders   = new List <BidEntry>()
            {
                new BidEntry()
                {
                    NiceHashId    = "11",
                    Price         = 11,
                    Alive         = true,
                    AcceptedSpeed = 1
                },
                new BidEntry()
                {
                    NiceHashId = "11",
                    Price      = 22,
                    Alive      = true,
                    LimitSpeed = 0
                }
            };
            var config = new ApiConfiguration()
            {
                PriceThreshold = 1,
                LimitSpeed     = 10
            };

            // Act
            var data  = complier.Compute(orders, config);
            var data1 = complier.Compute(orders, config);

            // Assert
            Assert.AreEqual(1, data.Count());
            Assert.AreEqual(1, data1.Count());
            Assert.IsTrue(data1.First().Message.Contains("Progress"));
        }
        public void Compute_ShouldReturnBids_WhenMetCondition_HasLimit()
        {
            // Arrange
            var complier = new SignOfAttackCondition(_serviceProvider.Object);
            var orders   = new List <BidEntry>()
            {
                new BidEntry()
                {
                    NiceHashId    = "15",
                    Price         = 1,
                    Alive         = true,
                    AcceptedSpeed = 1,
                    LimitSpeed    = 1
                },
                new BidEntry()
                {
                    NiceHashId = "16",
                    Price      = 2,
                    Alive      = true,
                    LimitSpeed = 10
                }
            };
            var config = new ApiConfiguration()
            {
                PriceThreshold = 1,
                LimitSpeed     = 10
            };

            // Act
            var data = complier.Compute(orders, config);

            // Assert
            Assert.AreEqual(1, data.Count());
            Assert.IsNotEmpty(data.First().Message);
            Assert.IsNotEmpty(data.First().Condition);
        }