private static AmountOfStockSubmited GetAmountOfStockSubmittedFor(List <KeyValuePair <bool, FractionLong> > checkAndVotesPairs, FractionLong allowedVotesAmount)
        {
            if (checkAndVotesPairs.Where(p => p.Key == true).All(p => p.Value == FractionLong.Zero))
            {
                return(AmountOfStockSubmited.VotesArentSubmited);
            }

            FractionLong value = FractionLong.Zero;

            checkAndVotesPairs.ForEach(pair =>
            {
                if (pair.Key == true)
                {
                    value += AmountOfStockCalculatorsCommon.GetVotesFor(pair.Value, allowedVotesAmount);
                }
            });


            if (value <= allowedVotesAmount)
            {
                return(AmountOfStockSubmited.LessOrEqualThanThereIsOnPack);
            }
            else
            {
                return(AmountOfStockSubmited.MoreThanThereIsOnPack);
            }
        }
        public void QCumulativeCandidateVoteTests(bool yesCheck, long yesVotes, long expectedResultLong)
        {
            const bool doesntMatter2 = false;
            const long doesntMatter3 = 0;
            const int  doesntMatter4 = 0;
            const int  doesntMatter5 = 1;

            var candidatePoint = new QCumCandidatePoint(doesntMatter5, Fields.VotesDocField(yesVotes.FL()));


            var qCum = new QCumulative(doesntMatter5, new List <QCumCandidatePoint> {
                candidatePoint
            },
                                       new QCumulativeAdditionalMarks(Fields.CheckBoxDocField(yesCheck),
                                                                      Fields.CheckBoxDocField(doesntMatter2),
                                                                      Fields.VotesDocField(doesntMatter3.FL()),
                                                                      Fields.CheckBoxDocField(doesntMatter2),
                                                                      Fields.VotesDocField(doesntMatter3.FL(),
                                                                                           doesntMatter4)));

            var result   = _calculator.GetVotesForCandidateField(qCum, candidatePoint);
            var expected = new FractionLong(expectedResultLong);

            Assert.That(result, Is.EqualTo(expected));
        }
        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));
        }
Esempio n. 4
0
 public static VotesDocField VotesDocField(FractionLong value, ErrorLevel errorLevel)
 {
     return(new VotesDocField(null, Page, value)
     {
         ErrorLevel = errorLevel
     });
 }
Esempio n. 5
0
        private static QCumulative GetQCumulative(int positionsCount, FractionLong assigned)
        {
            var qCumulative = new QCumulative(1, GetCandidatePoints(assigned), GetAdditionalMarks());

            qCumulative.AdditionalMarks.YesCheckBoxField.Value = true;
            qCumulative.PositionsCount = positionsCount;
            return(qCumulative);
        }
Esempio n. 6
0
        public void Test2(int assignedIntegral, int assignedNumerator, int assignedDenominator, bool expectedResult)
        {
            var       checker        = new AdrQuestionValidityChecker();
            const int positionsCount = 3;
            var       assigned       = new FractionLong(assignedIntegral, assignedNumerator, assignedDenominator);
            var       result         = checker.QCumulativeIsValid(GetQCumulative(positionsCount, assigned), new FractionLong(7, 1, 2));

            Assert.That(result, Is.EqualTo(expectedResult));
        }
        public void BaseYesNoAbsPointTests(bool yesCheck, long yesVotes, bool hasInstructions, bool hasTrust, bool notWholeStockWasPassed, long expectedResultLong)
        {
            var allowedVotesAmount = new FractionLong(100);

            var point = TestBulletinModel.GetFreshBaseYesNoAbsPoint(yesVotes: yesVotes.FL(), yesCheck: yesCheck);

            var additionalMarks = TestBulletinModel.GetAdditionalMarks(hasInstructions, hasTrust, notWholeStockWasPassed);

            var result   = _calculator.GetVotesForYesField(point, allowedVotesAmount, additionalMarks);
            var expected = new FractionLong(expectedResultLong);

            Assert.That(result, Is.EqualTo(expected));
        }
        public AmountOfStockSubmited GetAmountOfStockSubmited(QCumulative qCum, FractionLong allowedVotesAmount)
        {
            if (qCum.AdditionalMarks.YesCheckBoxField.Value == true && qCum.CandidatePoints.Sum(c => c.VotesDocField.Value) == FractionLong.Zero)
            {
                return(AmountOfStockSubmited.VotesArentSubmited);
            }

            var pairs = new List <KeyValuePair <bool, FractionLong> >
            {
                new KeyValuePair <bool, FractionLong>(qCum.AdditionalMarks.YesCheckBoxField.Value, qCum.CandidatePoints.Sum(c => c.VotesDocField.Value)),
                new KeyValuePair <bool, FractionLong>(qCum.AdditionalMarks.NoCheckBoxField.Value, qCum.AdditionalMarks.NoVotesField.Value),
                new KeyValuePair <bool, FractionLong>(qCum.AdditionalMarks.AbstainedCheckBoxField.Value, qCum.AdditionalMarks.AbstainedVotesField.Value),
            };

            return(GetAmountOfStockSubmittedFor(pairs, allowedVotesAmount));
        }
        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));
        }
        public AmountOfStockSubmited GetAmountOfStockSubmited(BaseYesNoAbsPoint point, FractionLong allowedVotesAmount)
        {
            var pairs = new List <KeyValuePair <bool, FractionLong> >
            {
                new KeyValuePair <bool, FractionLong>(point.YesCheckBoxField.Value, point.YesVotesField.Value),
                new KeyValuePair <bool, FractionLong>(point.NoCheckBoxField.Value, point.NoVotesField.Value),
                new KeyValuePair <bool, FractionLong>(point.AbstainedCheckBoxField.Value, point.AbstainedVotesField.Value),
            };

            return(GetAmountOfStockSubmittedFor(pairs, allowedVotesAmount));
        }
