7 #include "libpropeller/serial/serial.h"
8 #include "libpropeller/streaminterface/streaminterface.h"
9 #include "libpropeller/printstream/printstream.h"
11 #include "c++-alloc.h"
17 const int baud = 460800;
19 const int ctspin = 20;
20 const int rtspin = 21;
22 const int MAXTIME = 10;
31 static void setUp(
void){
33 input.Start(19,-1,baud);
34 output.
Start(31,18,baud);
43 static void tearDown(
void){
50 static void test_PutBufferFormatted(
void) {
51 TEST_ASSERT_EQUAL_INT(3, sut->Format(
"abc"));
55 TEST_ASSERT_EQUAL_INT(
'a',
input.Get(MAXTIME));
56 TEST_ASSERT_EQUAL_INT(
'b',
input.Get(MAXTIME));
57 TEST_ASSERT_EQUAL_INT(
'c',
input.Get(MAXTIME));
58 TEST_ASSERT_EQUAL_INT(-1,
input.Get(MAXTIME));
63 static void test_PutPrintfReturnsWrittenBytes(
void) {
65 char inputBuffer[size];
67 TEST_ASSERT_EQUAL_INT(17, sut->Format(
"My:%i, Your:%i", 123, -531));
68 TEST_ASSERT_EQUAL_INT(17,
input.Get(inputBuffer, 17, MAXTIME));
72 static void test_PutPrintfBasic(
void) {
75 char inputBuffer[size];
76 for (
int i = 0; i < size; i++) {
80 sut->Format(
"My number: %i.", 123);
81 input.Get(inputBuffer, 15, MAXTIME);
82 TEST_ASSERT_EQUAL_STRING(
"My number: 123.", inputBuffer);
87 static void test_PutPrintfMultipleIntegers(
void) {
89 char inputBuffer[size];
90 for (
int i = 0; i < size; i++) {
94 sut->Format(
"My:%i, Your:%i", 123, -531);
95 input.Get(inputBuffer, 17, MAXTIME);
96 TEST_ASSERT_EQUAL_STRING(
"My:123, Your:-531", inputBuffer);
99 static void test_PutPrintfNoSpecifiers(
void) {
100 char string[] =
"Hello, World.";
102 char inputBuffer[size];
103 for (
int i = 0; i < size; i++) {
108 input.Get(inputBuffer, 13, MAXTIME);
109 TEST_ASSERT_EQUAL_STRING(
string, inputBuffer);
112 static void test_PutPrintfHexSpecifiers(
void) {
114 char inputBuffer[size];
115 for (
int i = 0; i < size; i++) {
118 sut->Format(
"My:%x, Your:%X", 0xAB, 0xCDE);
119 input.Get(inputBuffer, 15, MAXTIME);
120 TEST_ASSERT_EQUAL_STRING(
"My:AB, Your:CDE", inputBuffer);
123 static void test_PutPrintfDecpad(
void) {
125 char inputBuffer[size];
126 for (
int i = 0; i < size; i++) {
129 sut->Format(
"My:%10d", 1234);
130 input.Get(inputBuffer, 13, MAXTIME);
131 TEST_ASSERT_EQUAL_STRING(
"My: 1234", inputBuffer);
134 static void test_PutPrintfDecpadSmaller(
void) {
136 char inputBuffer[size];
137 for (
int i = 0; i < size; i++) {
140 sut->Format(
"My:%2d", 1234);
141 input.Get(inputBuffer, 13, MAXTIME);
142 TEST_ASSERT_EQUAL_STRING(
"My:1234", inputBuffer);
145 static void test_PutPrintfDecpadZero(
void){
147 char inputBuffer[size];
148 for(
int i = 0; i < size; i++){
151 sut->Format(
"My:%010d", 1234);
152 input.Get(inputBuffer, 13, MAXTIME);
153 TEST_ASSERT_EQUAL_STRING(
"My:0000001234", inputBuffer);
156 static void test_PutPrintfDecpadZeroNegative(
void){
158 char inputBuffer[size];
159 for(
int i = 0; i < size; i++){
162 sut->Format(
"My:%010d", -1234);
163 input.Get(inputBuffer, 13, MAXTIME);
164 TEST_ASSERT_EQUAL_STRING(
"My:-000001234", inputBuffer);
167 static void test_PutPrinfHexpad(
void) {
169 char inputBuffer[size];
170 for (
int i = 0; i < size; i++) {
173 sut->Format(
"My:%10x", 0x1234);
174 input.Get(inputBuffer, 13, MAXTIME);
175 TEST_ASSERT_EQUAL_STRING(
"My: 1234", inputBuffer);
178 static void test_PutPrinfHexpadTooSmall(
void) {
180 char inputBuffer[size];
181 for (
int i = 0; i < size; i++) {
184 sut->Format(
"My:%2x", 0x1234);
185 input.Get(inputBuffer, 13, MAXTIME);
186 TEST_ASSERT_EQUAL_STRING(
"My:1234", inputBuffer);
189 static void test_PutPrinfHexpadZero(
void) {
191 char inputBuffer[size];
192 for (
int i = 0; i < size; i++) {
195 sut->Format(
"My:%010x", 0x1234);
196 input.Get(inputBuffer, 13, MAXTIME);
197 TEST_ASSERT_EQUAL_STRING(
"My:0000001234", inputBuffer);
200 static void test_PutPrintfChar(
void) {
202 char inputBuffer[size];
203 for (
int i = 0; i < size; i++) {
206 sut->Format(
"My:%c",
'a');
207 input.Get(inputBuffer, 4, MAXTIME);
208 TEST_ASSERT_EQUAL_STRING(
"My:a", inputBuffer);
211 static void test_PutPrintfString(
void) {
213 char inputBuffer[size];
214 for (
int i = 0; i < size; i++) {
217 sut->Format(
"My:%s",
"World");
218 input.Get(inputBuffer, 8, MAXTIME);
219 TEST_ASSERT_EQUAL_STRING(
"My:World", inputBuffer);
222 static void test_PutPrinfAllTogether(
void) {
224 char inputBuffer[size];
225 for (
int i = 0; i < size; i++) {
228 sut->Format(
"%x%i%s%c%03x%4i", 0x23, 32,
"hello",
'w', 0xF, 13);
229 input.Get(inputBuffer, 17, MAXTIME);
230 TEST_ASSERT_EQUAL_STRING(
"2332hellow00F 13", inputBuffer);
233 static void test_PutPrintfPercentSignAtEndOfStringDisappears(
void) {
234 const int size = strlen(
"Hello");
235 char inputBuffer[size];
236 sut->Format(
"Hello'%");
238 input.Get(inputBuffer, size, MAXTIME);
239 TEST_ASSERT_EQUAL_MEMORY(
"Hello''", inputBuffer, size);
243 static void test_PutPrintfTwoPercentSigns(
void) {
244 const int size = strlen(
"Hello% ");
245 char inputBuffer[size];
246 sut->Format(
"Hello%% ");
247 input.Get(inputBuffer, size, MAXTIME);
248 TEST_ASSERT_EQUAL_MEMORY(
"Hello% ", inputBuffer, size);