Exemple #1
0
        public void Test_10_LimitSpecification()
        {
            SimpleExpression <SymbolicValue> SymbolicSE = new SymbolicExpression("symbolic_exspression");
            Money <SymbolicValue>            moneyFromSymbolicExpression = new Money <SymbolicValue>(SymbolicSE, Currency.GBP);
            LimitSpecification <MoneyValue <SymbolicValue> > moneyFromSymbolicExpressionPayoutSpec =
                new LimitSpecification <MoneyValue <SymbolicValue> >(moneyFromSymbolicExpression);

            Assert.AreEqual("PAYOUTEXPRESSION((symbolic_exspression*20) GBP)", moneyFromSymbolicExpressionPayoutSpec.ToString(),
                            "Error in LimitSpecification<MoneyValue<SymbolicValue>> from Money<SymbolicValue>.");

            NumericExpression    n = new NumericExpression(6.7);
            Money <NumericValue> moneyFromNumericValue = new Money <NumericValue>(n, Currency.GBP);
            LimitSpecification <MoneyValue <NumericValue> > moneyFromNumericValuePayoutSpec =
                new LimitSpecification <MoneyValue <NumericValue> >(moneyFromNumericValue, true);

            Assert.AreEqual("PAYOUTEXPRESSION(PAY 134 GBP)", moneyFromNumericValuePayoutSpec.ToString(),
                            "Error in LimitSpecification<MoneyValue<NumericValue>> from Money<NumericValue>.");

            Percentage <NumericValue>         numPerc           = new Percentage <NumericValue>(n);
            LimitSpecification <NumericValue> numPercPayoutSpec =
                new LimitSpecification <NumericValue>(numPerc, true);

            Assert.AreEqual("PAYOUTEXPRESSION(PAY 6.7%)", numPercPayoutSpec.ToString(),
                            "Error in LimitSpecification<NumericValue> from Percentage<NumericValue>.");
        }
Exemple #2
0
        public void Test_11_Cover()
        {
            SimpleExpression <SymbolicValue> SymbolicSE = new SymbolicExpression("symbolic_exspression");
            Money <SymbolicValue>            moneyFromSymbolicExpression = new Money <SymbolicValue>(SymbolicSE, Currency.GBP);
            LimitSpecification <MoneyValue <SymbolicValue> > moneyFromSymbolicExpressionPayoutSpec =
                new LimitSpecification <MoneyValue <SymbolicValue> >(moneyFromSymbolicExpression);

            Limit <MoneyValue <SymbolicValue> > moneyFromSymbolicExpressionPayout =
                new Limit <MoneyValue <SymbolicValue> >(moneyFromSymbolicExpressionPayoutSpec, 1);

            SimpleExpression <NumericValue> NumericSE           = new NumericExpression(3.4);
            Attachment <NumericValue>       NumericSEAttachment = new Attachment <NumericValue>(NumericSE);
            NumericExpression            n            = new NumericExpression(6.7);
            Percentage <NumericValue>    numPerc      = new Percentage <NumericValue>(n);
            Ratio <NumericValue>         percNumRatio = new Ratio <NumericValue>(numPerc);
            Participation <NumericValue> percNumRatioParticipation = new Participation <NumericValue>(percNumRatio);

            Cover <NumericValue, MoneyValue <SymbolicValue>, NumericValue> coverNumSymbNum
                = new Cover <NumericValue, MoneyValue <SymbolicValue>, NumericValue>(
                      percNumRatioParticipation,
                      moneyFromSymbolicExpressionPayout,
                      NumericSEAttachment);
            string str = "COVER \n{\n\tShare: PARTICIPATION(RATIO(6.7%))\n\t_Limit: PAYOUT(PAYOUTEXPRESSION((symbolic_exspression*20) GBP), Occurrence)\n\t_Attachment: XS(3.4, Occurrence, IsItFranchise=False)\n}";

            Assert.AreEqual(str, coverNumSymbNum.ToString(),
                            "Error in Cover<NumericValue, MoneyValue<SymbolicValue>, NumericValue> Constructor.");

            ICover <Value, Value, Value> cNSN
                = (ICover <Value, Value, Value>)coverNumSymbNum;

            SymbolicExpression            ident         = new SymbolicExpression("symbolic");
            Ratio <SymbolicValue>         symbolicRatio = new Ratio <SymbolicValue>(ident);
            Participation <SymbolicValue> symbolicRatioParticipation = new Participation <SymbolicValue>(symbolicRatio);
            Cover <SymbolicValue>         coverNumShareNumPayout
                = new Cover <SymbolicValue>(symbolicRatioParticipation, "\"MyCoverLabel\"");

            str = "COVER \"MyCoverLabel\"\n{\n\tShare: PARTICIPATION(RATIO(symbolic))\n\t_Limit: \n\t_Attachment: \n}";
            Assert.AreEqual(str, coverNumShareNumPayout.ToString(),
                            "Error in Cover<SymbolicValue> Constructor.");
        }
