From 493c63be4493cc72d0b5291c0ab478bd2150d9d3 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Tue, 15 Sep 2015 10:58:10 -0700 Subject: [PATCH] [Time Conductor] Test series wrapping WTD-1515 --- .../conductor/src/ConductorTelemetrySeries.js | 2 +- .../test/ConductorTelemetryDecoratorSpec.js | 35 ++++++++ .../test/ConductorTelemetrySeriesSpec.js | 86 +++++++++++++++++++ platform/features/conductor/test/suite.json | 2 + 4 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js create mode 100644 platform/features/conductor/test/ConductorTelemetrySeriesSpec.js diff --git a/platform/features/conductor/src/ConductorTelemetrySeries.js b/platform/features/conductor/src/ConductorTelemetrySeries.js index 55fe120837..aa6ec0ec63 100644 --- a/platform/features/conductor/src/ConductorTelemetrySeries.js +++ b/platform/features/conductor/src/ConductorTelemetrySeries.js @@ -43,7 +43,7 @@ define( function binSearch(min, max, value) { var mid = Math.floor((min + max) / 2); - return min >= max ? min : + return min > max ? min : series.getDomainValue(mid) < value ? binSearch(mid + 1, max, value) : binSearch(min, mid - 1, value); diff --git a/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js b/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js new file mode 100644 index 0000000000..39b6436131 --- /dev/null +++ b/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js @@ -0,0 +1,35 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is 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. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ + + +define( + ["../src/ConductorTelemetryDecorator"], + function (ConductorTelemetryDecorator) { + "use strict"; + + describe("ConductorTelemetryDecorator", function () { + + + }); + } +); diff --git a/platform/features/conductor/test/ConductorTelemetrySeriesSpec.js b/platform/features/conductor/test/ConductorTelemetrySeriesSpec.js new file mode 100644 index 0000000000..ea884f74f3 --- /dev/null +++ b/platform/features/conductor/test/ConductorTelemetrySeriesSpec.js @@ -0,0 +1,86 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is 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. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +define( + ["../src/ConductorTelemetrySeries"], + function (ConductorTelemetrySeries) { + "use strict"; + + describe("ConductorTelemetrySeries", function () { + var mockSeries, + mockConductor, + testArray, + series; + + beforeEach(function () { + testArray = [ -10, 0, 42, 1977, 12321 ]; + + mockSeries = jasmine.createSpyObj( + 'series', + [ 'getPointCount', 'getDomainValue', 'getRangeValue' ] + ); + mockConductor = jasmine.createSpyObj( + 'conductor', + [ 'queryStart', 'queryEnd', 'displayStart', 'displayEnd' ] + ); + + mockSeries.getPointCount.andCallFake(function () { + return testArray.length; + }); + mockSeries.getDomainValue.andCallFake(function (i) { + return testArray[i]; + }); + mockSeries.getRangeValue.andCallFake(function (i) { + return testArray[i] * 2; + }); + + mockConductor.displayStart.andReturn(0); + mockConductor.displayEnd.andReturn(2000); + + series = new ConductorTelemetrySeries( + mockSeries, + mockConductor + ); + }); + + it("reduces the apparent size of a series", function () { + expect(series.getPointCount()).toEqual(3); + }); + + it("maps domain value indexes to the displayable range", function () { + [0, 1, 2].forEach(function (i) { + expect(series.getDomainValue(i)) + .toEqual(mockSeries.getDomainValue(i + 1)); + }); + }); + + it("maps range value indexes to the displayable range", function () { + [0, 1, 2].forEach(function (i) { + expect(series.getRangeValue(i)) + .toEqual(mockSeries.getRangeValue(i + 1)); + }); + }); + + }); + } +); diff --git a/platform/features/conductor/test/suite.json b/platform/features/conductor/test/suite.json index d4d291e4d7..0c469617de 100644 --- a/platform/features/conductor/test/suite.json +++ b/platform/features/conductor/test/suite.json @@ -1,5 +1,7 @@ [ "ConductorRepresenter", "ConductorService", + "ConductorTelemetryDecorator", + "ConductorTelemetrySeries", "TimeConductor" ]