Beispiel #1
0
        public int calculate(int logid, Work w)
        {
            var ex = new InvalidOperation();

            ex.WhatOp = (int)Operation.ADD;
            ex.Why    = "Invalid calculate";
            throw ex;
        }
Beispiel #2
0
        public void TestInvalidSpecialOtherOperationRegister(InvalidOperation op)
        {
            var handler  = new DefaultManager(CreateNewApiConnection());
            var request  = GenerateRegisterRequest(op != InvalidOperation.WrongContentType ? op.ToString().ToLower() : ValidOperation.Put.ToString().ToLower());
            var response = handler.Send <object>($"{RegisterEndpoint}{ResourceId.Job.ToString().ToLower()}s", JsonConvert.SerializeObject(request), HttpMethod.POST, op != InvalidOperation.WrongContentType ? ContentType : "application/json");

            Assert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest));
        }
Beispiel #3
0
            public async Task <int> calculate(int logid, Work w, CancellationToken cancellationToken)
            {
                Logger.LogInformation("Calculate({logid}, [{w.Op},{w.Num1},{w.Num2}])", logid, w.Op, w.Num1, w.Num2);

                int val;

                switch (w.Op)
                {
                case Operation.ADD:
                    val = w.Num1 + w.Num2;
                    break;

                case Operation.SUBTRACT:
                    val = w.Num1 - w.Num2;
                    break;

                case Operation.MULTIPLY:
                    val = w.Num1 * w.Num2;
                    break;

                case Operation.DIVIDE:
                    if (w.Num2 == 0)
                    {
                        var io = new InvalidOperation
                        {
                            WhatOp = (int)w.Op,
                            Why    = "Cannot divide by 0"
                        };

                        throw io;
                    }
                    val = w.Num1 / w.Num2;
                    break;

                default:
                {
                    var io = new InvalidOperation
                    {
                        WhatOp = (int)w.Op,
                        Why    = "Unknown operation"
                    };

                    throw io;
                }
                }

                var entry = new SharedStruct
                {
                    Key   = logid,
                    Value = val.ToString()
                };

                _log[logid] = entry;

                return(await Task.FromResult(val));
            }
