diff options
author | Dimitri John Ledkov <xnox@ubuntu.com> | 2014-05-11 22:09:52 +0100 |
---|---|---|
committer | Dimitri John Ledkov <xnox@ubuntu.com> | 2014-05-11 22:09:52 +0100 |
commit | 3525014850e3800ac7b28fd34e7f7af427f1c620 (patch) | |
tree | 3d1b8a17b86cfa9af178ceb818a4dc9daf52a46b /tests/testblocks.cpp |
sword (1.7.2+dfsg-2) unstable; urgency=medium
* Correct shared library symlink. (Closes: #747420)
# imported from the archive
Diffstat (limited to 'tests/testblocks.cpp')
-rw-r--r-- | tests/testblocks.cpp | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/tests/testblocks.cpp b/tests/testblocks.cpp new file mode 100644 index 0000000..49cd996 --- /dev/null +++ b/tests/testblocks.cpp @@ -0,0 +1,119 @@ +/****************************************************************************** + * + * testblocks.cpp - + * + * $Id: testblocks.cpp 2833 2013-06-29 06:40:28Z chrislit $ + * + * Copyright 2001-2013 CrossWire Bible Society (http://www.crosswire.org) + * CrossWire Bible Society + * P. O. Box 2528 + * Tempe, AZ 85280-2528 + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation version 2. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + */ + +#include <entriesblk.h> +#include <iostream> +#include <string> +#include <stdio.h> +#include <stdlib.h> + +using namespace std; +#ifndef NO_SWORD_NAMESPACE +using namespace sword; +#endif + +void addEntry(EntriesBlock *eb) { + string input; + string body; + char line[1024], *c; + std::cout << "\nEnter new Entry's text. '.' on an empty line to finish:\n"; + do { + std::cout << "> "; + c = fgets(line, 1000, stdin); + if (c == NULL) { + std::cerr << "ERROR: fgets failed during addEntry\n"; + } else { + input = line; + if (input.compare(".")) + body.append(input); + } + } + while (input.compare(".")); + std::cout << "Adding new entry. Index is: " << eb->addEntry(body.c_str()) << "\n\n"; +} + + +void printEntry(EntriesBlock *eb, int index) { + if (index < eb->getCount()) { + std::cout << "Contents of entry [" << index << "]:\n"; + std::cout << eb->getEntry(index) << "\n"; + } + else std::cout << "Invalid entry number\n\n"; +} + + +void printSize(EntriesBlock *eb) { + unsigned long size; + eb->getRawData(&size); + std::cout << "Size of raw data: " << size << "\n\n"; +} + + +void removeEntry(EntriesBlock *eb, int index) { + if (index < eb->getCount()) { + std::cout << "Removing entry [" << index << "]\n"; + eb->removeEntry(index); + } + else std::cout << "Invalid entry number\n\n"; +} + + +int main(int argc, char **argv) { + + EntriesBlock *eb = new EntriesBlock(); + string input; + char line[1024], *c; + + std::cout << "Initial entry count should be 0: " << eb->getCount() << "\n"; + + do { + std::cout << "[" << eb->getCount() << "] > "; + c = fgets(line, 1000, stdin); + if (c == NULL) { + std::cerr << "ERROR: fgets failed in main\n"; + } else { + input = line; + if (input.length() > 0) { + switch (input[0]) { + case 'a': addEntry(eb); break; + case 'p': printEntry(eb, atoi(input.c_str()+1)); break; + case 'r': removeEntry(eb, atoi(input.c_str()+1)); break; + case 's': printSize(eb); break; + case 'q': break; + case '?': + default: + std::cout << "\n a - add a new entry\n"; + std::cout << " p <entry_index> - print entry\n"; + std::cout << " r <entry_index> - remove entry\n"; + std::cout << " s - print size of raw data\n"; + std::cout << " q - quit\n\n"; + break; + } + } + } + } + while (input.compare("q")); + + delete eb; + + return 0; +} |