/* * 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([ 'src/geom/Matrix3', 'src/geom/Sector' ], function (Matrix3, Sector) { "use strict"; describe("Matrix3 Tests", function () { it("Should construct a 3x3 matrix correctly", function () { var matrix = new Matrix3(0, 1, 2, 3, 4, 5, 6, 7, 8); for (var i = 0; i < 9; i++) { expect(matrix[i]).toEqual(i); } }); it("Should create an identity Matrix", function () { var identity = Matrix3.fromIdentity(); expect(identity[0]).toEqual(1); expect(identity[1]).toEqual(0); expect(identity[2]).toEqual(0); expect(identity[3]).toEqual(0); expect(identity[4]).toEqual(1); expect(identity[5]).toEqual(0); expect(identity[6]).toEqual(0); expect(identity[7]).toEqual(0); expect(identity[8]).toEqual(1); }); it("Sets this matrix to one that flips and shifts the y-axis", function () { var matrix = new Matrix3(); matrix.setToUnitYFlip(); expect(matrix[0]).toEqual(1); expect(matrix[1]).toEqual(0); expect(matrix[2]).toEqual(0); expect(matrix[3]).toEqual(0); expect(matrix[4]).toEqual(-1); expect(matrix[5]).toEqual(1); expect(matrix[6]).toEqual(0); expect(matrix[7]).toEqual(0); expect(matrix[8]).toEqual(1); }); describe("Multiplies this matrix by a specified matrix", function () { it("Multiplies the matrix", function () { var matrixA = new Matrix3(0, 1, 2, 3, 4, 5, 6, 7, 8); var matrixB = new Matrix3(16, 17, 18, 19, 20, 21, 22, 23, 24); matrixA.multiplyMatrix(matrixB); expect(matrixA[0]).toEqual(63); expect(matrixA[1]).toEqual(66); expect(matrixA[2]).toEqual(69); expect(matrixA[3]).toEqual(234); expect(matrixA[4]).toEqual(246); expect(matrixA[5]).toEqual(258); expect(matrixA[6]).toEqual(405); expect(matrixA[7]).toEqual(426); expect(matrixA[8]).toEqual(447); }); it("Missing multiplier matrix", function () { expect(function () { var matrixA = new Matrix3(0, 1, 2, 3, 4, 5, 6, 7, 8); var matrixB = null; matrixA.multiplyMatrix(matrixB); }).toThrow(); }); }); it("Multiplies this matrix by a tile transformation", function () { var matrix = new Matrix3(0, 1, 2, 3, 4, 5, 6, 7, 8); var source = new Sector(34, 37, 14, 15); var destination = new Sector(44, 47, 18, 19); matrix.multiplyByTileTransform(source,destination); expect(matrix[0]).toBeCloseTo(0); expect(matrix[1]).toBeCloseTo(1); expect(matrix[2]).toBeCloseTo(-1.333); expect(matrix[3]).toBeCloseTo(3); expect(matrix[4]).toBeCloseTo(4); expect(matrix[5]).toBeCloseTo(-20.333); expect(matrix[6]).toBeCloseTo(6); expect(matrix[7]).toBeCloseTo(7); expect(matrix[8]).toBeCloseTo(-36); }); describe("Stores this matrix's components in column-major order in a specified array", function () { it("Multiplies the matrix", function () { var matrix = new Matrix3(0, 1, 2, 3, 4, 5, 6, 7, 8); var result = new Float32Array(9); matrix.columnMajorComponents(result); expect(result[0]).toEqual(0); expect(result[1]).toEqual(3); expect(result[2]).toEqual(6); expect(result[3]).toEqual(1); expect(result[4]).toEqual(4); expect(result[5]).toEqual(7); expect(result[6]).toEqual(2); expect(result[7]).toEqual(5); expect(result[8]).toEqual(8); }); it("Missing result", function () { expect(function () { var matrixA = new Matrix3(0, 1, 2, 3, 4, 5, 6, 7, 8); var result = null; matrixA.columnMajorComponents(result); }).toThrow(); }); }); describe("Multiplies this matrix by a specified matrix", function () { it("Multiplies the matrix", function () { var matrixA = new Matrix3(0, 1, 2, 3, 4, 5, 6, 7, 8); var matrixB = new Matrix3(16, 17, 18, 19, 20, 21, 22, 23, 24); matrixA.multiplyMatrix(matrixB); expect(matrixA[0]).toEqual(63); expect(matrixA[1]).toEqual(66); expect(matrixA[2]).toEqual(69); expect(matrixA[3]).toEqual(234); expect(matrixA[4]).toEqual(246); expect(matrixA[5]).toEqual(258); expect(matrixA[6]).toEqual(405); expect(matrixA[7]).toEqual(426); expect(matrixA[8]).toEqual(447); }); it("Missing multiplier matrix", function () { expect(function () { var matrixA = new Matrix3(0, 1, 2, 3, 4, 5, 6, 7, 8); var matrixB = null; matrixA.multiplyMatrix(matrixB); }).toThrow(); }); }); }); });