/// <summary>
        /// Случай для обычного пакета
        /// </summary>
        private static ValidationResult IsSimpleAllowedCase(AdditionalChecks checks, AmountOfStockSubmited amountOfStockSubmited, CumYesIs cumChecks, NumberOfChecks numberOfChecks)
        {
            if (amountOfStockSubmited == AmountOfStockSubmited.VotesArentSubmited)
            {
                if (cumChecks == CumYesIs.NotChecked)
                {
                    return(ValidationResult.Fullfilled);
                }
                else
                {
                    return(ValidationResult.NotFullfilled(ErrorTexts.CUMULATIVE_QUESTION_MUST_HAVE_VOTES_SUBMITED_IN_CASE_OF_YES_CHECK));
                }
            }

            if (checks.IsSet(AdditionalChecks.HasTrust))
            {
                if (checks.IsSet(AdditionalChecks.HasInstructions) ||
                    checks.IsSet(AdditionalChecks.NotWholeStockWasPassed))
                {
                    //Установлен только вариант "ЗА"
                    if (cumChecks == CumYesIs.Checked && numberOfChecks == NumberOfChecks.Single)
                    {
                        return(ValidationResult.Fullfilled);
                    }
                    else
                    {
                        return(ValidationResult.NotFullfilled(ErrorTexts.INCORRECT_FILLING));
                    }
                }
            }
            return(ValidationResult.Fullfilled);
        }
        public void QCumulativeTests(bool yesCheck, int firstVote, int secondVote, int thirdVote,
                                     bool noCheck, int noVotes,
                                     bool absCheck, int absVotes,
                                     AmountOfStockSubmited expected)
        {
            var allowedVotesAmount = new FractionLong(100);
            var qCum = new QCumulative(1,
                                       new List <QCumCandidatePoint>
            {
                new QCumCandidatePoint(1, Fields.VotesDocField(firstVote)),
                new QCumCandidatePoint(2, Fields.VotesDocField(secondVote)),
                new QCumCandidatePoint(3, Fields.VotesDocField(thirdVote)),
            },
                                       new QCumulativeAdditionalMarks(
                                           Fields.CheckBoxDocField(yesCheck),
                                           Fields.CheckBoxDocField(noCheck),
                                           Fields.VotesDocField(noVotes),
                                           Fields.CheckBoxDocField(absCheck),
                                           Fields.VotesDocField(absVotes))
                                       )
            {
                PositionsCount = 10
            };
            var result = _calculator.GetAmountOfStockSubmited(qCum, allowedVotesAmount);

            Assert.That(result, Is.EqualTo(expected));
        }
 private static ValidationResult IfYesIsCheckedVotesAreSubmited(AmountOfStockSubmited amountOfStockSubmited, CumYesIs cumYesCheck)
 {
     if (cumYesCheck == CumYesIs.Checked && amountOfStockSubmited == AmountOfStockSubmited.VotesArentSubmited)
     {
         return(ValidationResult.NotFullfilled(ErrorTexts.CUMULATIVE_QUESTION_MUST_HAVE_VOTES_SUBMITED_IN_CASE_OF_YES_CHECK));
     }
     return(ValidationResult.Fullfilled);
 }
 public string GetErrorTextFor(PackStatus packStatus,
                               AdditionalChecks additionalChecks,
                               AmountOfStockSubmited amountOfStockSubmited,
                               NumberOfChecks numberOfChecks,
                               bool trustExists)
 {
     return(GetValidationResultFor(packStatus,
                                   additionalChecks,
                                   amountOfStockSubmited,
                                   numberOfChecks,
                                   trustExists)
            .ErrorText);
 }
 public bool GetIsFulfilledFor(PackStatus packStatus,
                               AdditionalChecks additionalChecks,
                               AmountOfStockSubmited amountOfStockSubmited,
                               NumberOfChecks numberOfChecks,
                               bool trustExists)
 {
     return(GetValidationResultFor(packStatus,
                                   additionalChecks,
                                   amountOfStockSubmited,
                                   numberOfChecks,
                                   trustExists)
            .IsFullfilled);
 }
        public void BaseYesNoAbsPointTests(bool yesCheck, int yesVotes,
                                           bool noCheck, int noVotes,
                                           bool absCheck, int absVotes,
                                           AmountOfStockSubmited expected)
        {
            var allowedVotesAmount      = new FractionLong(100);
            var baseYesNoAbstainedPoint = new BaseYesNoAbsPoint(
                Fields.CheckBoxDocField(yesCheck),
                Fields.CheckBoxDocField(noCheck),
                Fields.CheckBoxDocField(absCheck),
                Fields.VotesDocField(yesVotes),
                Fields.VotesDocField(noVotes),
                Fields.VotesDocField(absVotes));
            var result = _calculator.GetAmountOfStockSubmited(baseYesNoAbstainedPoint, allowedVotesAmount);

            Assert.That(result, Is.EqualTo(expected));
        }
        /// <summary>
        /// —лучай дл¤ обычного пакета
        /// </summary>
        private static ValidationResult IsSimpleAllowedCase(AdditionalChecks checks, AmountOfStockSubmited amountOfStockSubmited)
        {
            if (amountOfStockSubmited == AmountOfStockSubmited.VotesArentSubmited)
            {
                return(ValidationResult.Fullfilled);
            }

            if (checks.IsSet(AdditionalChecks.HasTrust))
            {
                if (checks.IsSet(AdditionalChecks.HasInstructions) ||
                    checks.IsSet(AdditionalChecks.NotWholeStockWasPassed))
                {
                    return(ValidationResult.NotFullfilled(ErrorTexts.CANNOT_USE_OTHER_CHECKS_WITH_HAVE_TRUST_CHECK));
                }
            }
            return(ValidationResult.Fullfilled);
        }
        private ValidationResult GetValidationResultFor(PackStatus packStatus,
                                                        AdditionalChecks additionalChecks,
                                                        AmountOfStockSubmited amountOfStockSubmited,
                                                        NumberOfChecks numberOfChecks,
                                                        bool trustExists)
        {
            var ammountOfStockSubmitedIsNoMorethatThereIsOnPack = AmmountOfStockSubmitedIsNoMorethatThereIsOnPack(amountOfStockSubmited);

            if (!ammountOfStockSubmitedIsNoMorethatThereIsOnPack.IsFullfilled)
            {
                return(ammountOfStockSubmitedIsNoMorethatThereIsOnPack);
            }


            var multipleChecksArentSelectedIfVotesArentSubmited = MultipleChecksArentSelectedIfVotesArentSubmited(amountOfStockSubmited, numberOfChecks);

            if (!multipleChecksArentSelectedIfVotesArentSubmited.IsFullfilled)
            {
                return(multipleChecksArentSelectedIfVotesArentSubmited);
            }

            if (IsTrustSpecialCase(packStatus, additionalChecks, amountOfStockSubmited, numberOfChecks))
            {
                return(IsAllowedTrustSpecialCase(trustExists));
            }

            if (packStatus == PackStatus.Simple)
            {
                return(IsSimpleAllowedCase(additionalChecks, amountOfStockSubmited));
            }

            if (packStatus == PackStatus.Seller)
            {
                return(BuyerAndSellerAllowedCasesHelper.IsSellerAllowedCase(additionalChecks, amountOfStockSubmited));
            }

            if (packStatus == PackStatus.Buyer)
            {
                return(BuyerAndSellerAllowedCasesHelper.IsBuyerAllowedCase(additionalChecks, amountOfStockSubmited));
            }

            throw new NotSupportedException("“ип " + packStatus + " не поддерживаетс¤.");
        }
