test(pulse): prove the day-mean method across readers, the dry run's single write and the bounded heap

This commit is contained in:
Marc-André Bombeck committed 2026-10-16 01:07:24 +02:00
1 parent 9f17cef8e4
commit 46e82efe22
5 files changed
+431 -5

No files matched your search

+4 -1
View File
@@ -175,7 +175,10 @@ function windows(
const start = Math.floor(first.getTime() / DAY_MS) * DAY_MS;
const end = (Math.floor(last.getTime() / DAY_MS) + 1) * DAY_MS;
for (let t = start; t < end; t += days * DAY_MS) {
out.push({ from: new Date(t), to: new Date(Math.min(end, t + days * DAY_MS)) });
out.push({
from: new Date(t),
to: new Date(Math.min(end, t + days * DAY_MS)),
});
}
return out;
}
@@ -175,8 +175,9 @@ describe("pulse day-mean method", () => {
});
it("weighs hours by min(1, n / 3)", () => {
expect([1, 2, 3, 10].map((n) => hourWeight(n, "weighted_hour_mean_v2")))
.toEqual([1 / 3, 2 / 3, 1, 1]);
expect(
[1, 2, 3, 10].map((n) => hourWeight(n, "weighted_hour_mean_v2")),
).toEqual([1 / 3, 2 / 3, 1, 1]);
expect([1, 2, 3].map((n) => hourWeight(n, "hour_mean_v1"))).toEqual([
1, 1, 1,
]);
+6 -1
View File
@@ -14,7 +14,12 @@ export const pulseDayMeanActionSchema = z.strictObject({
export type PulseDayMeanActionInput = z.infer<typeof pulseDayMeanActionSchema>;
/** Where a day's change between the two methods falls, in bpm. */
export const PULSE_DAY_MEAN_CHANGE_BUCKETS = ["0-1", "1-2", "2-5", "5+"] as const;
export const PULSE_DAY_MEAN_CHANGE_BUCKETS = [
"0-1",
"1-2",
"2-5",
"5+",
] as const;
/**
* What a dry run found. Accounts are numbered in the order they were created