Exemple #3
0
        static void Main(string[] args)
        {
            //double a = 43.52;
            //double b = 40000566.78234234;
            //double max;

            //Stopwatch sw = Stopwatch.StartNew();


            //sw.Restart();
            //max = SergeysBitwiseMax(a, b);
            //sw.Stop();

            //Console.WriteLine("SergeysBitwiseMax(" + a + ", " + b + ") = " + max + " took " + ElapsedNanoSeconds(sw) + " ns!");


            //sw.Restart();
            //max = Math.Max(a, b);
            //sw.Stop();

            //Console.WriteLine("Math.Max(" + a + ", " + b + ") = " + max + " took " + ElapsedNanoSeconds(sw) + " ns!");


            SymbolicExpression ident = new SymbolicExpression("symbolic");

            Console.WriteLine(ident);

            SimpleExpression <SymbolicValue> SymbolicSE = new SymbolicExpression("symbolic_exspression");

            Console.WriteLine(SymbolicSE.GetValue());

            SymbolicValue   sv   = new SymbolicValue("sv");
            IValue <AValue> sive = sv;
            dynamic         dsv  = new SymbolicValue("sv");
            object          osv  = new SymbolicValue("sv");

            Console.WriteLine(sv.Equals(dsv));
            Console.WriteLine(dsv.Equals(sv));
            Console.WriteLine(dsv.Equals(sive));
            Console.WriteLine(osv.Equals(dsv));
            Console.WriteLine(sv.Equals(osv));
            Console.WriteLine(osv.Equals(sv));
            Console.WriteLine(osv.Equals(sive));
            Console.WriteLine(sive.Equals(osv));

            IExpression <IValue <AValue> > sSV = SymbolicSE;

            List <IExpression <IValue <AValue> > > aivL = new List <IExpression <IValue <AValue> > >();

            aivL.Add(sSV);
            aivL.Add(SymbolicSE);

            NumericExpression n = new NumericExpression(6.7);

            Console.WriteLine(n.GetValue());

            SimpleExpression <NumericValue> NumericSE = new NumericExpression(3.4);

            Console.WriteLine(NumericSE.GetValue());

            FunctionInvocation <int> f = new FunctionInvocation <int>(
                delegate(object[] parameters)
            {
                int sum = 0;
                foreach (object parameter in parameters)
                {
                    sum += (int)parameter;
                }
                return(new NumericValue(sum));
            },
                5, 7, 8);

            Console.WriteLine("!! FunctionInvocation !! " + f.GetValue());

            // money

            Money <SymbolicValue> moneyFromSymbolicValue = new Money <SymbolicValue>(ident, Currency.GBP);

            Console.WriteLine(moneyFromSymbolicValue.GetValue());

            Money <SymbolicValue> moneyFromSymbolicExpression = new Money <SymbolicValue>(SymbolicSE, Currency.GBP);

            Console.WriteLine(moneyFromSymbolicExpression.GetValue());

            Money <NumericValue> moneyFromNumericValue = new Money <NumericValue>(n, Currency.GBP);

            Console.WriteLine(moneyFromNumericValue.GetValue());

            Money <NumericValue> moneyFromNumericExpression = new Money <NumericValue>(NumericSE, Currency.GBP);

            Console.WriteLine(moneyFromNumericExpression.GetValue());

            // percentage

            Percentage <SymbolicValue> symSEPerc = new Percentage <SymbolicValue>(SymbolicSE);

            Console.WriteLine(symSEPerc);

            Percentage <NumericValue> numPerc = new Percentage <NumericValue>(n);

            Console.WriteLine(numPerc);

            // Ratio

            Ratio <SymbolicValue> symbolicRatio = new Ratio <SymbolicValue>(ident);

            Console.WriteLine(symbolicRatio);

            Ratio <Value> funcInvRatio = new Ratio <Value>(f);

            Console.WriteLine(funcInvRatio);

            Ratio <NumericValue> percNumRatio = new Ratio <NumericValue>(numPerc);

            Console.WriteLine(percNumRatio);

            // participation

            Participation <SymbolicValue> symbolicRatioParticipation = new Participation <SymbolicValue>(symbolicRatio);

            Console.WriteLine(symbolicRatioParticipation);

            Participation <Value> funcInvRatioParticipation = new Participation <Value>(funcInvRatio);

            Console.WriteLine(funcInvRatioParticipation);

            Participation <NumericValue> percNumRatioParticipation = new Participation <NumericValue>(percNumRatio);

            Console.WriteLine(percNumRatioParticipation);

            // _Limit specification

            LimitSpecification <MoneyValue <SymbolicValue> > moneyFromSymbolicExpressionPayoutSpec =
                new LimitSpecification <MoneyValue <SymbolicValue> >(moneyFromSymbolicExpression);

            Console.WriteLine(moneyFromSymbolicExpressionPayoutSpec);

            LimitSpecification <MoneyValue <NumericValue> > moneyFromNumericValuePayoutSpec =
                new LimitSpecification <MoneyValue <NumericValue> >(moneyFromNumericValue, true);

            Console.WriteLine(moneyFromNumericValuePayoutSpec);

            LimitSpecification <NumericValue> numPercPayoutSpec =
                new LimitSpecification <NumericValue>(numPerc, true);

            Console.WriteLine(numPercPayoutSpec);

            // _Limit

            Limit <MoneyValue <SymbolicValue> > moneyFromSymbolicExpressionPayout
                = new Limit <MoneyValue <SymbolicValue> >(moneyFromSymbolicExpressionPayoutSpec, 1);

            // _Attachment

            Attachment <NumericValue> NumericSEAttachment = new Attachment <NumericValue>(NumericSE);

            // cover

            Cover <NumericValue, MoneyValue <SymbolicValue>, NumericValue> coverNumSymbNum
                = new Cover <NumericValue, MoneyValue <SymbolicValue>, NumericValue>(percNumRatioParticipation, moneyFromSymbolicExpressionPayout, NumericSEAttachment);

            Console.WriteLine(coverNumSymbNum);

            ICover <Value, Value, Value> cNSN
                = (ICover <Value, Value, Value>)coverNumSymbNum;

            Cover <SymbolicValue> coverNumShareNumPayout
                = new Cover <SymbolicValue>(symbolicRatioParticipation, "\"MyCoverLabel\"");

            Console.WriteLine(coverNumShareNumPayout);

            Console.ReadKey();
        }