UNPKG

@intuitionrobotics/testelot

Version:
112 lines 4.09 kB
"use strict"; /* * Testelot is a typescript scenario composing framework * * Copyright (C) 2020 Intuition Robotics * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Action_Container = void 0; /** * Created by IR on 3/18/17. */ const Action_1 = require("./Action"); const ContainerContext_1 = require("./ContainerContext"); class Action_Container extends Action_1.Action { constructor(type, tag) { super(type, tag); this.context = new ContainerContext_1.TypedHashMap(); this.actions = []; this.isProxy = false; } isContainer() { return true; } add(...steps) { this.actions.push(...steps); return this; } setProxy(isProxy) { this.isProxy = isProxy; return this; } get(key) { if (this.isProxy) return super.get(key); const value = this.context.get(key); if (value) return value; return super.get(key); } remove(key) { if (this.isProxy) return super.remove(key); const value = this.context.delete(key); if (value) return value; return super.remove(key); } set(key, value) { if (this.isProxy) return super.set(key, value); this.logDebug(` Storing: ${key.key} => ${JSON.stringify(value)}`); const prevValue = this.context.get(key); this.context.set(key, value); return prevValue; } getSteps() { return this.actions; } reset() { this.context.clear(); super.reset(); this.actions.forEach(action => action.reset()); } execute() { return __awaiter(this, void 0, void 0, function* () { for (const action of this.actions) { if (this.status !== Action_1.Status.Running) action.setStatus(Action_1.Status.Skipped); yield this._executeSubAction(action); if (action.status !== Action_1.Status.Error) continue; // noinspection FallThroughInSwitchStatementJS switch (action.policy) { case 0 /* ErrorPolicy.ContinueOnError */: continue; case 2 /* ErrorPolicy.HaltOnError */: this.setErrorPolicy(1 /* ErrorPolicy.SkipOnError */); this.setStatus(Action_1.Status.Error); case 1 /* ErrorPolicy.SkipOnError */: this.setStatus(Action_1.Status.Skipped); break; } } }); } isEmpty() { return this.actions && this.actions.length === 0; } } exports.Action_Container = Action_Container; //# sourceMappingURL=Action_Container.js.map