forked from mourner/suncalc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.js
67 lines (55 loc) · 2.31 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
var SunCalc = require('./suncalc'),
assert = require('assert');
function assertNear(val1, val2, margin) {
margin = margin || 1E-15;
assert.ok(Math.abs(val1 - val2) < margin, 'asserted almost equal: ' + val1 + ', ' + val2);
}
describe('SunCalc', function () {
var date = new Date('2013-03-05UTC'),
lat = 50.5,
lng = 30.5;
var testTimes = {
solarNoon: "2013-03-05T10:10:57Z",
nadir: "2013-03-04T22:10:57Z",
sunrise: "2013-03-05T04:34:57Z",
sunset: "2013-03-05T15:46:56Z",
sunriseEnd: "2013-03-05T04:38:19Z",
sunsetStart: "2013-03-05T15:43:34Z",
dawn: "2013-03-05T04:02:17Z",
dusk: "2013-03-05T16:19:36Z",
nauticalDawn: "2013-03-05T03:24:31Z",
nauticalDusk: "2013-03-05T16:57:22Z",
nightEnd: "2013-03-05T02:46:17Z",
night: "2013-03-05T17:35:36Z",
goldenHourEnd: "2013-03-05T05:19:01Z",
goldenHour: "2013-03-05T15:02:52Z"
};
describe('getPosition', function () {
it('should return an object with correct azimuth and altitude for the given time and location', function () {
var sunPos = SunCalc.getPosition(date, lat, lng);
assertNear(sunPos.azimuth, -2.5003175907168385);
assertNear(sunPos.altitude, -0.7000406838781611);
});
});
describe('getTimes', function () {
it('should return correct sun phases for the given date and location', function () {
var times = SunCalc.getTimes(date, lat, lng);
for (var i in testTimes) {
assert.equal(times[i].toUTCString(), new Date(testTimes[i]).toUTCString());
}
});
});
describe('getMoonPosition', function () {
it('should return an object with correct moon position data given time and location', function () {
var moonPos = SunCalc.getMoonPosition(date, lat, lng);
assertNear(moonPos.azimuth, -0.9783999522438226);
assertNear(moonPos.altitude, 0.006969727754891917);
assertNear(moonPos.distance, 364121.37256256194);
});
});
describe('getMoonFraction', function () {
it('should return fraction of illuminated moon given time', function () {
assertNear(SunCalc.getMoonFraction(date), 0.4848068202456373);
});
});
});