Beispiel #4
0
        public void Read(TProtocol iprot)
        {
            iprot.IncrementRecursionDepth();
            try
            {
                TField field;
                iprot.ReadStructBegin();
                while (true)
                {
                    field = iprot.ReadFieldBegin();
                    if (field.Type == TType.Stop)
                    {
                        break;
                    }
                    switch (field.ID)
                    {
                    case 0:
                        if (field.Type == TType.I32)
                        {
                            Success = iprot.ReadI32();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 1:
                        if (field.Type == TType.Struct)
                        {
                            Ouch = new InvalidOperation();
                            Ouch.Read(iprot);
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    default:
                        TProtocolUtil.Skip(iprot, field.Type);
                        break;
                    }
                    iprot.ReadFieldEnd();
                }
                iprot.ReadStructEnd();
            }
            finally
            {
                iprot.DecrementRecursionDepth();
            }
        }
Beispiel #5
0
        public int calculate(int logid, Work work)
        {
            Console.WriteLine("calculate({0}, [{1},{2},{3}])", logid, work.op, work.num1, work.num2);
            int val = 0;

            switch (work.op)
            {
            case Operation.ADD:
                val = work.num1 + work.num2;
                break;

            case Operation.SUBTRACT:
                val = work.num1 - work.num2;
                break;

            case Operation.MULTIPLY:
                val = work.num1 * work.num2;
                break;

            case Operation.DIVIDE:
                if (work.num2 == 0)
                {
                    InvalidOperation io = new InvalidOperation();
                    io.what = (int)work.op;
                    io.why  = "Cannot divide by 0";
                    throw io;
                }
                val = work.num1 / work.num2;
                break;

            default:
            {
                InvalidOperation io = new InvalidOperation();
                io.what = (int)work.op;
                io.why  = "Unknown operation";
                throw io;
            }
            }

            SharedStruct entry = new SharedStruct();

            entry.key   = logid;
            entry.value = val.ToString();
            log[logid]  = entry;

            return(val);
        }
Beispiel #6
0
        public void Read(TProtocol iprot)
        {
            TField field;

            iprot.ReadStructBegin();
            while (true)
            {
                field = iprot.ReadFieldBegin();
                if (field.Type == TType.Stop)
                {
                    break;
                }
                switch (field.ID)
                {
                case 0:
                    if (field.Type == TType.Struct)
                    {
                        Success = new SearchResult();
                        Success.Read(iprot);
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 1:
                    if (field.Type == TType.Struct)
                    {
                        Ex = new InvalidOperation();
                        Ex.Read(iprot);
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                default:
                    TProtocolUtil.Skip(iprot, field.Type);
                    break;
                }
                iprot.ReadFieldEnd();
            }
            iprot.ReadStructEnd();
        }
Beispiel #7
0
        public int calculate(int logid, Work work)
        {
            Console.WriteLine("calculate({0}, [{1},{2},{3}])", logid, work.op, work.num1, work.num2);
            int val = 0;
            switch (work.op)
            {
                case Operation.ADD:
                    val = work.num1 + work.num2;
                    break;

                case Operation.SUBTRACT:
                    val = work.num1 - work.num2;
                    break;

                case Operation.MULTIPLY:
                    val = work.num1 * work.num2;
                    break;

                case Operation.DIVIDE:
                    if (work.num2 == 0)
                    {
                        InvalidOperation io = new InvalidOperation();
                        io.what = (int)work.op;
                        io.why = "Cannot divide by 0";
                        throw io;
                    }
                    val = work.num1 / work.num2;
                    break;

                default:
                    {
                        InvalidOperation io = new InvalidOperation();
                        io.what = (int)work.op;
                        io.why = "Unknown operation";
                        throw io;
                    }
            }

            SharedStruct entry = new SharedStruct();
            entry.key = logid;
            entry.value = val.ToString();
            log[logid] = entry;

            return val;
        }
Beispiel #8
0
            public async Task<int> calculateAsync(int logid, Work w, CancellationToken cancellationToken)
            {
                Logger.LogInformation($"CalculateAsync({logid}, [{w.Op},{w.Num1},{w.Num2}])");

                var val = 0;
                switch (w.Op)
                {
                    case Operation.ADD:
                        val = w.Num1 + w.Num2;
                        break;

                    case Operation.SUBTRACT:
                        val = w.Num1 - w.Num2;
                        break;

                    case Operation.MULTIPLY:
                        val = w.Num1*w.Num2;
                        break;

                    case Operation.DIVIDE:
                        if (w.Num2 == 0)
                        {
                            var io = new InvalidOperation
                            {
                                WhatOp = (int) w.Op,
                                Why = "Cannot divide by 0"
                            };

                            throw io;
                        }
                        val = w.Num1/w.Num2;
                        break;

                    default:
                    {
                        var io = new InvalidOperation
                        {
                            WhatOp = (int) w.Op,
                            Why = "Unknown operation"
                        };

                        throw io;
                    }
                }

                var entry = new SharedStruct
                {
                    Key = logid,
                    Value = val.ToString()
                };

                _log[logid] = entry;

                return await Task.FromResult(val);
            }
 public void Read (TProtocol iprot)
 {
   TField field;
   iprot.ReadStructBegin();
   while (true)
   {
     field = iprot.ReadFieldBegin();
     if (field.Type == TType.Stop) { 
       break;
     }
     switch (field.ID)
     {
       case 0:
         if (field.Type == TType.I32) {
           Success = iprot.ReadI32();
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       case 1:
         if (field.Type == TType.Struct) {
           Ouch = new InvalidOperation();
           Ouch.Read(iprot);
         } else { 
           TProtocolUtil.Skip(iprot, field.Type);
         }
         break;
       default: 
         TProtocolUtil.Skip(iprot, field.Type);
         break;
     }
     iprot.ReadFieldEnd();
   }
   iprot.ReadStructEnd();
 }
Beispiel #10
0
        public SkryptObject EvaluateExpression(string operationName, SkryptObject left, SkryptObject right, IToken token)
        {
            object result = new InvalidOperation();

            switch (operationName)
            {
            case "+":
                result = _engine.ExpressionInterpreter.EvaluatePlusExpression(left, right);

                break;

            case "-":
                result = _engine.ExpressionInterpreter.EvaluateSubtractExpression(left, right);

                break;

            case "*":
                result = _engine.ExpressionInterpreter.EvaluateMultiplyExpression(left, right);
                break;

            case "/":
                result = _engine.ExpressionInterpreter.EvaluateDivideExpression(left, right);
                break;

            case "%":
                result = _engine.ExpressionInterpreter.EvaluateRemainderExpression(left, right);
                break;

            case "**":
                result = _engine.ExpressionInterpreter.EvaluateExponentExpression(left, right);
                break;

            case "<":
                result = _engine.ExpressionInterpreter.EvaluateLessExpression(left, right);
                break;

            case "<=":
                result = _engine.ExpressionInterpreter.EvaluateLessEqualExpression(left, right);
                break;

            case ">":
                result = _engine.ExpressionInterpreter.EvaluateGreaterExpression(left, right);
                break;

            case ">=":
                result = _engine.ExpressionInterpreter.EvaluateGreaterEqualExpression(left, right);
                break;

            case "==":
                result = _engine.ExpressionInterpreter.EvaluateEqualExpression(left, right);
                break;

            case "!=":
                result = _engine.ExpressionInterpreter.EvaluateNotEqualExpression(left, right);
                break;

            case "is":
                result = _engine.ExpressionInterpreter.EvaluateIsExpression(left, right);
                break;

            case "&&":
                result = _engine.ExpressionInterpreter.EvaluateAndExpression(left, right);
                break;

            case "||":
                result = _engine.ExpressionInterpreter.EvaluateOrExpression(left, right);
                break;

            case "&":
                result = _engine.ExpressionInterpreter.EvaluateBitAndExpression(left, right);
                break;

            case "^":
                result = _engine.ExpressionInterpreter.EvaluateBitXOrExpression(left, right);
                break;

            case "|":
                result = _engine.ExpressionInterpreter.EvaluateBitOrExpression(left, right);
                break;

            case "<<":
                result = _engine.ExpressionInterpreter.EvaluateBitShiftLExpression(left, right);
                break;

            case ">>":
                result = _engine.ExpressionInterpreter.EvaluateBitShiftRExpression(left, right);
                break;

            case ">>>":
                result = _engine.ExpressionInterpreter.EvaluateBitShiftURExpression(left, right);
                break;
            }

            if (result is bool)
            {
                result = _engine.CreateBoolean((bool)result);
            }

            if (result is double)
            {
                result = _engine.CreateNumber((double)result);
            }

            if (result is int)
            {
                result = _engine.CreateNumber((int)result);
            }

            if (result is string)
            {
                result = _engine.CreateString((string)result);
            }

            if (left != null && left is SkryptInstance skryptInstance)
            {
                if (skryptInstance.HasTrait <SubtractableTrait>())
                {
                    result = EvaluateTraitOperator("Sub", left, right);
                }
                else if (skryptInstance.HasTrait <AddableTrait>())
                {
                    result = EvaluateTraitOperator("Add", left, right);
                }
                else if (skryptInstance.HasTrait <MultiplicableTrait>())
                {
                    result = EvaluateTraitOperator("Mul", left, right);
                }
                else if (skryptInstance.HasTrait <DividableTrait>())
                {
                    result = EvaluateTraitOperator("Div", left, right);
                }
            }

            if (result is InvalidOperation)
            {
                if (result is InvalidOperation)
                {
                    var lname = left == null ? "null" : typeof(SkryptType).IsAssignableFrom(left.GetType()) ? "type" : left.Name;
                    var rname = right == null ? "null" : typeof(SkryptType).IsAssignableFrom(right.GetType()) ? "type" : right.Name;

                    _engine.ErrorHandler.FatalError(token, $"No such operation: {lname} {operationName} {rname}.");
                }
            }

            return((SkryptObject)result);
        }