public void AddsNumberAsset()
        {
            _engine         = new AutomationEngineInstance(null);
            _calculateAsset = new CalculateNumberAssetCommand();
            _getAsset       = new GetAssetCommand();

            string assetName = "testIncrementNumberAsset";
            string newAsset  = "54";

            VariableMethods.CreateTestVariable(assetName, _engine, "assetName", typeof(string));
            VariableMethods.CreateTestVariable(newAsset, _engine, "newAsset", typeof(string));
            VariableMethods.CreateTestVariable(null, _engine, "output", typeof(string));

            _calculateAsset.v_AssetName        = "{assetName}";
            _calculateAsset.v_AssetActionType  = "Add";
            _calculateAsset.v_AssetActionValue = "5";

            _calculateAsset.RunCommand(_engine);

            _getAsset.v_AssetName = "{assetName}";
            _getAsset.v_AssetType = "Number";
            _getAsset.v_OutputUserVariableName = "{output}";

            _getAsset.RunCommand(_engine);

            string outputAsset = "{output}".ConvertUserVariableToString(_engine);

            Assert.Equal(newAsset, outputAsset);

            resetAsset(assetName, "49", "Number");
        }
        public async void DecrementsNumberAsset()
        {
            _engine         = new AutomationEngineInstance(null);
            _calculateAsset = new CalculateNumberAssetCommand();
            _getAsset       = new GetAssetCommand();

            string assetName = "testIncrementNumberAsset";
            string newAsset  = "48";

            VariableMethods.CreateTestVariable(assetName, _engine, "assetName", typeof(string));
            VariableMethods.CreateTestVariable(newAsset, _engine, "newAsset", typeof(string));
            VariableMethods.CreateTestVariable(null, _engine, "output", typeof(string));

            _calculateAsset.v_AssetName        = "{assetName}";
            _calculateAsset.v_AssetActionType  = "Decrement";
            _calculateAsset.v_AssetActionValue = "";

            _calculateAsset.RunCommand(_engine);

            _getAsset.v_AssetName = "{assetName}";
            _getAsset.v_AssetType = "Number";
            _getAsset.v_OutputUserVariableName = "{output}";

            _getAsset.RunCommand(_engine);

            string outputAsset = (string)await "{output}".EvaluateCode(_engine);

            Assert.Equal(newAsset, outputAsset);

            resetAsset(assetName, "49", "Number");
        }
        public void HandlesNonexistentAsset()
        {
            _engine         = new AutomationEngineInstance(null);
            _calculateAsset = new CalculateNumberAssetCommand();
            _getAsset       = new GetAssetCommand();

            string assetName = "noAsset";
            string newAsset  = "50";

            VariableMethods.CreateTestVariable(assetName, _engine, "{assetName}", typeof(string));
            VariableMethods.CreateTestVariable(newAsset, _engine, "{assetName}", typeof(string));

            _calculateAsset.v_AssetName        = "{assetName}";
            _calculateAsset.v_AssetActionType  = "Increment";
            _calculateAsset.v_AssetActionValue = "";

            Assert.Throws <DataException>(() => _calculateAsset.RunCommand(_engine));
        }