Add PTZ nudges, configurable monitoring wall and lunar family dates

This commit is contained in:
Codex
2026-10-03 18:29:18 +08:00
parent de6933c411
commit 52b5a6b389
18 changed files with 434 additions and 20 deletions
+17
View File
@@ -0,0 +1,17 @@
'use strict';
const test=require('node:test'),assert=require('node:assert/strict'),cal=require('./web/calendar.js');
test('Spring Festival and leap month are bidirectional',()=>{
assert.deepEqual(cal.lunar('2024-02-10'),{year:2024,month:1,day:1,leap:false});
assert.equal(cal.solar('2024-01-01'),'2024-02-10');
assert.deepEqual(cal.lunar('2023-03-22'),{year:2023,month:2,day:1,leap:true});
assert.equal(cal.solar('2023-02-01',true),'2023-03-22');
assert.equal(cal.solar('2023-02-01',false),'2023-02-20');
});
test('all days across a leap year round trip',()=>{
for(let n=0;n<366;n++){const s=new Date(Date.UTC(2024,0,1+n,12)).toISOString().slice(0,10),l=cal.lunar(s);assert.equal(cal.solar(cal.iso(l),l.leap),s);}
});
test('invalid dates, nonexistent leap months and range are explicit',()=>{
for(const s of ['2026-02-30','2026-13-01','bad'])assert.throws(()=>cal.solarDate(s));
assert.throws(()=>cal.solar('2024-02-01',true));assert.throws(()=>cal.solar('2024-12-31'));assert.throws(()=>cal.lunar('1800-01-01'));
assert.equal(cal.describe('1800-01-01'),'1800-01-01(公历)');
});