| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | 
							- #include <SPI.h>
 
- #include <SdFat.h>
 
- #include <SdFatTestSuite.h>
 
- SdFat sd;
 
- const char *testName = "SDFAT.TST";
 
- //------------------------------------------------------------------------------
 
- void fstreamOpen() {
 
-   ios::openmode nocreate[] = {ios::in, ios::in | ios::out};
 
-   ios::openmode create[] =
 
-     {ios::out, ios::out | ios::app, ios::app, ios::out | ios::trunc,
 
-      ios::in | ios::out | ios::trunc, ios::in | ios::out | ios::app,
 
-      ios::in | ios::app};
 
-   ios::openmode illegal[] =
 
-     {0, ios::trunc, ios::app | ios::trunc, ios::in | ios::app | ios::trunc,
 
-      ios::in | ios::trunc, ios::out | ios::app | ios::trunc,
 
-      ios::in | ios::out | ios::app | ios::trunc};
 
-   sd.remove(testName);
 
-   fstream file(testName);
 
-   testVerifyMsg(!file.is_open()&& !sd.exists(testName), "fstream constructor");
 
-   for (uint8_t i = 0 ; i < sizeof(nocreate)/sizeof(nocreate[1]); i++) {
 
-     file.close();
 
-     sd.remove(testName);
 
-     file.open(testName, nocreate[i]);
 
-     testVerifyMsg(!sd.exists(testName) && !file.is_open(), "fstream nocreate !exists");
 
-   }
 
-   for (uint8_t i = 0 ; i < sizeof(create)/sizeof(create[1]); i++) {
 
-     file.close();
 
-     sd.remove(testName);
 
-     file.open(testName, create[i]);
 
-     testVerifyMsg(sd.exists(testName) && file.is_open(), "fstream create openmode");
 
-   }
 
-   for (uint8_t i = 0 ; i < sizeof(illegal)/sizeof(illegal[1]); i++) {
 
-     file.close();
 
-     file.open(testName, illegal[i]);
 
-     testVerifyMsg(sd.exists(testName) && !file.is_open(), "fstream illegal openmode");
 
-   }
 
-   for (uint8_t i = 0 ; i < sizeof(nocreate)/sizeof(nocreate[1]); i++) {
 
-     file.close();
 
-     file.open(testName, nocreate[i]);
 
-     testVerifyMsg(sd.exists(testName) && file.is_open(), "fstream nocreate exists");
 
-   }
 
- }
 
- //------------------------------------------------------------------------------
 
- void testPosition() {
 
-   sd.remove(testName);
 
-   ofstream ofs(testName);
 
-   testVerifyBool(ofs.good() && ofs.tellp() == 0);
 
-   ofs.seekp(0, ios::end);
 
-   testVerifyBool(ofs.good() && ofs.tellp() == 0);
 
-   ofs << "abcde";
 
-   testVerifyBool(ofs.good() && ofs.tellp() == 5);
 
-   ofs.seekp(4);
 
-   testVerifyBool(ofs.good() && ofs.tellp() == 4);
 
-   ofs.seekp(-1, ios::cur);
 
-   testVerifyBool(ofs.good() && ofs.tellp() == 3);
 
-   ofs.close();
 
-   ifstream ifs(testName, ios::ate);
 
-   testVerifyBool(ifs.good() && ifs.tellg() == 5);
 
-   ifs.seekg(0);
 
-   testVerifyBool(ifs.get() == 'a' && ifs.get() == 'b');
 
-   testVerifyBool(ifs.tellg() == 2 && ifs.good());
 
-   ifs.seekg(3, ios::cur);
 
-   testVerifyBool(ifs.tellg() == 5 && ifs.good());
 
-   ifs.seekg(4, ios::beg);
 
-   testVerifyBool(ifs.good() && ifs.tellg() == 4);
 
-   ifs.close();
 
-   ofs.open(testName, ios::app);
 
-   testVerifyBool(ofs.good() && ofs.tellp() == 0);
 
-   ofs << 'f';
 
-   testVerifyBool(ofs.good() && ofs.tellp() == 6);
 
-   ofs.close();
 
-   ofs.open(testName, ios::trunc);
 
-   ofs.seekp(0, ios::end);
 
-   testVerifyBool(ofs.good() && ofs.tellp() == 0);
 
-   ofs << "ABCDEF";
 
-   ofs.close();
 
-   fstream fs(testName);
 
-   testVerifyBool(fs.good() && fs.tellp() == 0 && fs.tellg() == 0);
 
-   fs.seekg(2);
 
-   testVerifyBool(fs.good() && fs.get() == 'C');
 
- }
 
- //------------------------------------------------------------------------------
 
- void setup() {
 
-   testBegin();
 
-   if (!sd.begin()) sd.initErrorHalt();
 
-   fstreamOpen();
 
-   testPosition();
 
-   testEnd();
 
- }
 
- //------------------------------------------------------------------------------
 
- void loop() {}
 
 
  |