Пример #1
0
        public ValidationResult ValidateResource(EditTradeResource resource)
        {
            var result = new ValidationResult();

            if (resource != null)
            {
                var validator = new TradeValidator();
                var vr        = validator.Validate(resource);

                if (vr.IsValid)
                {
                    result.IsValid = true;
                    return(result);
                }


                if (vr.Errors.Any())
                {
                    foreach (var error in vr.Errors)
                    {
                        result.ErrorMessages.Add(error.PropertyName, error.ErrorMessage);
                    }
                }
            }

            return(result);
        }
Пример #2
0
        private TradeValidator GetObjectUnderTest()
        {
            var settingsRepositoryMock = new Mock <IValidationSettingsRepository>();

            settingsRepositoryMock.Setup(s => s.Get()).Returns(Settings);
            var underTest = new TradeValidator(settingsRepositoryMock.Object);

            return(underTest);
        }
Пример #3
0
        public static async Task CreateGts(Client c, string offer, string request, string index)
        {
            //If user is banned, return
            if (await Database.DbUserChecks.UserBanned(c.Username))
            {
                await c.SendMessage($"<GTSCREATE result=0 index={index}>");

                return;
            }
            //If user has more than max amount of allowed GTS trades, return
            if (await Database.Dbgts.GetNumberOfTrades(c.UserId) >= Data.MaximumGtsTradesPerUser)
            {
                await c.SendMessage($"<GTSCREATE result=1 index={index}>");

                return;
            }
            //Decode data
            var decodeOffer   = Utilities.Encoding.Base64Decode(offer);
            var decodeRequest = Utilities.Encoding.Base64Decode(request);

            int level;

            try
            {
                //Turn data into objects
                var pokemon = JsonConvert.DeserializeObject <GamePokemon>(decodeOffer);

                if (!await TradeValidator.IsPokemonValid(pokemon, c.UserId))
                {
                    await c.SendMessage($"<GTSCREATE result=0 index={index}>");

                    return;
                }

                //Get Pokemon Level
                level = GrowthRates.CalculateLevel(pokemon.species, pokemon.exp);
            }
            catch (InvalidCastException)
            {
                await c.SendMessage($"<GTSCREATE result=2 index={index}>");

                return;
            }

            //Input in database
            try
            {
                await Database.Dbgts.Add(c.UserId, decodeOffer, decodeRequest, level, c.Username);

                await c.SendMessage($"<GTSCREATE result=3 index={index}>");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                await c.SendMessage($"<GTSCREATE result=2 index={index}>");
            }
        }
        public void ShouldNotValidateClientsList()
        {
            //Arrange
            TradeValidator             tradeValidator = new TradeValidator(clientsRepository, shareRepository, clientsSharesRepository);
            IEnumerable <ClientEntity> clients        = new List <ClientEntity>();
            //Act
            var isValid = tradeValidator.ValidateClientList(clients, logger);

            //Assert
            Assert.AreEqual(false, isValid);
        }
        public void ShouldNotValidateChangeClientMoney()
        {
            //Arrange
            TradeValidator tradeValidator = new TradeValidator(clientsRepository, shareRepository, clientsSharesRepository);
            int            clientID       = 22;
            int            amount         = 200;
            //Act
            var isValid = tradeValidator.ValidateClientMoney(clientID, amount, logger);

            //Assert
            Assert.AreEqual(false, isValid);
            clientsRepository.Received(1).LoadClientByID(clientID);
        }
        public void ShouldNotValidateTradingClient()
        {
            //Arrange
            TradeValidator tradeValidator = new TradeValidator(clientsRepository, shareRepository, clientsSharesRepository);
            ClientEntity   client         = new ClientEntity()
            {
                ClientID = 1
            };
            //Act
            var isValid = tradeValidator.ValidateTradingClient(client, logger);

            //Assert
            Assert.AreEqual(false, isValid);
        }
        public void ShouldNotValidateShareInfo()
        {
            //Arrange
            TradeValidator        tradeValidator = new TradeValidator(clientsRepository, shareRepository, clientsSharesRepository);
            ShareRegistrationInfo shareInfo      = new ShareRegistrationInfo()
            {
                Name = "CostCorp",
                Cost = 0
            };
            //Act
            var isValid = tradeValidator.ValidateShareInfo(shareInfo, logger);

            //Assert
            Assert.AreEqual(false, isValid);
        }
        public void ShouldNotValidateClientInfo()
        {
            //Arrange
            TradeValidator         tradeValidator = new TradeValidator(clientsRepository, shareRepository, clientsSharesRepository);
            ClientRegistrationInfo clientInfo     = new ClientRegistrationInfo()
            {
                FirstName   = "566",
                LastName    = "*****@*****.**",
                PhoneNumber = "Josh"
            };
            //Act
            var isValid = tradeValidator.ValidateClientInfo(clientInfo, logger);

            //Assert
            Assert.AreEqual(false, isValid);
        }
