UNPKG

barometer-trend

Version:

Calculate the tendency, trend and weather predictions of barometric pressure

125 lines (111 loc) 3.86 kB
const assert = require('assert'); const utils = require('../utils'); describe("Utils Tests", function () { describe("Minutes from now", function () { it("it should equal", function () { //arrange const now = new Date(); const expected = now.getHours() < 3 ? now.getHours() + 24 - 3 : now.getHours() - 3; //avoid midnight 00 to 02 problem //act var actual = utils.minutesFromNow(-180).getHours(); //assert assert.strictEqual(actual, expected); }); }); describe("Correct pressure to sea level with default temperature", function () { it("it should equal", function () { //arrange //act var actual = utils.adjustPressureToSeaLevel(98000, 100); //assert assert.strictEqual(actual, 99168); }); it("Correct pressure to sea level with altitude and temperature", function () { //arrange //act var actual = utils.adjustPressureToSeaLevel(98000, 100, 30 + utils.KELVIN); //assert assert.strictEqual(actual, 99110); }); it("Correct pressure to sea level with only temperature", function () { //arrange //act var actual = utils.adjustPressureToSeaLevel(98000, 0, 30 + utils.KELVIN); //assert assert.strictEqual(actual, 98000); //https://www.easycalculation.com/weather/temperature-barometer-correction.php }); }); describe("Find pressure closest to", function () { it("it should pick the previous", function () { //arrange const expected = 101400; const pressures = [ { datetime: utils.minutesFromNow(-61), value: expected }, { datetime: utils.minutesFromNow(-58), value: 101600 }, ]; //act var actual = utils.getPressureClosestTo(pressures, utils.minutesFromNow(-60)); //assert assert.strictEqual(actual.value, expected); }); it("it should pick the next", function () { //arrange const expected = 101600; const pressures = [ { datetime: utils.minutesFromNow(-62), value: 101400 }, { datetime: utils.minutesFromNow(-59), value: expected }, ]; //act var actual = utils.getPressureClosestTo(pressures, utils.minutesFromNow(-60)); //assert assert.strictEqual(actual.value, expected); }); it("it should pick the middle", function () { //arrange const expected = 101500; const pressures = [ { datetime: utils.minutesFromNow(-61), value: 101400 }, { datetime: utils.minutesFromNow(-60), value: expected }, { datetime: utils.minutesFromNow(-59), value: 101600 }, ]; //act var actual = utils.getPressureClosestTo(pressures, utils.minutesFromNow(-60)); //assert assert.strictEqual(actual.value, expected); }); it("it should pick hour", function () { //arrange const expected = 101400; const pressures = [ { datetime: utils.minutesFromNow(-60*5), value: 101100 }, { datetime: utils.minutesFromNow(-60*4), value: 101200 }, { datetime: utils.minutesFromNow(-60*3), value: 101300 }, { datetime: utils.minutesFromNow(-60*2), value: expected }, { datetime: utils.minutesFromNow(-60*1), value: 101500 }, { datetime: new Date(), value: 101600 }, ]; //act var actual = utils.getPressureClosestTo(pressures, utils.minutesFromNow(-60*2)); //assert assert.strictEqual(actual.value, expected); }); }); describe("getPressureAverageByTime Test", function () { it("it should average", function () { //arrange const expected = 101950; const pressures = [ { datetime: utils.minutesFromNow(-59), value: 101800 }, { datetime: utils.minutesFromNow(-30), value: 101900 }, { datetime: utils.minutesFromNow(-10), value: 102000 }, { datetime: utils.minutesFromNow(-1), value: 102100 } ]; let subset = utils.getPressuresByPeriod(pressures, utils.minutesFromNow(-60), new Date()); //act var actual = utils.getPressureAverage(subset); //assert assert.strictEqual(actual, expected); }); }); });