Esempio n. 9
0
        /// <summary>
        /// Случай для покупателя
        /// </summary>
        public static ValidationResult IsBuyerAllowedCase(AdditionalChecks checks, AmountOfStockSubmited amountOfStockSubmited)
        {
            var buyerHasTrust         = checks.IsSet(AdditionalChecks.HasTrust);
            var buyerHasSumbitedVotes = amountOfStockSubmited != AmountOfStockSubmited.VotesArentSubmited;
            var buyerHasntCheckedNotWholeStockWasPassed = !checks.IsSet(AdditionalChecks.NotWholeStockWasPassed);

            if (!buyerHasTrust)
            {
                return(ValidationResult.NotFullfilled(ErrorTexts.BUYERS_PACK_MUST_HAVE_HAVE_TRUST_CHECK));
            }
            if (!buyerHasSumbitedVotes)
            {
                return(ValidationResult.NotFullfilled(ErrorTexts.BUYERS_PACK_MUST_HAVE_VOTES_SUBMITED));
            }
            if (!buyerHasntCheckedNotWholeStockWasPassed)
            {
                return(ValidationResult.NotFullfilled(ErrorTexts.BUYERS_PACK_CANNOT_HAVE_NOTWHOLESTOCKPASSED_CHECK));
            }

            return(ValidationResult.Fullfilled);
        }
