mirror of
https://github.com/NASAWorldWind/WebWorldWind.git
synced 2025-12-08 19:46:18 +00:00
132 lines
5.1 KiB
JavaScript
132 lines
5.1 KiB
JavaScript
/*
|
||
* Copyright 2003-2006, 2009, 2017, 2020 United States Government, as represented
|
||
* by the Administrator of the National Aeronautics and Space Administration.
|
||
* All rights reserved.
|
||
*
|
||
* The NASAWorldWind/WebWorldWind platform 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.
|
||
*
|
||
* NASAWorldWind/WebWorldWind also contains the following 3rd party Open Source
|
||
* software:
|
||
*
|
||
* ES6-Promise – under MIT License
|
||
* libtess.js – SGI Free Software License B
|
||
* Proj4 – under MIT License
|
||
* JSZip – under MIT License
|
||
*
|
||
* A complete listing of 3rd Party software notices and licenses included in
|
||
* WebWorldWind can be found in the WebWorldWind 3rd-party notices and licenses
|
||
* PDF found in code directory.
|
||
*/
|
||
define([], function () {
|
||
"use strict";
|
||
|
||
var CustomMatchers = function () {
|
||
};
|
||
|
||
CustomMatchers.toBeVec2 = function (util, customEqualityTesters) {
|
||
return {
|
||
compare: function (actual, expected) {
|
||
var xpass = (actual[0] === expected[0]),
|
||
ypass = (actual[1] === expected[1]);
|
||
return {
|
||
pass: xpass && ypass
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
CustomMatchers.toBeVec3 = function (util, customEqualityTesters) {
|
||
return {
|
||
compare: function (actual, expected) {
|
||
var xpass = (actual[0] === expected[0]),
|
||
ypass = (actual[1] === expected[1]),
|
||
zpass = (actual[2] === expected[2]);
|
||
return {
|
||
pass: xpass && ypass && zpass
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
CustomMatchers.toBeCloseToVec2 = function (util, customEqualityTesters) {
|
||
return {
|
||
compare: function (actual, expected, precision) {
|
||
var xpass = CustomMatchers.compareNumbers(actual[0], expected[0], precision),
|
||
ypass = CustomMatchers.compareNumbers(actual[1], expected[1], precision);
|
||
return {
|
||
pass: xpass && ypass
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
CustomMatchers.toBeCloseToVec3 = function (util, customEqualityTesters) {
|
||
return {
|
||
compare: function (actual, expected, precision) {
|
||
var xpass = CustomMatchers.compareNumbers(actual[0], expected[0], precision),
|
||
ypass = CustomMatchers.compareNumbers(actual[1], expected[1], precision),
|
||
zpass = CustomMatchers.compareNumbers(actual[2], expected[2], precision);
|
||
return {
|
||
pass: xpass && ypass && zpass
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
CustomMatchers.toBeCloseToPosition = function (util, customEqualityTesters) {
|
||
return {
|
||
compare: function (actual, expected, latitudePrecision, longitudePrecision, altitudePrecision) {
|
||
var latpass = CustomMatchers.compareNumbers(actual.latitude, expected.latitude, latitudePrecision),
|
||
lonpass = CustomMatchers.compareNumbers(actual.longitude, expected.longitude, longitudePrecision),
|
||
altpass = CustomMatchers.compareNumbers(actual.altitude, expected.altitude, altitudePrecision);
|
||
return {
|
||
pass: latpass && lonpass && altpass
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
CustomMatchers.toEqualVec3 = function (util, customEqualityTesters) {
|
||
return {
|
||
compare: function (actual, expected, delta) {
|
||
var difference = actual.distanceTo(expected);
|
||
return {
|
||
pass: difference <= delta,
|
||
message: "Expected " + actual + " to equal " + expected + ", but the difference is " + difference
|
||
};
|
||
}
|
||
};
|
||
};
|
||
|
||
CustomMatchers.toBeSector = function (util, customEqualityTesters) {
|
||
return {
|
||
compare: function (actual, expected) {
|
||
var minlatpass = (actual.minLatitude === expected.minLatitude),
|
||
maxlatpass = (actual.maxLatitude === expected.maxLatitude),
|
||
minlonpass = (actual.minLongitude === expected.minLongitude),
|
||
maxlonpass = (actual.maxLongitude === expected.maxLongitude);
|
||
return {
|
||
pass: minlatpass && maxlatpass && minlonpass && maxlonpass
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
CustomMatchers.compareNumbers = function (actual, expected, precision) {
|
||
var pow = Math.pow(10, precision + 1);
|
||
var delta = Math.abs(expected - actual);
|
||
var maxDelta = Math.pow(10, -precision) / 2;
|
||
|
||
return (Math.round(delta * pow) / pow) <= maxDelta;
|
||
};
|
||
|
||
return CustomMatchers;
|
||
}); |