UNPKG

econ

Version:
107 lines 3.78 kB
"use strict"; var __values = (this && this.__values) || function (o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; }; Object.defineProperty(exports, "__esModule", { value: true }); var std = require("tstl"); var econ = require("../index"); function process_tasks(task_list, container) { //---- // PRELIMINARIES //---- // LOG-VECTOR var ret = new std.Vector(); // LISTENER FUNCTION var listener = function (event) { for (var it = event.first; !it.equals(event.last); it = it.next()) { var val = it.value; if (event.type == "erase") val *= -1; else if (event.type == "refresh") val = 1 / val; ret.push_back(val); } }; // FILL ITEMS for (var i = 0; i < 100; ++i) container.push_back(i); // ADD-EVENT-LISTENERS container.addEventListener("insert", listener); container.addEventListener("erase", listener); container.addEventListener("refresh", listener); try { //---- // PROCESS TASKS //---- for (var task_list_1 = __values(task_list), task_list_1_1 = task_list_1.next(); !task_list_1_1.done; task_list_1_1 = task_list_1.next()) { var task = task_list_1_1.value; var it = std.advance(container.begin(), task[1]); if (task[0] == "insert") { var size = task[2]; var p = Math.random(); if (p < .5) container.insert(it, size, 100); else { var elements = []; for (var i = 0; i < size; ++i) elements.push(100); container.insert(it, std.begin(elements), std.end(elements)); } } else if (task[0] == "set") it.value = task[2]; else { var last = std.advance(container.begin(), task[2]); if (task[0] == "erase") container.erase(it, last); else container.refresh(it, last); } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (task_list_1_1 && !task_list_1_1.done && (_a = task_list_1.return)) _a.call(task_list_1); } finally { if (e_1) throw e_1.error; } } return ret; var e_1, _a; } function test_linear_containers() { var tasks = [ ["erase", 17, 41], ["insert", 35, 9], ["insert", 9, 50], ["set", 15, 4], ["refresh", 27, 63], ["erase", 50, 110], ["insert", 0, 200], ["insert", 3, 4], ["set", 210, 1], ["erase", 40, 100], ["refresh", 0, 50] // 219 ]; var vec = new econ.Vector(); var deq = new econ.Deque(); var list = new econ.List(); var r1 = process_tasks(tasks, vec); var r2 = process_tasks(tasks, deq); var r3 = process_tasks(tasks, list); if (std.equal(vec.begin(), vec.end(), deq.begin()) == false || std.equal(vec.begin(), vec.end(), list.begin()) == false) throw new std.LogicError("Error on TSTL"); else if (std.equal(r1.begin(), r1.end(), r2.begin()) == false || std.equal(r1.begin(), r1.end(), r3.begin()) == false) throw new std.DomainError("Error on ECON"); } exports.test_linear_containers = test_linear_containers; //# sourceMappingURL=linear.js.map