Esempio n. 10
0
        public void MatrixTest(Status status,
                               AdditionalChecks additionalChecks,
                               AmountOfStockSubmited amountOfStockSubmited,
                               NumberOfChecks numberOfChecks,
                               bool expected)
        {
            var packStatus = GetPackStatusFor(status);

            // Специальный случай для голосования по доверенности
            if (packStatus == PackStatus.Simple &&
                additionalChecks == AdditionalChecks.HasTrust &&
                amountOfStockSubmited == AmountOfStockSubmited.LessOrEqualThanThereIsOnPack &&
                numberOfChecks == NumberOfChecks.Single)
            {
                HandleTrustExistanceSpecialCase(packStatus, additionalChecks, amountOfStockSubmited, numberOfChecks);
                return;
            }
            var chain1 = GraphProvider.GetQSimpleQSepAndHierSubQTableRuleChain(null, null,
                                                                               () => packStatus,
                                                                               () => true,
                                                                               () => amountOfStockSubmited,
                                                                               () => numberOfChecks,
                                                                               () => additionalChecks,
                                                                               () => false);
            var chain2 = GraphProvider.GetQSimpleQSepAndHierSubQTableRuleChain(null, null,
                                                                               () => packStatus,
                                                                               () => false,
                                                                               () => amountOfStockSubmited,
                                                                               () => numberOfChecks,
                                                                               () => additionalChecks,
                                                                               () => false);



            Assert.That(RuleChainFulfilledResoveHelper.RuleChainIsFulfilled(chain1), Is.EqualTo(expected));
            Assert.That(RuleChainFulfilledResoveHelper.RuleChainIsFulfilled(chain2), Is.EqualTo(expected));
        }
 private static bool IsExceptionalCaseForSimplePack(AdditionalChecks additionalChecks, AmountOfStockSubmited amountOfStockSubmited, NumberOfChecks numberOfChecks, CumYesIs cumChecks)
 {
     return(additionalChecks == AdditionalChecks.None  /*&&
                                                        * amountOfStockSubmited == AmountOfStockSubmited.MoreThanThereIsOnPack*/
            &&
            numberOfChecks == NumberOfChecks.Single &&
            cumChecks == CumYesIs.NotChecked);
 }
