Skip to content

Commit 39a028c

Browse files
committed
add mock for avr/sleep.h
1 parent cdfa2fe commit 39a028c

File tree

3 files changed

+130
-0
lines changed

3 files changed

+130
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#include <ArduinoUnitTests.h>
2+
#include <avr/sleep.h>
3+
4+
GodmodeState* state = GODMODE();
5+
6+
unittest(sleep_enable) {
7+
state->reset();
8+
assertFalse(state->sleep.sleep_enable);
9+
assertEqual(0, state->sleep.sleep_enable_count);
10+
11+
sleep_enable();
12+
13+
assertTrue(state->sleep.sleep_enable);
14+
assertEqual(1, state->sleep.sleep_enable_count);
15+
}
16+
17+
unittest(sleep_disable) {
18+
state->reset();
19+
assertEqual(0, state->sleep.sleep_disable_count);
20+
21+
sleep_disable();
22+
23+
assertFalse(state->sleep.sleep_enable);
24+
assertEqual(1, state->sleep.sleep_disable_count);
25+
}
26+
27+
unittest(set_sleep_mode) {
28+
state->reset();
29+
assertEqual(0, state->sleep.sleep_mode);
30+
31+
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
32+
33+
assertEqual(SLEEP_MODE_PWR_DOWN, state->sleep.sleep_mode);
34+
}
35+
36+
unittest(sleep_bod_disable) {
37+
state->reset();
38+
assertEqual(0, state->sleep.sleep_bod_disable_count);
39+
40+
sleep_bod_disable();
41+
42+
assertEqual(1, state->sleep.sleep_bod_disable_count);
43+
}
44+
45+
unittest(sleep_cpu) {
46+
state->reset();
47+
assertEqual(0, state->sleep.sleep_cpu_count);
48+
49+
sleep_cpu();
50+
51+
assertEqual(1, state->sleep.sleep_cpu_count);
52+
}
53+
54+
unittest(sleep_mode) {
55+
state->reset();
56+
assertEqual(0, state->sleep.sleep_mode_count);
57+
58+
sleep_mode();
59+
60+
assertEqual(1, state->sleep.sleep_mode_count);
61+
assertEqual(1, state->sleep.sleep_enable_count);
62+
assertEqual(1, state->sleep.sleep_disable_count);
63+
}
64+
65+
unittest_main()

cpp/arduino/Godmode.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ class GodmodeState {
4343
uint8_t mode;
4444
};
4545

46+
struct SleepDef {
47+
bool sleep_enable = false;
48+
unsigned int sleep_enable_count = 0;
49+
unsigned int sleep_disable_count = 0;
50+
unsigned char sleep_mode = 0;
51+
unsigned int sleep_cpu_count = 0;
52+
unsigned int sleep_mode_count = 0;
53+
unsigned int sleep_bod_disable_count = 0;
54+
};
55+
4656
public:
4757
unsigned long micros;
4858
unsigned long seed;
@@ -52,6 +62,7 @@ class GodmodeState {
5262
struct PortDef serialPort[NUM_SERIAL_PORTS];
5363
struct InterruptDef interrupt[MOCK_PINS_COUNT]; // not sure how to get actual number
5464
struct PortDef spi;
65+
struct SleepDef sleep;
5566

5667
void resetPins() {
5768
for (int i = 0; i < MOCK_PINS_COUNT; ++i) {
@@ -85,12 +96,23 @@ class GodmodeState {
8596
spi.readDelayMicros = 0;
8697
}
8798

99+
void resetSleep() {
100+
sleep.sleep_enable = false;
101+
sleep.sleep_enable_count = 0;
102+
sleep.sleep_disable_count = 0;
103+
sleep.sleep_mode = 0;
104+
sleep.sleep_cpu_count = 0;
105+
sleep.sleep_mode_count = 0;
106+
sleep.sleep_bod_disable_count = 0;
107+
}
108+
88109
void reset() {
89110
resetClock();
90111
resetPins();
91112
resetInterrupts();
92113
resetPorts();
93114
resetSPI();
115+
resetSleep();
94116
seed = 1;
95117
}
96118

cpp/arduino/avr/sleep.h

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#ifndef _AVR_SLEEP_H_
2+
#define _AVR_SLEEP_H_
3+
4+
#include <Godmode.h>
5+
6+
void sleep_enable() {
7+
GodmodeState* godmode = GODMODE();
8+
godmode->sleep.sleep_enable = true;
9+
godmode->sleep.sleep_enable_count++;
10+
}
11+
12+
void sleep_disable() {
13+
GodmodeState* godmode = GODMODE();
14+
godmode->sleep.sleep_enable = false;
15+
godmode->sleep.sleep_disable_count++;
16+
}
17+
18+
void set_sleep_mode(unsigned char mode) {
19+
GodmodeState* godmode = GODMODE();
20+
godmode->sleep.sleep_mode = mode;
21+
}
22+
23+
void sleep_bod_disable() {
24+
GodmodeState* godmode = GODMODE();
25+
godmode->sleep.sleep_bod_disable_count++;
26+
}
27+
28+
void sleep_cpu() {
29+
GodmodeState* godmode = GODMODE();
30+
godmode->sleep.sleep_cpu_count++;
31+
}
32+
33+
void sleep_mode() {
34+
GodmodeState* godmode = GODMODE();
35+
sleep_enable();
36+
godmode->sleep.sleep_mode_count++;
37+
sleep_disable();
38+
}
39+
40+
unsigned char sfr_store;
41+
#define _SFR_MEM8(mem_addr) sfr_store
42+
43+
#endif /* _AVR_SLEEP_H_ */

0 commit comments

Comments
 (0)