Esempio n. 11
0
 private static List <QCumCandidatePoint> GetCandidatePoints(FractionLong assigned)
 {
     return(Enumerable.Range(1, 10).Select(x => new QCumCandidatePoint(x, VotesDocField(x == 1 ? assigned : (FractionLong?)null))).ToList());
 }
Esempio n. 12
0
 private static RuleNode GetQCumulativeTableRule(BulletinScreenModelBase bulletin, QCumulative qCum, FractionLong allowedVotesAmount)
 {
     return(GetQCumulativeTableRule(qCum, bulletin.AdditionalMarks, () => bulletin.PackStatus, () => bulletin.TrustExists, () => AmountOfStockSubmitedCalculator.GetAmountOfStockSubmited(qCum, allowedVotesAmount), () => GetNumberOfChecks(qCum), () => BulletinAdditionalMarksToAdditionalChecksEnumConverter.ConvertToAdditionalChecksEnum(bulletin.AdditionalMarks), () => qCum.AdditionalMarks.YesCheckBoxField.Value ? CumYesIs.Checked : CumYesIs.NotChecked));
 }
Esempio n. 13
0
        private static RuleNode GetQSimpleQSepAndHierSubQTableRuleChain(BaseYesNoAbsPoint point, BulletinScreenModelBase bulletin, FractionLong amountOfStock, bool isQSimpWithPrivDividends = false)
        {
            var additionalMarks = bulletin.AdditionalMarks;
            Func <PackStatus>            packStatus                   = () => bulletin.PackStatus;
            Func <NumberOfChecks>        numberOfChecks               = () => GetNumberOfChecks(point);
            Func <AdditionalChecks>      additionalChecks             = () => BulletinAdditionalMarksToAdditionalChecksEnumConverter.ConvertToAdditionalChecksEnum(bulletin.AdditionalMarks);
            Func <bool>                  trustExists                  = () => bulletin.TrustExists;
            Func <AmountOfStockSubmited> amountOfStockSubmited        = () => AmountOfStockSubmitedCalculator.GetAmountOfStockSubmited(point, amountOfStock);
            Func <bool>                  isQSimpWithPrivDividendsFunc = () => isQSimpWithPrivDividends;

            return(GetQSimpleQSepAndHierSubQTableRuleChain(point, additionalMarks, packStatus, trustExists, amountOfStockSubmited, numberOfChecks, additionalChecks, isQSimpWithPrivDividendsFunc));
        }
Esempio n. 14
0
 private static RuleNode GetRuleForBaseYesNoAbstainedPoint(BaseYesNoAbsPoint qsp, BulletinScreenModelBase bulletin, FractionLong amountOfStock, bool isQSimpWithPrivDividends = false)
 {
     return(RuleBuilder.
            RootRule(new PointShouldHaveAtLeastOneSelectionRule(qsp))
            .AddRule(GetQSimpleQSepAndHierSubQTableRuleChain(qsp, bulletin, amountOfStock, isQSimpWithPrivDividends))
            .GetRoot());
 }
Esempio n. 15
0
 private static bool FieldCanHoldBasketValue(FractionLong field, FractionLong basketValue)
 {
     return(field.FractionPart == basketValue.FractionPart && field >= basketValue);
 }
Esempio n. 16
0
        private static void RemoveMatchingFieldFrom(List <FractionLong> fieldsRemaining, FractionLong basketValue)
        {
            var orderedFields = fieldsRemaining.OrderBy(x => x.Numerator);
            var matchingField = orderedFields.First(x => FieldCanHoldBasketValue(x, basketValue));

            fieldsRemaining.Remove(matchingField);
        }
Esempio n. 17
0
        private static bool ThereIsMatchingFieldIn(List <FractionLong> fieldsRemaining, FractionLong basketValue)
        {
            var orderedFields = fieldsRemaining.OrderBy(x => x.Numerator);

            return(orderedFields.Where(x => FieldCanHoldBasketValue(x, basketValue)).Count() > 0);
        }
Esempio n. 18
0
 public static VotesDocField VotesDocField(FractionLong value, Page page = null)
 {
     return(new VotesDocField(null, page ?? Page, value));
 }