daily_automated
This commit is contained in:
@@ -0,0 +1,261 @@
|
||||
#include <SPI.h>
|
||||
#include <SdFat.h>
|
||||
#include <SdFatTestSuite.h>
|
||||
|
||||
char buf[100];
|
||||
ibufstream ib;
|
||||
#define ibInit(s) ibInit_P(PSTR(s))
|
||||
|
||||
//----------------------------------------------------------
|
||||
void ibInit_P(PGM_P p) {
|
||||
if (strlen_P(p) >= sizeof(buf)) {
|
||||
ib.init("");
|
||||
ib.setstate(ios::badbit);
|
||||
} else {
|
||||
ib.clear();
|
||||
strncpy_P(buf, p, sizeof(buf));
|
||||
ib.init(buf);
|
||||
}
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void istreamBool() {
|
||||
bool b;
|
||||
ibInit(" 0 1 2");
|
||||
testVerifyBool((ib >> b) && !b);
|
||||
testVerifyBool((ib >> b) && b);
|
||||
testVerifyBool(!(ib >> b) && !ib.good());
|
||||
|
||||
ibInit(" true false err");
|
||||
testVerifyBool((ib >> boolalpha >> b) && b && ib.good());
|
||||
testVerifyBool((ib >> b) && !b && ib.good());
|
||||
testVerifyBool(!(ib >> b) && ib.fail());
|
||||
|
||||
ibInit("1");
|
||||
testVerifyBool((ib >> noboolalpha >> b) && b && ib.eof());
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void istreamChar() {
|
||||
char c;
|
||||
signed char sc;
|
||||
unsigned char uc;
|
||||
|
||||
ibInit("c s u g");
|
||||
testVerifyBool((ib >> c) && ib.good() && c == 'c');
|
||||
testVerifyBool((ib >> sc) && ib.good() && sc == 's');
|
||||
testVerifyBool((ib >> uc) && ib.good() && uc == 'u');
|
||||
testVerifyBool(ib.get() == ' ');
|
||||
testVerifyBool(ib.peek() == 'g' && ib.good());
|
||||
testVerifyBool(ib.get() == 'g' && ib.good());
|
||||
testVerifyBool(ib.get() == -1 && ib.eof());
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void istreamDouble() {
|
||||
double f;
|
||||
ibInit("0 .1 1. 2 3.4 .1e5 1e5 -1E6 +2.3e-3 -123.4567");
|
||||
testVerifyBool((ib >> f) && f == 0 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 0.1 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 1.0 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 2.0 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 3.4 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 10000.0 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 1e5 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == -1E6 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 2.3e-3 && ib.good());
|
||||
testVerifyBool((ib >> f) && fabs(f + 123.4567) < 1e-5 && ib.eof());
|
||||
if (fabs(f + 123.4567) >= 1e-5) Serial.println(f, 8);
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void istreamFloat() {
|
||||
float f;
|
||||
ibInit("0 .1 1. 2 3.4 .1e5 1e5 -1E6 +2.3e-3 -123.4567");
|
||||
testVerifyBool((ib >> f) && f == 0 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 0.1f && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 1.0 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 2.0 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 3.4f && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 10000.0 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 1e5 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == -1E6 && ib.good());
|
||||
testVerifyBool((ib >> f) && f == 2.3e-3f && ib.good());
|
||||
testVerifyBool((ib >> f) && fabs(f + 123.4567f) < 1e-5 && ib.eof());
|
||||
if (fabs(f + 123.4567) >= 1e-5) Serial.println(f, 8);
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void istreamGet() {
|
||||
char s[4];
|
||||
ibInit("ab c");
|
||||
testVerifyBool(ib.get() == 'a' && ib.good() && ib.gcount() == 1);
|
||||
testVerifyBool(ib.get() == 'b' && ib.good() && ib.gcount() == 1);
|
||||
testVerifyBool(ib.get() == ' ' && ib.good() && ib.gcount() == 1);
|
||||
testVerifyBool(ib.get() == 'c' && ib.good() && ib.gcount() == 1);
|
||||
testVerifyBool(ib.get() == -1 && ib.eof() && ib.gcount() == 0);
|
||||
|
||||
ibInit("ab\ncdef");
|
||||
ib.get(s, sizeof(s));
|
||||
testVerifyBool(ib.good() && ib.gcount() == 2);
|
||||
testVerifyStr(s, "ab");
|
||||
testVerifyBool(ib.get() == '\n' && ib.good() && ib.gcount() == 1);
|
||||
ib.get(s, sizeof(s));
|
||||
testVerifyBool(ib.good() && ib.gcount() == 3);
|
||||
testVerifyStr(s, "cde");
|
||||
ib.get(s, sizeof(s));
|
||||
testVerifyBool(ib.eof() && ib.gcount() == 1);
|
||||
testVerifyStr(s, "f");
|
||||
|
||||
ibInit(
|
||||
"short line\n"
|
||||
"\n"
|
||||
"17 character line\n"
|
||||
"too long for buffer\n"
|
||||
"line with no nl"
|
||||
);
|
||||
char buf[18];
|
||||
ib.getline(buf, sizeof(buf));
|
||||
testVerifyBool(ib.good() && ib.gcount() == 11);
|
||||
testVerifyStr(buf, "short line");
|
||||
ib.getline(buf, sizeof(buf));
|
||||
testVerifyBool(ib.good() && ib.gcount() == 1 && buf[0] == '\0');
|
||||
ib.getline(buf, sizeof(buf));
|
||||
testVerifyBool(ib.good() && ib.gcount() == 18);
|
||||
testVerifyStr(buf, "17 character line");
|
||||
ib.getline(buf, sizeof(buf));
|
||||
testVerifyBool(ib.fail() && !ib.eof() && ib.gcount() == 17);
|
||||
testVerifyStr(buf, "too long for buff");
|
||||
ib.clear();
|
||||
ib.getline(buf, sizeof(buf));
|
||||
testVerifyBool(ib.good() && !ib.eof() && ib.gcount() == 3);
|
||||
testVerifyStr(buf, "er");
|
||||
ib.getline(buf, sizeof(buf));
|
||||
testVerifyBool(!ib.fail() && ib.eof() && ib.gcount() == 15);
|
||||
testVerifyStr(buf, "line with no nl");
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void istreamNumber() {
|
||||
short s;
|
||||
signed short ss;
|
||||
unsigned short us;
|
||||
int i;
|
||||
signed int si;
|
||||
unsigned int ui;
|
||||
long l;
|
||||
signed long sl;
|
||||
unsigned long ul;
|
||||
|
||||
ibInit("-32769");
|
||||
testVerifyBool(!(ib >> s) && ib.fail());
|
||||
ibInit("-32768 0 32767 32768");
|
||||
testVerifyBool((ib >> s) && s == -32768 && ib.good());
|
||||
testVerifyBool((ib >> s) && s == 0 && ib.good());
|
||||
testVerifyBool((ib >> s) && s == 32767 && ib.good());
|
||||
testVerifyBool(!(ib >> s) && ib.fail());
|
||||
|
||||
ibInit("-32769");
|
||||
testVerifyBool(!(ib >> ss) && ib.fail());
|
||||
ibInit("-32768 0 32767 32768");
|
||||
testVerifyBool((ib >> ss) && ss == -32768 && ib.good());
|
||||
testVerifyBool((ib >> ss) && ss == 0 && ib.good());
|
||||
testVerifyBool((ib >> ss) && ss == 32767 && ib.good());
|
||||
testVerifyBool(!(ib >> ss) && ib.fail());
|
||||
|
||||
ibInit("0 65535 65536");
|
||||
testVerifyBool((ib >> us) && us == 0 && ib.good());
|
||||
testVerifyBool((ib >> us) && us == 65535 && ib.good());
|
||||
testVerifyBool(!(ib >> us) && ib.fail());
|
||||
|
||||
if (sizeof(int) == 2) {
|
||||
ibInit("-32769");
|
||||
testVerifyBool(!(ib >> i) && ib.fail());
|
||||
ibInit("-32768 0 32767 32768");
|
||||
testVerifyBool((ib >> i) && i == -32768 && ib.good());
|
||||
testVerifyBool((ib >> i) && i == 0 && ib.good());
|
||||
testVerifyBool((ib >> i) && i == 32767 && ib.good());
|
||||
testVerifyBool(!(ib >> i) && ib.fail());
|
||||
|
||||
ibInit("-32769");
|
||||
testVerifyBool(!(ib >> si) && ib.fail());
|
||||
ibInit("-32768 0 32767 32768");
|
||||
testVerifyBool((ib >> si) && si == -32768 && ib.good());
|
||||
testVerifyBool((ib >> si) && si == 0 && ib.good());
|
||||
testVerifyBool((ib >> si) && si == 32767 && ib.good());
|
||||
testVerifyBool(!(ib >> si) && ib.fail());
|
||||
|
||||
ibInit("0 65535 65536");
|
||||
testVerifyBool((ib >> ui) && ui == 0 && ib.good());
|
||||
testVerifyBool((ib >> ui) && ui == 65535 && ib.good());
|
||||
testVerifyBool(!(ib >> ui) && ib.fail());
|
||||
} else {
|
||||
ibInit("-2147483649");
|
||||
testVerifyBool(!(ib >> i) && ib.fail());
|
||||
ibInit("-2147483648 0 2147483647 2147483648");
|
||||
testVerifyBool((ib >> i) && i == -2147483648 && ib.good());
|
||||
testVerifyBool((ib >> i) && i == 0 && ib.good());
|
||||
testVerifyBool((ib >> i) && i == 2147483647 && ib.good());
|
||||
testVerifyBool(!(ib >> i) && ib.fail());
|
||||
|
||||
ibInit("-2147483649");
|
||||
testVerifyBool(!(ib >> si) && ib.fail());
|
||||
ibInit("-2147483648 0 2147483647 2147483648");
|
||||
testVerifyBool((ib >> si) && si == -2147483648 && ib.good());
|
||||
testVerifyBool((ib >> si) && si == 0 && ib.good());
|
||||
testVerifyBool((ib >> si) && si == 2147483647 && ib.good());
|
||||
testVerifyBool(!(ib >> si) && ib.fail());
|
||||
|
||||
ibInit("0 4294967295 4294967296");
|
||||
testVerifyBool((ib >> ui) && ui == 0 && ib.good());
|
||||
testVerifyBool((ib >> ui) && ui == 4294967295 && ib.good());
|
||||
testVerifyBool(!(ib >> ui) && ib.fail());
|
||||
}
|
||||
ibInit("-2147483649");
|
||||
testVerifyBool(!(ib >> l) && ib.fail());
|
||||
ibInit("-2147483648 0 2147483647 2147483648");
|
||||
testVerifyBool((ib >> l) && l == -2147483648 && ib.good());
|
||||
testVerifyBool((ib >> l) && l == 0 && ib.good());
|
||||
testVerifyBool((ib >> l) && l == 2147483647 && ib.good());
|
||||
testVerifyBool(!(ib >> l) && ib.fail());
|
||||
|
||||
ibInit("-2147483649");
|
||||
testVerifyBool(!(ib >> sl) && ib.fail());
|
||||
ibInit("-2147483648 0 2147483647 2147483648");
|
||||
testVerifyBool((ib >> sl) && sl == -2147483648 && ib.good());
|
||||
testVerifyBool((ib >> sl) && sl == 0 && ib.good());
|
||||
testVerifyBool((ib >> sl) && sl == 2147483647 && ib.good());
|
||||
testVerifyBool(!(ib >> sl) && ib.fail());
|
||||
|
||||
ibInit("0 4294967295 4294967296");
|
||||
testVerifyBool((ib >> ul) && ul == 0 && ib.good());
|
||||
testVerifyBool((ib >> ul) && ul == 4294967295 && ib.good());
|
||||
testVerifyBool(!(ib >> ul) && ib.fail());
|
||||
|
||||
// octal hex
|
||||
ibInit("123 abc 0xdef 0XABC 567");
|
||||
testVerifyBool((ib >> oct >> i) && i == 83);
|
||||
testVerifyBool((ib >> hex >> i) && i == 0xabc);
|
||||
testVerifyBool((ib >> i) && i == 0xdef);
|
||||
testVerifyBool((ib >> i) && i == 0xabc);
|
||||
testVerifyBool((ib >> dec >> i) && i ==567);
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void istreamStr() {
|
||||
char str[20];
|
||||
ibInit("abc def\r\n hij");
|
||||
testVerifyBool((ib >> str) && ib.good());
|
||||
testVerifyStr(str, "abc");
|
||||
testVerifyBool((ib >> str) && ib.good());
|
||||
testVerifyStr(str, "def");
|
||||
testVerifyBool((ib >> str) && ib.eof());
|
||||
testVerifyStr(str, "hij");
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void setup() {
|
||||
testBegin();
|
||||
istreamBool();
|
||||
istreamChar();
|
||||
istreamDouble();
|
||||
istreamFloat();
|
||||
istreamGet();
|
||||
istreamNumber();
|
||||
istreamStr();
|
||||
testEnd();
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void loop() {}
|
||||
Reference in New Issue
Block a user