Пример #9
0
        public OpenCloseStrategyDecision()
        {
            //decision strength variables
            BuyCounter       = 0;
            SellCounter      = 0;
            prevDecision     = StrategyDecision.None;
            prevDecisionType = StrategyDecision.None;

            AllDecisions =
                new HashSet <StrategyDecision> {
                StrategyDecision.Open,
                StrategyDecision.OpenMissed,
                StrategyDecision.TakeProfit,
                StrategyDecision.ExitHeavy,
                StrategyDecision.Exit,
                StrategyDecision.Escape
            };

            //missedposition decision variables
            MissedPositionStartCandleIndex = OpenCloseStrategySettings.settings.MissedPositionStartCandleIndex;
            MissedPositionEndCandleIndex   = OpenCloseStrategySettings.settings.MissedPositionEndCandleIndex;

            //heavyloss decision variables
            ExitImmediate       = OpenCloseStrategySettings.settings.ExitImmediate;
            HeavyRiskPercentage = OpenCloseStrategySettings.settings.HeavyRiskPercentage;

            //escape decision variables
            //EscapeTraps = OpenCloseStrategySettings.settings.EscapeTraps;
            EscapeTrapCandleIdx = OpenCloseStrategySettings.settings.EscapeTrapCandleIdx;

            //set variables to avoid wrong trades (trade validation)
            RequiredSignalGap         = OpenCloseStrategySettings.settings.SignalGap;
            BollingerFactor           = OpenCloseStrategySettings.settings.BollingerFactor;
            RequiredSignalQuality     = OpenCloseStrategySettings.settings.RequiredSignalQuality;
            ConsistentKandlesLookBack = OpenCloseStrategySettings.settings.ConsistentKandlesLookBack;
            ValidationRuleSet         = OpenCloseStrategySettings.settings.ValidationRuleSet;              //ruleset
            DecisionSet = new HashSet <string>(OpenCloseStrategySettings.settings.DecisionSet.Split(',')); //decisionset
            validator   = new TradeValidator(ValidationRuleSet);

            //decision signal strengths
            OpenPositionSignalStrength          = OpenCloseStrategySettings.settings.OpenPositionSignalStrength;
            MissedPositionSignalStrength        = OpenCloseStrategySettings.settings.MissedPositionSignalStrength;
            ExitPositionHeavyLossSignalStrength = OpenCloseStrategySettings.settings.ExitPositionHeavyLossSignalStrength;
            ExitSignalStrength       = OpenCloseStrategySettings.settings.ExitSignalStrength;
            TakeProfitSignalStrength = OpenCloseStrategySettings.settings.TakeProfitSignalStrength;
            EscapeTrapSignalStrength = OpenCloseStrategySettings.settings.EscapeTrapSignalStrength;
        }
Пример #10
0
        public void ShouldNotValidateNegativeShareToClientInfo()
        {
            //Arrange
            TradeValidator    tradeValidator  = new TradeValidator(clientsRepository, shareRepository, clientsSharesRepository);
            ClientsSharesInfo clientShareInfo = new ClientsSharesInfo()
            {
                ClientID = 1,
                ShareID  = 2,
                Amount   = -30
            };
            //Act
            var isValid = tradeValidator.ValidateShareToClient(clientShareInfo, logger);

            //Assert
            Assert.AreEqual(false, isValid);
            clientsRepository.Received(1).LoadClientByID(clientShareInfo.ClientID);
            shareRepository.Received(1).LoadShareByID(clientShareInfo.ShareID);
            clientsSharesRepository.Received(1).LoadClientsSharesByID(clientShareInfo);
        }
