a tool to help your Letta AI agents navigate bluesky
at main 6.0 kB view raw
1import { assertEquals } from "@std/assert"; 2import { isAgentAwake, isAgentAsleep } from "./sleepWakeHelpers.ts"; 3 4// Normal Schedule Tests (wake=8, sleep=22) 5// Agent should be awake from 8am to 10pm 6 7Deno.test("Normal schedule - should be asleep before wake time (7am)", () => { 8 assertEquals(isAgentAwake(7, 8, 22), false); 9 assertEquals(isAgentAsleep(7, 8, 22), true); 10}); 11 12Deno.test("Normal schedule - should be awake at wake time (8am)", () => { 13 assertEquals(isAgentAwake(8, 8, 22), true); 14 assertEquals(isAgentAsleep(8, 8, 22), false); 15}); 16 17Deno.test("Normal schedule - should be awake during day (12pm)", () => { 18 assertEquals(isAgentAwake(12, 8, 22), true); 19 assertEquals(isAgentAsleep(12, 8, 22), false); 20}); 21 22Deno.test("Normal schedule - should be awake before sleep time (9pm)", () => { 23 assertEquals(isAgentAwake(21, 8, 22), true); 24 assertEquals(isAgentAsleep(21, 8, 22), false); 25}); 26 27Deno.test("Normal schedule - should be asleep at sleep time (10pm)", () => { 28 assertEquals(isAgentAwake(22, 8, 22), false); 29 assertEquals(isAgentAsleep(22, 8, 22), true); 30}); 31 32Deno.test("Normal schedule - should be asleep late night (11pm)", () => { 33 assertEquals(isAgentAwake(23, 8, 22), false); 34 assertEquals(isAgentAsleep(23, 8, 22), true); 35}); 36 37Deno.test("Normal schedule - should be asleep at midnight", () => { 38 assertEquals(isAgentAwake(0, 8, 22), false); 39 assertEquals(isAgentAsleep(0, 8, 22), true); 40}); 41 42// Cross-Midnight Schedule Tests (wake=9, sleep=2) 43// Agent should be awake from 9am to 2am (next day) 44 45Deno.test("Cross-midnight schedule - should be awake at midnight", () => { 46 assertEquals(isAgentAwake(0, 9, 2), true); 47 assertEquals(isAgentAsleep(0, 9, 2), false); 48}); 49 50Deno.test("Cross-midnight schedule - should be awake late night (1am)", () => { 51 assertEquals(isAgentAwake(1, 9, 2), true); 52 assertEquals(isAgentAsleep(1, 9, 2), false); 53}); 54 55Deno.test("Cross-midnight schedule - should be asleep at sleep time (2am)", () => { 56 assertEquals(isAgentAwake(2, 9, 2), false); 57 assertEquals(isAgentAsleep(2, 9, 2), true); 58}); 59 60Deno.test("Cross-midnight schedule - should be asleep early morning (3am)", () => { 61 assertEquals(isAgentAwake(3, 9, 2), false); 62 assertEquals(isAgentAsleep(3, 9, 2), true); 63}); 64 65Deno.test("Cross-midnight schedule - should be asleep before wake (8am)", () => { 66 assertEquals(isAgentAwake(8, 9, 2), false); 67 assertEquals(isAgentAsleep(8, 9, 2), true); 68}); 69 70Deno.test("Cross-midnight schedule - should be awake at wake time (9am)", () => { 71 assertEquals(isAgentAwake(9, 9, 2), true); 72 assertEquals(isAgentAsleep(9, 9, 2), false); 73}); 74 75Deno.test("Cross-midnight schedule - should be awake during day (12pm)", () => { 76 assertEquals(isAgentAwake(12, 9, 2), true); 77 assertEquals(isAgentAsleep(12, 9, 2), false); 78}); 79 80Deno.test("Cross-midnight schedule - should be awake late night (11pm)", () => { 81 assertEquals(isAgentAwake(23, 9, 2), true); 82 assertEquals(isAgentAsleep(23, 9, 2), false); 83}); 84 85// Edge Case Tests 86 87Deno.test("Edge case - equal wake/sleep times (midnight) should be asleep", () => { 88 // When wake == sleep, the agent should be asleep at all hours 89 assertEquals(isAgentAwake(0, 0, 0), false); 90 assertEquals(isAgentAsleep(0, 0, 0), true); 91 assertEquals(isAgentAwake(12, 0, 0), false); 92 assertEquals(isAgentAsleep(12, 0, 0), true); 93}); 94 95Deno.test("Edge case - nearly 24 hours awake (wake=1, sleep=0)", () => { 96 // Asleep only from midnight to 1am 97 assertEquals(isAgentAwake(0, 1, 0), false); 98 assertEquals(isAgentAsleep(0, 1, 0), true); 99 assertEquals(isAgentAwake(1, 1, 0), true); 100 assertEquals(isAgentAsleep(1, 1, 0), false); 101 assertEquals(isAgentAwake(23, 1, 0), true); 102 assertEquals(isAgentAsleep(23, 1, 0), false); 103}); 104 105Deno.test("Edge case - nearly 24 hours asleep (wake=0, sleep=23)", () => { 106 // Awake only from midnight to 11pm 107 assertEquals(isAgentAwake(0, 0, 23), true); 108 assertEquals(isAgentAsleep(0, 0, 23), false); 109 assertEquals(isAgentAwake(22, 0, 23), true); 110 assertEquals(isAgentAsleep(22, 0, 23), false); 111 assertEquals(isAgentAwake(23, 0, 23), false); 112 assertEquals(isAgentAsleep(23, 0, 23), true); 113}); 114 115Deno.test("Edge case - adjacent hours (wake=10, sleep=11)", () => { 116 // Awake only from 10am to 11am 117 assertEquals(isAgentAwake(9, 10, 11), false); 118 assertEquals(isAgentAsleep(9, 10, 11), true); 119 assertEquals(isAgentAwake(10, 10, 11), true); 120 assertEquals(isAgentAsleep(10, 10, 11), false); 121 assertEquals(isAgentAwake(11, 10, 11), false); 122 assertEquals(isAgentAsleep(11, 10, 11), true); 123 assertEquals(isAgentAwake(12, 10, 11), false); 124 assertEquals(isAgentAsleep(12, 10, 11), true); 125}); 126 127// Inverse Relationship Tests 128 129Deno.test("Inverse relationship - awake and asleep are always opposite (normal schedule)", () => { 130 const wakeTime = 8; 131 const sleepTime = 22; 132 133 // Test all 24 hours 134 for (let hour = 0; hour < 24; hour++) { 135 const awake = isAgentAwake(hour, wakeTime, sleepTime); 136 const asleep = isAgentAsleep(hour, wakeTime, sleepTime); 137 assertEquals( 138 awake, 139 !asleep, 140 `Hour ${hour}: awake=${awake}, asleep=${asleep} should be opposite`, 141 ); 142 } 143}); 144 145Deno.test("Inverse relationship - awake and asleep are always opposite (cross-midnight)", () => { 146 const wakeTime = 9; 147 const sleepTime = 2; 148 149 // Test all 24 hours 150 for (let hour = 0; hour < 24; hour++) { 151 const awake = isAgentAwake(hour, wakeTime, sleepTime); 152 const asleep = isAgentAsleep(hour, wakeTime, sleepTime); 153 assertEquals( 154 awake, 155 !asleep, 156 `Hour ${hour}: awake=${awake}, asleep=${asleep} should be opposite`, 157 ); 158 } 159}); 160 161Deno.test("Inverse relationship - awake and asleep are always opposite (edge case)", () => { 162 const wakeTime = 23; 163 const sleepTime = 1; 164 165 // Test all 24 hours 166 for (let hour = 0; hour < 24; hour++) { 167 const awake = isAgentAwake(hour, wakeTime, sleepTime); 168 const asleep = isAgentAsleep(hour, wakeTime, sleepTime); 169 assertEquals( 170 awake, 171 !asleep, 172 `Hour ${hour}: awake=${awake}, asleep=${asleep} should be opposite`, 173 ); 174 } 175});