Ejemplo n.º 1
0
 internal static Coercive.Operator Operator(this Coercive.Operation operation)
 {
     return(operation switch {
         Coercive.Operation.Plus => Addition,
         Coercive.Operation.Minus => Subtraction,
         Coercive.Operation.Times => Multiplication,
         Coercive.Operation.DividedBy => Division,
         _ => throw EnumUtils.InvalidEnumArgumentException(nameof(operation), operation)
     });
Ejemplo n.º 2
0
 public void Coercively_Verb_Numeric(
     [ValueSource(nameof(PrimitiveUtils.NumericTypes))]
     Type aType,
     [ValueSource(nameof(PrimitiveUtils.NumericTypes))]
     Type bType,
     [Values] Coercive.Operation operation
     )
 {
     new OperationExpectation(aType, operation, bType).Test_Verb();
 }
Ejemplo n.º 3
0
            public OperationExpectation(Type a_type, Coercive.Operation operation, Type b_type)
            {
                object a_val;
                object b_val;
                object e_val;

                AType     = a_type;
                Operation = operation;
                BType     = b_type;
                EType     = GetExpectedResultType(AType);

                switch (operation)
                {
                case Coercive.Operation.Plus:
                    a_val = 10;
                    b_val = 20;
                    e_val = 30;
                    break;

                case Coercive.Operation.Minus:
                    a_val = 55;
                    b_val = 21;
                    e_val = 34;
                    break;

                case Coercive.Operation.Times:
                    a_val = 8;
                    b_val = 10;
                    e_val = 80;
                    break;

                case Coercive.Operation.DividedBy:
                    a_val = 20;
                    b_val = 5;
                    e_val = 4;
                    break;

                default:
                    throw EnumUtils.InvalidEnumArgumentException(nameof(operation), operation);
                }

                A = Convert.ChangeType(a_val, AType);
                B = Convert.ChangeType(b_val, BType);
                E = Convert.ChangeType(e_val, EType);
            }
Ejemplo n.º 4
0
 public static object Compute(object a, Coercive.Operation operation, object b)
 {
     return(operation.Operator().Apply(a, b));
 }