1-phase PV router
Loading...
Searching...
No Matches
test_main.cpp
Go to the documentation of this file.
1#include <Arduino.h>
2#include <unity.h>
3
4#include "FastDivision.h" // Include the header file for the functions to test
5
6void setUp(void)
7{
8 // Set up code here (if needed)
9}
10
11void tearDown(void)
12{
13 // Clean up code here (if needed)
14}
15
16// Test for divu10
17void test_divu10(void)
18{
19 // Basic cases
20 TEST_ASSERT_EQUAL(1, divu10(10)); // 10 / 10 = 1
21 TEST_ASSERT_EQUAL(2, divu10(20)); // 20 / 10 = 2
22 TEST_ASSERT_EQUAL(0, divu10(0)); // 0 / 10 = 0
23 TEST_ASSERT_EQUAL(9, divu10(99)); // 99 / 10 = 9
24
25 // Edge cases
26 TEST_ASSERT_EQUAL(0, divu10(1)); // 1 / 10 = 0
27 TEST_ASSERT_EQUAL(0, divu10(9)); // 9 / 10 = 0
28 TEST_ASSERT_EQUAL(10, divu10(100)); // 100 / 10 = 10
29 TEST_ASSERT_EQUAL(11, divu10(110)); // 110 / 10 = 11
30
31 // Large values
32 TEST_ASSERT_EQUAL(100, divu10(1000)); // 1000 / 10 = 100
33 TEST_ASSERT_EQUAL(6553, divu10(65535)); // 65535 / 10 = 6553 (max 16-bit unsigned value)
34
35 // Random values
36 TEST_ASSERT_EQUAL(25, divu10(250)); // 250 / 10 = 25
37 TEST_ASSERT_EQUAL(123, divu10(1234)); // 1234 / 10 = 123
38 TEST_ASSERT_EQUAL(42, divu10(425)); // 425 / 10 = 42
39}
40
41// Test for divmod10
42void test_divmod10(void)
43{
44 uint32_t quotient;
45 uint8_t remainder;
46
47 // Basic cases
48 divmod10(10, quotient, remainder);
49 TEST_ASSERT_EQUAL(1, quotient); // 10 / 10 = 1
50 TEST_ASSERT_EQUAL(0, remainder); // 10 % 10 = 0
51
52 divmod10(20, quotient, remainder);
53 TEST_ASSERT_EQUAL(2, quotient); // 20 / 10 = 2
54 TEST_ASSERT_EQUAL(0, remainder); // 20 % 10 = 0
55
56 divmod10(0, quotient, remainder);
57 TEST_ASSERT_EQUAL(0, quotient); // 0 / 10 = 0
58 TEST_ASSERT_EQUAL(0, remainder); // 0 % 10 = 0
59
60 divmod10(99, quotient, remainder);
61 TEST_ASSERT_EQUAL(9, quotient); // 99 / 10 = 9
62 TEST_ASSERT_EQUAL(9, remainder); // 99 % 10 = 9
63
64 // Edge cases
65 divmod10(1, quotient, remainder);
66 TEST_ASSERT_EQUAL(0, quotient); // 1 / 10 = 0
67 TEST_ASSERT_EQUAL(1, remainder); // 1 % 10 = 1
68
69 divmod10(9, quotient, remainder);
70 TEST_ASSERT_EQUAL(0, quotient); // 9 / 10 = 0
71 TEST_ASSERT_EQUAL(9, remainder); // 9 % 10 = 9
72
73 divmod10(100, quotient, remainder);
74 TEST_ASSERT_EQUAL(10, quotient); // 100 / 10 = 10
75 TEST_ASSERT_EQUAL(0, remainder); // 100 % 10 = 0
76
77 divmod10(101, quotient, remainder);
78 TEST_ASSERT_EQUAL(10, quotient); // 101 / 10 = 10
79 TEST_ASSERT_EQUAL(1, remainder); // 101 % 10 = 1
80
81 // Large values
82 divmod10(65535, quotient, remainder);
83 TEST_ASSERT_EQUAL(6553, quotient); // 65535 / 10 = 6553
84 TEST_ASSERT_EQUAL(5, remainder); // 65535 % 10 = 5
85
86 // Random values
87 divmod10(250, quotient, remainder);
88 TEST_ASSERT_EQUAL(25, quotient); // 250 / 10 = 25
89 TEST_ASSERT_EQUAL(0, remainder); // 250 % 10 = 0
90
91 divmod10(1234, quotient, remainder);
92 TEST_ASSERT_EQUAL(123, quotient); // 1234 / 10 = 123
93 TEST_ASSERT_EQUAL(4, remainder); // 1234 % 10 = 4
94
95 divmod10(425, quotient, remainder);
96 TEST_ASSERT_EQUAL(42, quotient); // 425 / 10 = 42
97 TEST_ASSERT_EQUAL(5, remainder); // 425 % 10 = 5
98
99 uint32_t tmpVal;
100 uint8_t digit;
101
102 divmod10(2345, tmpVal, digit);
103 TEST_ASSERT_EQUAL(5, digit);
104
105 divmod10(tmpVal, tmpVal, digit);
106 TEST_ASSERT_EQUAL(4, digit);
107
108 divmod10(tmpVal, tmpVal, digit);
109 TEST_ASSERT_EQUAL(3, digit);
110 TEST_ASSERT_EQUAL(2, tmpVal);
111}
112
113void setup()
114{
115 delay(1000); // Wait for Serial to initialize
116 UNITY_BEGIN(); // Start Unity test framework
117}
118
119uint8_t i = 0;
120uint8_t max_blinks = 1;
121
122void loop()
123{
124 if (i < max_blinks)
125 {
126 RUN_TEST(test_divu10);
127 delay(100);
128 RUN_TEST(test_divmod10);
129 delay(100);
130 ++i;
131 }
132 else if (i == max_blinks)
133 {
134 UNITY_END(); // End Unity test framework
135 }
136}
void divmod10(uint32_t in, uint32_t &div, uint8_t &mod)
uint16_t divu10(uint16_t n)
void setup()
uint8_t max_blinks
void setUp(void)
Definition test_main.cpp:6
void tearDown(void)
Definition test_main.cpp:11
void test_divu10(void)
Definition test_main.cpp:17
void test_divmod10(void)
Definition test_main.cpp:42
uint8_t i
void loop()