1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <iostream>
#include <list>
#include <sstream>
#include "srchilite/bufferedoutput.h"
#include "asserttestexit.h"
using namespace std;
using namespace srchilite;
int main() {
ostringstream os;
BufferedOutput bufferedOutput(os);
bufferedOutput.output("first line");
bufferedOutput.output(" blah blah");
bufferedOutput.postLineInsert("post first line\n");
bufferedOutput.postLineInsert("post first line\n"); // duplicates are not stored
bufferedOutput.postLineInsert("post first line 2\n");
bufferedOutput.postLineInsert("post first line 3\n");
bufferedOutput.postDocInsert("post doc");
bufferedOutput.postDocInsert("post doc");
bufferedOutput.postDocInsert("post doc 2");
bufferedOutput.postDocInsert("post doc 3");
cout << "line: " << os.str() << endl;
assertEquals("first line blah blah", os.str());
os.str("");
bufferedOutput.writePostLine("PRE ");
const string &postLine = os.str();
cout << "post line: " << postLine << endl;
assertEquals(
"PRE post first line\nPRE post first line 2\nPRE post first line 3\n",
postLine);
os.str("");
bufferedOutput.writePostDoc("PRE ");
const string &postDoc = os.str();
cout << "post doc: " << postDoc << endl;
assertEquals("PRE post docPRE post doc 2PRE post doc 3", postDoc);
// now try with collections
list<string> postline, postdoc;
postline.push_back("NEW post first line\n");
postline.push_back("NEW post first line 2\n");
postline.push_back("NEW post first line\n");
bufferedOutput.postLineInsertFrom(postline);
os.str("");
bufferedOutput.writePostLine("PRE ");
const string &postLine2 = os.str();
cout << "post line: " << postLine2 << endl;
assertEquals("PRE NEW post first line\nPRE NEW post first line 2\n",
postLine2);
postdoc.push_back("NEW post doc");
postdoc.push_back("NEW post doc 2");
postdoc.push_back("NEW post doc");
bufferedOutput.postDocInsertFrom(postdoc);
os.str("");
bufferedOutput.writePostDoc("PRE ");
const string &postDoc2 = os.str();
cout << "post doc: " << postDoc2 << endl;
assertEquals("PRE NEW post docPRE NEW post doc 2", postDoc2);
// check that the buffers were flushed
os.str("");
bufferedOutput.postLineInsert("foo");
bufferedOutput.writePostLine("PRE ");
assertEquals("PRE foo", os.str());
os.str("");
bufferedOutput.postDocInsert("foo");
bufferedOutput.writePostDoc("PRE ");
assertEquals("PRE foo", os.str());
cout << "test_buffered_output: SUCCESS!" << endl;
return 0;
}
|