public MultivariantVotingPointRule(BaseYesNoAbsPoint point, BulletinAdditionalMarks additionalMarks, Func <NumberOfChecks> numberOfChecks, Func <AdditionalChecks> additionalChecks)
 {
     _numberOfChecks   = numberOfChecks;
     _additionalChecks = additionalChecks;
     Point             = point;
     AdditionalMarks   = additionalMarks;
 }
 public QSimpleQSepAndHierSubQFractionDistributionRule(BaseYesNoAbsPoint point, Func <List <FractionLong> > allowedVotesAmountFractions, bool isADR, Func <bool> hasInstructions)
 {
     _point                       = point;
     _hasInstructions             = hasInstructions;
     _isADR                       = isADR;
     _allowedVotesAmountFractions = allowedVotesAmountFractions;
 }
Esempio n. 3
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. 4
0
 public static RuleNode GetQSimpleQSepAndHierSubQTableRuleChain(BaseYesNoAbsPoint point, BulletinAdditionalMarks additionalMarks, Func <PackStatus> packStatus, Func <bool> trustExists, Func <AmountOfStockSubmited> amountOfStockSubmited, Func <NumberOfChecks> numberOfChecks, Func <AdditionalChecks> additionalChecks, Func <bool> isQSimpWithPrivDividends)
 {
     return(RuleBuilder
            .RootRule(new InCaseOfSimplePackPointWithNoAdditionalMarksAlwaysPassesRule(point, additionalMarks, packStatus, numberOfChecks, additionalChecks, isQSimpWithPrivDividends))
            .AddRule(new MultivariantVotingPointRule(point, additionalMarks, numberOfChecks, additionalChecks))
            .AddRule(new QSimpleQSepAndHierSubQTableRule(point, additionalMarks, packStatus, trustExists, amountOfStockSubmited, numberOfChecks, additionalChecks))
            .GetRoot());
 }
        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. 6
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. 7
0
 public InCaseOfSimplePackPointWithNoAdditionalMarksAlwaysPassesRule(BaseYesNoAbsPoint point,
                                                                     BulletinAdditionalMarks additionalMarks,
                                                                     Func <PackStatus> packStatus,
                                                                     Func <NumberOfChecks> numberOfChecks,
                                                                     Func <AdditionalChecks> additionalChecks,
                                                                     Func <bool> isQSimpWithPrivDividends)
 {
     Point                     = point;
     AdditionalMarks           = additionalMarks;
     _status                   = packStatus;
     _numberOfChecks           = numberOfChecks;
     _additionalChecks         = additionalChecks;
     _isQSimpWithPrivDividends = isQSimpWithPrivDividends;
 }
Esempio n. 8
0
 public QSimpleQSepAndHierSubQTableRule(BaseYesNoAbsPoint point,
                                        BulletinAdditionalMarks bulletinAdditionalMarks,
                                        Func <PackStatus> packStatus,
                                        Func <bool> trustExists,
                                        Func <AmountOfStockSubmited> amountOfStockSubmited,
                                        Func <NumberOfChecks> numberOfChecks,
                                        Func <AdditionalChecks> additionalChecks)
 {
     Point                 = point;
     AdditionalMarks       = bulletinAdditionalMarks;
     PackStatus            = packStatus;
     TrustExists           = trustExists;
     AmountOfStockSubmited = amountOfStockSubmited;
     NumberOfChecks        = numberOfChecks;
     AddtitionalChecks     = additionalChecks;
 }
        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));
        }
Esempio n. 10
0
        private static NumberOfChecks GetNumberOfChecks(BaseYesNoAbsPoint point)
        {
            var checks = new List <CheckBoxDocField> {
                point.YesCheckBoxField, point.NoCheckBoxField, point.AbstainedCheckBoxField
            };

            if (checks.All(c => c.Value == false))
            {
                throw new ArgumentOutOfRangeException(string.Empty, "�� ����� �� ����� �����");
            }

            if (checks.Where(c => c.Value == true).Count() == 1)
            {
                return(NumberOfChecks.Single);
            }
            else
            {
                return(NumberOfChecks.Multiple);
            }
        }
Esempio n. 11
0
 public PointShouldHaveAtLeastOneSelectionRule(BaseYesNoAbsPoint point)
 {
     Point = point;
 }
Esempio n. 12
0
 public AdrMustHaveExactVotesSpreadedForQSimple(BaseYesNoAbsPoint point, Func <FractionLong> allowedVotesAmount, bool isADRBulletin)
 {
     _allowedVotesAmount = allowedVotesAmount;
     _isADRBulletin      = isADRBulletin;
     Point = point;
 }
Esempio n. 13
0
        private static void SetVoteFieldsThatDontHaveCorrespondingChecksSetAsWasntChecked(BaseYesNoAbsPoint point)
        {
            var additionalChecks        = ((BulletinScreenModelBase)point.ParentRootModel).AdditionalMarks;
            var additionalChecksAreUsed = additionalChecks.HasInstructions.Value ||
                                          additionalChecks.NotWholeStockWasPassed.Value ||
                                          additionalChecks.HasTrust.Value;

            var pairs = new Dictionary <CheckBoxDocField, VotesDocField>
            {
                { point.YesCheckBoxField, point.YesVotesField },
                { point.NoCheckBoxField, point.NoVotesField },
                { point.AbstainedCheckBoxField, point.AbstainedVotesField },
            };

            pairs.ForEach(p =>
            {
                if (p.Key.Value == false || !additionalChecksAreUsed)
                {
                    p.Value.ErrorLevel = ErrorLevel.WasntChecked;
                }
            });
        }
 public QSimpleQSepAndHierSubQWarningRule(BaseYesNoAbsPoint point, BulletinAdditionalMarks additionalMarks, Func <FractionLong> allowedVotesAmount)
 {
     _point              = point;
     AdditionalMarks     = additionalMarks;
     _allowedVotesAmount = allowedVotesAmount;
 }