diff options
Diffstat (limited to 'test1.cpp')
-rw-r--r-- | test1.cpp | 330 |
1 files changed, 165 insertions, 165 deletions
@@ -1,165 +1,165 @@ -// File: test1.cpp
-// Library: SimpleIni
-// Author: Brodie Thiesfield <code@jellycan.com>
-// Source: http://code.jellycan.com/simpleini/
-//
-// Automated testing for SimpleIni streams
-
-#ifdef _WIN32
-# pragma warning(disable: 4786)
-#endif
-
-#ifdef _WIN32
-# define DELETE_FILE DeleteFileA
-#else
-# include <unistd.h>
-# define DELETE_FILE unlink
-#endif
-#include <fstream>
-
-#define SI_SUPPORT_IOSTREAMS
-#include "SimpleIni.h"
-
-class Test
-{
- std::string m_strTest;
-
-public:
- Test(const char * a_pszName)
- : m_strTest(a_pszName)
- {
- printf("%s: test starting\n", m_strTest.c_str());
- }
-
- bool Success()
- {
- printf("%s: test succeeded\n", m_strTest.c_str());
- return false;
- }
-
- bool Failure(const char * pszReason)
- {
- printf("%s: test FAILED (%s)\n", m_strTest.c_str(), pszReason);
- return false;
- }
-};
-
-bool FileComparisonTest(const char * a_pszFile1, const char * a_pszFile2) {
- // ensure that the two files are the same
- try {
- std::string strFile1, strFile2;
-
- char szBuf[1024];
- FILE * fp = NULL;
-
-#if __STDC_WANT_SECURE_LIB__
- fopen_s(&fp, a_pszFile1, "rb");
-#else
- fp = fopen(a_pszFile1, "rb");
-#endif
- if (!fp) throw false;
- while (!feof(fp)) {
- size_t n = fread(szBuf, 1, sizeof(szBuf), fp);
- strFile1.append(szBuf, n);
- }
- fclose(fp);
-
- fp = NULL;
-#if __STDC_WANT_SECURE_LIB__
- fopen_s(&fp, a_pszFile2, "rb");
-#else
- fp = fopen(a_pszFile2, "rb");
-#endif
- if (!fp) throw false;
- while (!feof(fp)) {
- size_t n = fread(szBuf, 1, sizeof(szBuf), fp);
- strFile2.append(szBuf, n);
- }
- fclose(fp);
-
- if (strFile1 != strFile2) throw false;
- }
- catch (...) {
- return false;
- }
-
- return true;
-}
-
-bool FileLoadTest(const char * a_pszFile1, const char * a_pszFile2) {
- // ensure that the two files load into simpleini the same
- CSimpleIniA ini(true, true, true);
- bool b;
- try {
- ini.Reset();
- if (ini.LoadFile(a_pszFile1) < 0) throw "Load failed for file 1";
- if (ini.SaveFile("test1.ini") < 0) throw "Save failed for file 1";
-
- ini.Reset();
- if (ini.LoadFile(a_pszFile2) < 0) throw "Load failed for file 2";
- if (ini.SaveFile("test2.ini") < 0) throw "Save failed for file 2";
-
- b = FileComparisonTest("test1.ini", "test2.ini");
- DELETE_FILE("test1.ini");
- DELETE_FILE("test2.ini");
- if (!b) throw "File comparison failed in FileLoadTest";
- }
- catch (...) {
- return false;
- }
-
- return true;
-}
-
-bool TestStreams()
-{
- const char * rgszTestFile[3] = {
- "test1-input.ini",
- "test1-output.ini",
- "test1-expected.ini"
- };
-
- Test oTest("TestStreams");
-
- CSimpleIniA ini;
- ini.SetUnicode(true);
- ini.SetMultiKey(true);
- ini.SetMultiLine(true);
-
- // load the file
- try {
- std::ifstream infile;
- infile.open(rgszTestFile[0], std::ifstream::in | std::ifstream::binary);
- if (ini.Load(infile) < 0) throw false;
- infile.close();
- }
- catch (...) {
- return oTest.Failure("Failed to load file");
- }
-
- // standard contents test
- //if (!StandardContentsTest(ini, oTest)) {
- // return false;
- //}
-
- // save the file
- try {
- std::ofstream outfile;
- outfile.open(rgszTestFile[1], std::ofstream::out | std::ofstream::binary);
- if (ini.Save(outfile, true) < 0) throw false;
- outfile.close();
- }
- catch (...) {
- return oTest.Failure("Failed to save file");
- }
-
- // file comparison test
- if (!FileComparisonTest(rgszTestFile[1], rgszTestFile[2])) {
- return oTest.Failure("Failed file comparison");
- }
- if (!FileLoadTest(rgszTestFile[1], rgszTestFile[2])) {
- return oTest.Failure("Failed file load comparison");
- }
-
- return oTest.Success();
-}
+// File: test1.cpp +// Library: SimpleIni +// Author: Brodie Thiesfield <code@jellycan.com> +// Source: http://code.jellycan.com/simpleini/ +// +// Automated testing for SimpleIni streams + +#ifdef _WIN32 +# pragma warning(disable: 4786) +#endif + +#ifdef _WIN32 +# define DELETE_FILE DeleteFileA +#else +# include <unistd.h> +# define DELETE_FILE unlink +#endif +#include <fstream> + +#define SI_SUPPORT_IOSTREAMS +#include "SimpleIni.h" + +class Test +{ + std::string m_strTest; + +public: + Test(const char * a_pszName) + : m_strTest(a_pszName) + { + printf("%s: test starting\n", m_strTest.c_str()); + } + + bool Success() + { + printf("%s: test succeeded\n", m_strTest.c_str()); + return false; + } + + bool Failure(const char * pszReason) + { + printf("%s: test FAILED (%s)\n", m_strTest.c_str(), pszReason); + return false; + } +}; + +bool FileComparisonTest(const char * a_pszFile1, const char * a_pszFile2) { + // ensure that the two files are the same + try { + std::string strFile1, strFile2; + + char szBuf[1024]; + FILE * fp = NULL; + +#if __STDC_WANT_SECURE_LIB__ + fopen_s(&fp, a_pszFile1, "rb"); +#else + fp = fopen(a_pszFile1, "rb"); +#endif + if (!fp) throw false; + while (!feof(fp)) { + size_t n = fread(szBuf, 1, sizeof(szBuf), fp); + strFile1.append(szBuf, n); + } + fclose(fp); + + fp = NULL; +#if __STDC_WANT_SECURE_LIB__ + fopen_s(&fp, a_pszFile2, "rb"); +#else + fp = fopen(a_pszFile2, "rb"); +#endif + if (!fp) throw false; + while (!feof(fp)) { + size_t n = fread(szBuf, 1, sizeof(szBuf), fp); + strFile2.append(szBuf, n); + } + fclose(fp); + + if (strFile1 != strFile2) throw false; + } + catch (...) { + return false; + } + + return true; +} + +bool FileLoadTest(const char * a_pszFile1, const char * a_pszFile2) { + // ensure that the two files load into simpleini the same + CSimpleIniA ini(true, true, true); + bool b; + try { + ini.Reset(); + if (ini.LoadFile(a_pszFile1) < 0) throw "Load failed for file 1"; + if (ini.SaveFile("test1.ini") < 0) throw "Save failed for file 1"; + + ini.Reset(); + if (ini.LoadFile(a_pszFile2) < 0) throw "Load failed for file 2"; + if (ini.SaveFile("test2.ini") < 0) throw "Save failed for file 2"; + + b = FileComparisonTest("test1.ini", "test2.ini"); + DELETE_FILE("test1.ini"); + DELETE_FILE("test2.ini"); + if (!b) throw "File comparison failed in FileLoadTest"; + } + catch (...) { + return false; + } + + return true; +} + +bool TestStreams() +{ + const char * rgszTestFile[3] = { + "test1-input.ini", + "test1-output.ini", + "test1-expected.ini" + }; + + Test oTest("TestStreams"); + + CSimpleIniA ini; + ini.SetUnicode(true); + ini.SetMultiKey(true); + ini.SetMultiLine(true); + + // load the file + try { + std::ifstream infile; + infile.open(rgszTestFile[0], std::ifstream::in | std::ifstream::binary); + if (ini.Load(infile) < 0) throw false; + infile.close(); + } + catch (...) { + return oTest.Failure("Failed to load file"); + } + + // standard contents test + //if (!StandardContentsTest(ini, oTest)) { + // return false; + //} + + // save the file + try { + std::ofstream outfile; + outfile.open(rgszTestFile[1], std::ofstream::out | std::ofstream::binary); + if (ini.Save(outfile, true) < 0) throw false; + outfile.close(); + } + catch (...) { + return oTest.Failure("Failed to save file"); + } + + // file comparison test + if (!FileComparisonTest(rgszTestFile[1], rgszTestFile[2])) { + return oTest.Failure("Failed file comparison"); + } + if (!FileLoadTest(rgszTestFile[1], rgszTestFile[2])) { + return oTest.Failure("Failed file load comparison"); + } + + return oTest.Success(); +} |