Пример #11
0
        private static TradesMonitor GetObjectUnderTest()
        {
            var validationSettings = new ValidationSettings()
            {
                OpenTimeDelta        = 1,
                VolumeToBalanceRatio = 0.05m,
            };
            var monitoringSettings = new MonitoringSettings()
            {
                RetentionPeriod = 3
            };
            var settingsRepositoryMock = new Mock <IValidationSettingsRepository>();

            settingsRepositoryMock.Setup(r => r.Get()).Returns(validationSettings);
            var monitoringSettingsRepositoryMock = new Mock <IMonitoringSettingsRepository>();

            monitoringSettingsRepositoryMock.Setup(r => r.Get()).Returns(monitoringSettings);
            var validator  = new TradeValidator(settingsRepositoryMock.Object);
            var loggerMock = new Mock <ILogger>();
            var underTest  = new TradesMonitor(validator, loggerMock.Object, monitoringSettingsRepositoryMock.Object);

            return(underTest);
        }
Пример #12
0
        public void ShouldNotValidateTradingClientWithZeroShares()
        {
            //Arrange
            TradeValidator tradeValidator = new TradeValidator(clientsRepository, shareRepository, clientsSharesRepository);
            ClientEntity   client         = new ClientEntity()
            {
                ClientID      = 1,
                ClientsShares = new HashSet <ClientsSharesEntity>()
                {
                    new ClientsSharesEntity()
                    {
                        ClientID = 1,
                        ShareID  = 2,
                        Amount   = 0
                    }
                }
            };
            //Act
            var isValid = tradeValidator.ValidateTradingClient(client, logger);

            //Assert
            Assert.AreEqual(false, isValid);
        }
Пример #13
0
        public static async Task AddTrade(Client client, string encodedPkmns)
        {
            if (await DbUserChecks.UserBanned(client.Username))
            {
                await client.SendMessage("<WTRESULT reult=0 user=nil pkmn=nil>");

                return;
            }
            if (List.Count(x => x.Value.Client == client) > 0)
            {
                return;
            }

            GamePokemon pkmn;

            try
            {
                pkmn = JsonConvert.DeserializeObject <GTS.GamePokemon>(
                    Utilities.Encoding.Base64Decode(encodedPkmns));
            }
            catch
            {
                await client.SendMessage("<WTRESULT result=1 user=nil pkmn=nil>");

                throw;
            }
            if (!await TradeValidator.IsPokemonValid(pkmn, client.UserId))
            {
                await client.SendMessage("<WTRESULT reult=0 user=nil pkmn=nil>");

                return;
            }

            var holder = new WonderTradeHolder(client, pkmn);

            List.TryAdd(holder.Id, holder);
        }
Пример #14
0
 public TradeValidatorTests()
 {
     _validator = new TradeValidator();
 }
Пример #15
0
        public static async Task OfferGts(Client c, string pokemon, string idstr)
        {
            uint id;

            if (!uint.TryParse(idstr, out id))
            {
                return;
            }
            //If user is banned, return
            if (await Database.DbUserChecks.UserBanned(c.Username))
            {
                await c.SendMessage("<GTSOFFER result=0 pkmn=nil>");

                return;
            }
            //Get Pokemon data from Database
            var poke = await Database.Dbgts.GetSingleTrade(id);

            //If already accepted send negative response
            if (poke == null || poke.Accepted)
            {
                await c.SendMessage("<GTSOFFER result=1 pkmn=nil>");

                return;
            }
            //decode string
            var decoded = Utilities.Encoding.Base64Decode(pokemon);
            //string to object
            var pkmn = JsonConvert.DeserializeObject <GamePokemon>(decoded);

            if (!await TradeValidator.IsPokemonValid(pkmn, c.UserId))
            {
                await c.SendMessage("<GTSOFFER result=0 pkmn=nil>");

                return;
            }


            var request = poke.Request;
            //Compare pokemon offered with requests on pokemon with id offered.
            var correct = GtsCompare.ValidOffer(pkmn, request);

            //If doesn't match, send negative response
            if (correct == false)
            {
                await c.SendMessage("<GTSOFFER result=2 pkmn=nil>");

                return;
            }
            //If it has been accepted, return negative (we do this twice to make absolutely sure it hasn't been traded in between)
            if (await Database.Dbgts.GetAccepted(id))
            {
                await c.SendMessage("<GTSOFFER result=1 pkmn=nil>");

                return;
            }
            //Set accepted to true, Set pokemon offered as pokemon for collector to receive
            await Database.Dbgts.SetAccepted(id, decoded);

            //Send positive response along with pokemon back to client.
            var encodedPokemon = Utilities.Encoding.Base64Encode(JsonConvert.SerializeObject(poke.Offer));
            await c.SendMessage($"<GTSOFFER result=3 pkmn={encodedPokemon}>");
        }