1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include "testlib.h"
- #include <string>
- using namespace std;
- const string YES = "YES";
- const string NO = "NO";
- int main(int argc, char *argv[]) {
- setName("%s", ("multiple " + YES + "/" + NO + " (case insensitive)").c_str());
- registerTestlibCmd(argc, argv);
- int index = 0, yesCount = 0, noCount = 0;
- string pa;
- while (!ans.seekEof() && !ouf.seekEof()) {
- index++;
- string ja = upperCase(ans.readToken());
- pa = upperCase(ouf.readToken());
- if (ja != YES && ja != NO)
- quitf(_fail, "%s or %s expected in answer, but %s found [%d%s token]",
- YES.c_str(), NO.c_str(), compress(ja).c_str(), index, englishEnding(index).c_str());
- if (pa == YES)
- yesCount++;
- else if (pa == NO)
- noCount++;
- else
- quitf(_pe, "%s or %s expected, but %s found [%d%s token]",
- YES.c_str(), NO.c_str(), compress(pa).c_str(), index, englishEnding(index).c_str());
- if (ja != pa)
- quitf(_wa, "expected %s, found %s [%d%s token]",
- compress(ja).c_str(), compress(pa).c_str(), index, englishEnding(index).c_str());
- }
- int extraInAnsCount = 0;
- while (!ans.seekEof()) {
- ans.readToken();
- extraInAnsCount++;
- }
- int extraInOufCount = 0;
- while (!ouf.seekEof()) {
- ouf.readToken();
- extraInOufCount++;
- }
- if (extraInAnsCount > 0)
- quitf(_wa, "Answer contains longer sequence [length = %d], but output contains %d elements",
- index + extraInAnsCount, index);
- if (extraInOufCount > 0)
- quitf(_wa, "Output contains longer sequence [length = %d], but answer contains %d elements",
- index + extraInOufCount, index);
- if (index == 0)
- quitf(_ok, "Empty output");
- else if (index == 1)
- quitf(_ok, "%s", pa.c_str());
- else
- quitf(_ok, "%d token(s): yes count is %d, no count is %d", index, yesCount, noCount);
- quitf(_fail, "Impossible case");
- }
|