@@ -111,6 +111,37 @@ void testGetState(void) {
111111
112112}
113113
114+ void testGetProgress (void ) {
115+ float weekday_go = 8 ;
116+ float weekday_wake = 7 ;
117+ float weekday_bedtime = 18 ;
118+
119+ float weekend_go = 9 ;
120+ float weekend_wake = 8 ;
121+ float weekend_bedtime = 19 ;
122+
123+ // Monday 3am (bedtime 18, wake 7 -> total 13h, 18 to 3 is 9h. 9/13 = ~69%)
124+ TEST_ASSERT_FLOAT_WITHIN (1.0 , 69.2 , GetProgress (MON , 3 , weekday_go , weekday_wake , weekday_bedtime , weekend_go , weekend_wake , weekend_bedtime ));
125+
126+ // Friday 6pm (GREEN, 100% since out of bounds for amber/red)
127+ TEST_ASSERT_EQUAL_FLOAT (100.0 , GetProgress (FRI , 18 , weekday_go , weekday_wake , weekday_bedtime , weekend_go , weekend_wake , weekend_bedtime ));
128+
129+ // Saturday 7:30am (RED, bedtime 19, wake 8 -> total 13h, 19 to 7.5 is 12.5h. 12.5/13 = ~96%)
130+ TEST_ASSERT_FLOAT_WITHIN (1.0 , 96.1 , GetProgress (SAT , 7.5 , weekday_go , weekday_wake , weekday_bedtime , weekend_go , weekend_wake , weekend_bedtime ));
131+
132+ // Saturday 8:30am (AMBER, wake 8, go 9 -> total 1h, 8 to 8.5 is 0.5h. 0.5/1 = 50%)
133+ TEST_ASSERT_EQUAL_FLOAT (50.0 , GetProgress (SAT , 8.5 , weekday_go , weekday_wake , weekday_bedtime , weekend_go , weekend_wake , weekend_bedtime ));
134+
135+ // Friday 3:00am (RED, yesterday Thursday, so startBedtime is weekday_bedtime 18. wake is weekday_wake 7. Total 13h. 18 to 3 is 9h. 9/13 = ~69%)
136+ TEST_ASSERT_FLOAT_WITHIN (1.0 , 69.2 , GetProgress (FRI , 3.0 , weekday_go , weekday_wake , weekday_bedtime , weekend_go , weekend_wake , weekend_bedtime ));
137+
138+ // Sunday 8:00pm (RED, evening. today Sunday, tomorrow Monday. so endWaketime is weekday_wake 7. bedtime is weekday_bedtime 18. Total 13h. 18 to 20 is 2h. 2/13 = ~15%)
139+ TEST_ASSERT_FLOAT_WITHIN (1.0 , 15.3 , GetProgress (SUN , 20.0 , weekday_go , weekday_wake , weekday_bedtime , weekend_go , weekend_wake , weekend_bedtime ));
140+
141+ // Sunday 3:00am (RED, yesterday Saturday, so startBedtime is weekend_bedtime 19. wake is weekend_wake 8. Total 13h. 19 to 3 is 8h. 8/13 = ~61%)
142+ TEST_ASSERT_FLOAT_WITHIN (1.0 , 61.5 , GetProgress (SUN , 3.0 , weekday_go , weekday_wake , weekday_bedtime , weekend_go , weekend_wake , weekend_bedtime ));
143+ }
144+
114145
115146// void testGetColor(void) {
116147 // TEST_ASSERT_EQUAL_STRING("GREEN", GetColor(50, 64));
0 commit comments