Esempio n. 12
0
        /// <summary>
        /// Случай для продавца
        /// </summary>
        public static ValidationResult IsSellerAllowedCase(AdditionalChecks additionalChecks, AmountOfStockSubmited amountOfStockSubmited)
        {
            if (additionalChecks == AdditionalChecks.NotWholeStockWasPassed &&
                amountOfStockSubmited == AmountOfStockSubmited.VotesArentSubmited)
            {
                return(ValidationResult.NotFullfilled(ErrorTexts.SELLER_PACKET_WITH_NOT_WHOLE_STOCK_PASSED_CHECK_MUST_HAVE_VOTES_SUBMITED));
            }

            var sellerCheckedThatHeHasTrust = additionalChecks.IsSet(AdditionalChecks.HasTrust);

            if (sellerCheckedThatHeHasTrust)
            {
                return(ValidationResult.NotFullfilled(ErrorTexts.SELLER_PACK_CANNOT_HAVE_HAVE_TRUST_CHECK));
            }

            var hasInstructionsIsChecked     = additionalChecks.IsSet(AdditionalChecks.HasInstructions);
            var notWholeStockPassedIsChecked = additionalChecks.IsSet(AdditionalChecks.NotWholeStockWasPassed);

            if (!hasInstructionsIsChecked && !notWholeStockPassedIsChecked)
            {
                return(ValidationResult.NotFullfilled(ErrorTexts.SELLER_PACKET_MUST_HAVE_NOTWHOLESTOCKWASPASSED_CHECK));
            }

            return(ValidationResult.Fullfilled);
        }
 private static ValidationResult MultipleChecksArentSelectedIfVotesArentSubmited(AmountOfStockSubmited amountOfStockSubmited, NumberOfChecks numberOfChecks)
 {
     if (numberOfChecks == NumberOfChecks.Multiple && amountOfStockSubmited == AmountOfStockSubmited.VotesArentSubmited)
     {
         return(ValidationResult.NotFullfilled(ErrorTexts.WITH_MULTIPLE_CHECKS_VOTES_MUST_BE_SUBMITED));
     }
     return(ValidationResult.Fullfilled);
 }
 private static ValidationResult AmmountOfStockSubmitedIsNoMorethatThereIsOnPack(AmountOfStockSubmited amountOfStockSubmited)
 {
     if (amountOfStockSubmited == AmountOfStockSubmited.MoreThanThereIsOnPack)
     {
         return(ValidationResult.NotFullfilled(ErrorTexts.AMOUNT_OF_STOCK_SUBMITED_IS_GREATER_THAN_THERE_IS_ON_PACK));
     }
     return(ValidationResult.Fullfilled);
 }
Esempio n. 15
0
        private static void HandleTrustExistanceSpecialCase(PackStatus packStatus, AdditionalChecks additionalChecks, AmountOfStockSubmited amountOfStockSubmited, NumberOfChecks numberOfChecks)
        {
            var chain1 = GraphProvider.GetQSimpleQSepAndHierSubQTableRuleChain(null, null,
                                                                               () => packStatus,
                                                                               () => true,
                                                                               () => amountOfStockSubmited,
                                                                               () => numberOfChecks,
                                                                               () => additionalChecks,
                                                                               () => false
                                                                               );

            Assert.That(RuleChainFulfilledResoveHelper.RuleChainIsFulfilled(chain1), Is.EqualTo(true));


            var chain2 = GraphProvider.GetQSimpleQSepAndHierSubQTableRuleChain(null, null,
                                                                               () => packStatus,
                                                                               () => false,
                                                                               () => amountOfStockSubmited,
                                                                               () => numberOfChecks,
                                                                               () => additionalChecks,
                                                                               () => false
                                                                               );

            Assert.That(RuleChainFulfilledResoveHelper.RuleChainIsFulfilled(chain2), Is.EqualTo(false));
        }
 private static bool IsTrustSpecialCase(PackStatus packStatus, AdditionalChecks additionalChecks, AmountOfStockSubmited amountOfStockSubmited, NumberOfChecks numberOfChecks)
 {
     //—пециальный случай дл¤ проверки наличи¤ доверенности
     return(packStatus == PackStatus.Simple &&
            additionalChecks == AdditionalChecks.HasTrust &&
            amountOfStockSubmited == AmountOfStockSubmited.LessOrEqualThanThereIsOnPack &&
            numberOfChecks == NumberOfChecks.Single);
 }
 private bool IsTrustSpecialCase(PackStatus packStatus, AdditionalChecks additionalChecks, AmountOfStockSubmited amountOfStockSubmited, NumberOfChecks numberOfChecks, CumYesIs cumChecks)
 {
     return(packStatus == PackStatus.Simple &&
            additionalChecks == AdditionalChecks.HasTrust &&
            amountOfStockSubmited == AmountOfStockSubmited.LessOrEqualThanThereIsOnPack &&
            cumChecks == CumYesIs.NotChecked);
 }