3-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 divu5
17void test_divu5(void)
18{
19 // Basic cases
20 TEST_ASSERT_EQUAL(1, divu5(5)); // 5 / 5 = 1
21 TEST_ASSERT_EQUAL(2, divu5(10)); // 10 / 5 = 2
22 TEST_ASSERT_EQUAL(0, divu5(0)); // 0 / 5 = 0
23 TEST_ASSERT_EQUAL(19, divu5(95)); // 95 / 5 = 19
24 TEST_ASSERT_EQUAL(50, divu5(250)); // 250 / 5 = 50
25 TEST_ASSERT_EQUAL(1, divu5(5)); // 5 / 5 = 1
26
27 // Edge cases
28 TEST_ASSERT_EQUAL(0, divu5(1)); // 1 / 5 = 0
29 TEST_ASSERT_EQUAL(0, divu5(4)); // 4 / 5 = 0
30 TEST_ASSERT_EQUAL(1, divu5(6)); // 6 / 5 = 1
31 TEST_ASSERT_EQUAL(1, divu5(9)); // 9 / 5 = 1
32 TEST_ASSERT_EQUAL(2, divu5(11)); // 11 / 5 = 2
33
34 // Large values
35 TEST_ASSERT_EQUAL(200, divu5(1000)); // 1000 / 5 = 200
36 TEST_ASSERT_EQUAL(13107, divu5(65535)); // 65535 / 5 = 13107 (max 16-bit unsigned value)
37
38 // Random values
39 TEST_ASSERT_EQUAL(50, divu5(250)); // 250 / 5 = 50
40 TEST_ASSERT_EQUAL(246, divu5(1234)); // 1234 / 5 = 246
41 TEST_ASSERT_EQUAL(85, divu5(425)); // 425 / 5 = 85
42}
43
44// Test for divu10
45void test_divu10(void)
46{
47 // Basic cases
48 TEST_ASSERT_EQUAL(1, divu10(10)); // 10 / 10 = 1
49 TEST_ASSERT_EQUAL(2, divu10(20)); // 20 / 10 = 2
50 TEST_ASSERT_EQUAL(0, divu10(0)); // 0 / 10 = 0
51 TEST_ASSERT_EQUAL(9, divu10(99)); // 99 / 10 = 9
52
53 // Edge cases
54 TEST_ASSERT_EQUAL(0, divu10(1)); // 1 / 10 = 0
55 TEST_ASSERT_EQUAL(0, divu10(9)); // 9 / 10 = 0
56 TEST_ASSERT_EQUAL(10, divu10(100)); // 100 / 10 = 10
57 TEST_ASSERT_EQUAL(11, divu10(110)); // 110 / 10 = 11
58
59 // Large values
60 TEST_ASSERT_EQUAL(100, divu10(1000)); // 1000 / 10 = 100
61 TEST_ASSERT_EQUAL(6553, divu10(65535)); // 65535 / 10 = 6553 (max 16-bit unsigned value)
62
63 // Random values
64 TEST_ASSERT_EQUAL(25, divu10(250)); // 250 / 10 = 25
65 TEST_ASSERT_EQUAL(123, divu10(1234)); // 1234 / 10 = 123
66 TEST_ASSERT_EQUAL(42, divu10(425)); // 425 / 10 = 42
67}
68
69// Test for divu15
70void test_divu15(void)
71{
72 // Basic cases
73 TEST_ASSERT_EQUAL(1, divu15(15)); // 15 / 15 = 1
74 TEST_ASSERT_EQUAL(2, divu15(30)); // 30 / 15 = 2
75 TEST_ASSERT_EQUAL(0, divu15(0)); // 0 / 15 = 0
76 TEST_ASSERT_EQUAL(6, divu15(90)); // 90 / 15 = 6
77 TEST_ASSERT_EQUAL(10, divu15(150)); // 150 / 15 = 10
78
79 // Edge cases
80 TEST_ASSERT_EQUAL(0, divu15(1)); // 1 / 15 = 0
81 TEST_ASSERT_EQUAL(0, divu15(14)); // 14 / 15 = 0
82 TEST_ASSERT_EQUAL(1, divu15(16)); // 16 / 15 = 1
83 TEST_ASSERT_EQUAL(1, divu15(29)); // 29 / 15 = 1
84 TEST_ASSERT_EQUAL(2, divu15(31)); // 31 / 15 = 2
85
86 // Large values
87 TEST_ASSERT_EQUAL(66, divu15(1000)); // 1000 / 15 = 66
88 TEST_ASSERT_EQUAL(4369, divu15(65535)); // 65535 / 15 = 4369 (max 16-bit unsigned value)
89
90 // Random values
91 TEST_ASSERT_EQUAL(16, divu15(240)); // 240 / 15 = 16
92 TEST_ASSERT_EQUAL(82, divu15(1234)); // 1234 / 15 = 82
93 TEST_ASSERT_EQUAL(28, divu15(425)); // 425 / 15 = 28
94}
95
96// Test for divu60
97void test_divu60(void)
98{
99 // Basic cases
100 TEST_ASSERT_EQUAL(1, divu60(60)); // 60 / 60 = 1
101 TEST_ASSERT_EQUAL(2, divu60(120)); // 120 / 60 = 2
102 TEST_ASSERT_EQUAL(0, divu60(0)); // 0 / 60 = 0
103 TEST_ASSERT_EQUAL(5, divu60(300)); // 300 / 60 = 5
104 TEST_ASSERT_EQUAL(10, divu60(600)); // 600 / 60 = 10
105
106 // Edge cases
107 TEST_ASSERT_EQUAL(0, divu60(1)); // 1 / 60 = 0
108 TEST_ASSERT_EQUAL(0, divu60(59)); // 59 / 60 = 0
109 TEST_ASSERT_EQUAL(1, divu60(61)); // 61 / 60 = 1
110 TEST_ASSERT_EQUAL(1, divu60(119)); // 119 / 60 = 1
111 TEST_ASSERT_EQUAL(2, divu60(121)); // 121 / 60 = 2
112
113 // Large values
114 TEST_ASSERT_EQUAL(16, divu60(1000)); // 1000 / 60 = 16
115 TEST_ASSERT_EQUAL(1092, divu60(65535)); // 65535 / 60 = 1092 (max 16-bit unsigned value)
116
117 // Random values
118 TEST_ASSERT_EQUAL(4, divu60(240)); // 240 / 60 = 4
119 TEST_ASSERT_EQUAL(20, divu60(1234)); // 1234 / 60 = 20
120 TEST_ASSERT_EQUAL(7, divu60(425)); // 425 / 60 = 7
121}
122
123void setup()
124{
125 delay(1000); // Wait for Serial to initialize
126 UNITY_BEGIN(); // Start Unity test framework
127}
128
129uint8_t i = 0;
130uint8_t max_blinks = 1;
131
132void loop()
133{
134 if (i < max_blinks)
135 {
136 RUN_TEST(test_divu5);
137 delay(100);
138 RUN_TEST(test_divu10);
139 delay(100);
140 RUN_TEST(test_divu15);
141 delay(100);
142 RUN_TEST(test_divu60);
143 delay(100);
144 ++i;
145 }
146 else if (i == max_blinks)
147 {
148 UNITY_END(); // End Unity test framework
149 }
150}
uint16_t divu10(uint16_t n)
void test_divu60(void)
Definition test_main.cpp:97
void setup()
void test_divu5(void)
Definition test_main.cpp:17
uint8_t max_blinks
void test_divu15(void)
Definition test_main.cpp:70
void setUp(void)
Definition test_main.cpp:6
void tearDown(void)
Definition test_main.cpp:11
void test_divu10(void)
Definition test_main.cpp:45
uint8_t i
void loop()