openmct/platform/telemetry/test/TelemetryQueueSpec.js
Victor Woeltjen acf4261a08 [Telemetry] Add data structure specs
Add specs for data structures which will support resolution
of WTD-784 by retaining all data not yet received by callbacks
(instead of just the very latest) such that plots can ensure
they do not miss streaming data.
2015-01-30 15:36:43 -08:00

55 lines
1.8 KiB
JavaScript

/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/
define(
["../src/TelemetryQueue"],
function (TelemetryQueue) {
"use strict";
describe("The telemetry queue", function () {
var queue;
beforeEach(function () {
// put, isEmpty, dequeue
queue = new TelemetryQueue();
});
it("stores elements by key", function () {
queue.put("a", { someKey: "some value" });
expect(queue.poll())
.toEqual({ a: { someKey: "some value" }});
});
it("merges non-overlapping keys", function () {
queue.put("a", { someKey: "some value" });
queue.put("b", 42);
expect(queue.poll())
.toEqual({ a: { someKey: "some value" }, b: 42 });
});
it("adds new objects for repeated keys", function () {
queue.put("a", { someKey: "some value" });
queue.put("a", { someKey: "some other value" });
queue.put("b", 42);
expect(queue.poll())
.toEqual({ a: { someKey: "some value" }, b: 42 });
expect(queue.poll())
.toEqual({ a: { someKey: "some other value" } });
});
it("reports emptiness", function () {
expect(queue.isEmpty()).toBeTruthy();
queue.put("a", { someKey: "some value" });
queue.put("a", { someKey: "some other value" });
queue.put("b", 42);
expect(queue.isEmpty()).toBeFalsy();
queue.poll();
expect(queue.isEmpty()).toBeFalsy();
queue.poll();
expect(queue.isEmpty()).toBeTruthy();
});
});
}
);