Artifact
b81342fb774937c210f5718ad5783f1eed13f7a7 :
File
compat/zlib/contrib/iostream3/test.cc
— part of check-in
[d17f4473cf]
at
2012-11-27 06:31:19
on branch zlib
— Support building with zlib in the compat directory, phase 1.
(user:
mistachkin
size: 1490)
[more...]
0000: 2f 2a 0a 20 2a 20 54 65 73 74 20 70 72 6f 67 72 /*. * Test progr
0010: 61 6d 20 66 6f 72 20 67 7a 69 66 73 74 72 65 61 am for gzifstrea
0020: 6d 20 61 6e 64 20 67 7a 6f 66 73 74 72 65 61 6d m and gzofstream
0030: 0a 20 2a 0a 20 2a 20 62 79 20 4c 75 64 77 69 67 . *. * by Ludwig
0040: 20 53 63 68 77 61 72 64 74 20 3c 73 63 68 77 61 Schwardt <schwa
0050: 72 64 74 40 73 75 6e 2e 61 63 2e 7a 61 3e 0a 20 rdt@sun.ac.za>.
0060: 2a 20 6f 72 69 67 69 6e 61 6c 20 76 65 72 73 69 * original versi
0070: 6f 6e 20 62 79 20 4b 65 76 69 6e 20 52 75 6c 61 on by Kevin Rula
0080: 6e 64 20 3c 6b 65 76 69 6e 40 72 6f 64 69 6e 2e nd <kevin@rodin.
0090: 77 75 73 74 6c 2e 65 64 75 3e 0a 20 2a 2f 0a 0a wustl.edu>. */..
00a0: 23 69 6e 63 6c 75 64 65 20 22 7a 66 73 74 72 65 #include "zfstre
00b0: 61 6d 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 3c am.h".#include <
00c0: 69 6f 73 74 72 65 61 6d 3e 20 20 20 20 20 20 2f iostream> /
00d0: 2f 20 66 6f 72 20 63 6f 75 74 0a 0a 69 6e 74 20 / for cout..int
00e0: 6d 61 69 6e 28 29 20 7b 0a 0a 20 20 67 7a 6f 66 main() {.. gzof
00f0: 73 74 72 65 61 6d 20 6f 75 74 66 3b 0a 20 20 67 stream outf;. g
0100: 7a 69 66 73 74 72 65 61 6d 20 69 6e 66 3b 0a 20 zifstream inf;.
0110: 20 63 68 61 72 20 62 75 66 5b 38 30 5d 3b 0a 0a char buf[80];..
0120: 20 20 6f 75 74 66 2e 6f 70 65 6e 28 22 74 65 73 outf.open("tes
0130: 74 31 2e 74 78 74 2e 67 7a 22 29 3b 0a 20 20 6f t1.txt.gz");. o
0140: 75 74 66 20 3c 3c 20 22 54 68 65 20 71 75 69 63 utf << "The quic
0150: 6b 20 62 72 6f 77 6e 20 66 6f 78 20 73 69 64 65 k brown fox side
0160: 73 74 65 70 70 65 64 20 74 68 65 20 6c 61 7a 79 stepped the lazy
0170: 20 63 61 6e 69 6e 65 5c 6e 22 0a 20 20 20 20 20 canine\n".
0180: 20 20 3c 3c 20 31 2e 33 20 3c 3c 20 22 5c 6e 50 << 1.3 << "\nP
0190: 6c 61 6e 20 22 20 3c 3c 20 39 20 3c 3c 20 73 74 lan " << 9 << st
01a0: 64 3a 3a 65 6e 64 6c 3b 0a 20 20 6f 75 74 66 2e d::endl;. outf.
01b0: 63 6c 6f 73 65 28 29 3b 0a 20 20 73 74 64 3a 3a close();. std::
01c0: 63 6f 75 74 20 3c 3c 20 22 57 72 6f 74 65 20 74 cout << "Wrote t
01d0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6d 65 73 he following mes
01e0: 73 61 67 65 20 74 6f 20 27 74 65 73 74 31 2e 74 sage to 'test1.t
01f0: 78 74 2e 67 7a 27 20 28 63 68 65 63 6b 20 77 69 xt.gz' (check wi
0200: 74 68 20 7a 63 61 74 20 6f 72 20 7a 6c 65 73 73 th zcat or zless
0210: 29 3a 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 ):\n".
0220: 20 20 3c 3c 20 22 54 68 65 20 71 75 69 63 6b 20 << "The quick
0230: 62 72 6f 77 6e 20 66 6f 78 20 73 69 64 65 73 74 brown fox sidest
0240: 65 70 70 65 64 20 74 68 65 20 6c 61 7a 79 20 63 epped the lazy c
0250: 61 6e 69 6e 65 5c 6e 22 0a 20 20 20 20 20 20 20 anine\n".
0260: 20 20 20 20 20 3c 3c 20 31 2e 33 20 3c 3c 20 22 << 1.3 << "
0270: 5c 6e 50 6c 61 6e 20 22 20 3c 3c 20 39 20 3c 3c \nPlan " << 9 <<
0280: 20 73 74 64 3a 3a 65 6e 64 6c 3b 0a 0a 20 20 73 std::endl;.. s
0290: 74 64 3a 3a 63 6f 75 74 20 3c 3c 20 22 5c 6e 52 td::cout << "\nR
02a0: 65 61 64 69 6e 67 20 27 74 65 73 74 31 2e 74 78 eading 'test1.tx
02b0: 74 2e 67 7a 27 20 28 62 75 66 66 65 72 65 64 29 t.gz' (buffered)
02c0: 20 70 72 6f 64 75 63 65 73 3a 5c 6e 22 3b 0a 20 produces:\n";.
02d0: 20 69 6e 66 2e 6f 70 65 6e 28 22 74 65 73 74 31 inf.open("test1
02e0: 2e 74 78 74 2e 67 7a 22 29 3b 0a 20 20 77 68 69 .txt.gz");. whi
02f0: 6c 65 20 28 69 6e 66 2e 67 65 74 6c 69 6e 65 28 le (inf.getline(
0300: 62 75 66 2c 38 30 2c 27 5c 6e 27 29 29 20 7b 0a buf,80,'\n')) {.
0310: 20 20 20 20 73 74 64 3a 3a 63 6f 75 74 20 3c 3c std::cout <<
0320: 20 62 75 66 20 3c 3c 20 22 5c 74 28 22 20 3c 3c buf << "\t(" <<
0330: 20 69 6e 66 2e 72 64 62 75 66 28 29 2d 3e 69 6e inf.rdbuf()->in
0340: 5f 61 76 61 69 6c 28 29 20 3c 3c 20 22 20 63 68 _avail() << " ch
0350: 61 72 73 20 6c 65 66 74 20 69 6e 20 62 75 66 66 ars left in buff
0360: 65 72 29 5c 6e 22 3b 0a 20 20 7d 0a 20 20 69 6e er)\n";. }. in
0370: 66 2e 63 6c 6f 73 65 28 29 3b 0a 0a 20 20 6f 75 f.close();.. ou
0380: 74 66 2e 72 64 62 75 66 28 29 2d 3e 70 75 62 73 tf.rdbuf()->pubs
0390: 65 74 62 75 66 28 30 2c 30 29 3b 0a 20 20 6f 75 etbuf(0,0);. ou
03a0: 74 66 2e 6f 70 65 6e 28 22 74 65 73 74 32 2e 74 tf.open("test2.t
03b0: 78 74 2e 67 7a 22 29 3b 0a 20 20 6f 75 74 66 20 xt.gz");. outf
03c0: 3c 3c 20 73 65 74 63 6f 6d 70 72 65 73 73 69 6f << setcompressio
03d0: 6e 28 5a 5f 4e 4f 5f 43 4f 4d 50 52 45 53 53 49 n(Z_NO_COMPRESSI
03e0: 4f 4e 29 0a 20 20 20 20 20 20 20 3c 3c 20 22 54 ON). << "T
03f0: 68 65 20 71 75 69 63 6b 20 62 72 6f 77 6e 20 66 he quick brown f
0400: 6f 78 20 73 69 64 65 73 74 65 70 70 65 64 20 74 ox sidestepped t
0410: 68 65 20 6c 61 7a 79 20 63 61 6e 69 6e 65 5c 6e he lazy canine\n
0420: 22 0a 20 20 20 20 20 20 20 3c 3c 20 31 2e 33 20 ". << 1.3
0430: 3c 3c 20 22 5c 6e 50 6c 61 6e 20 22 20 3c 3c 20 << "\nPlan " <<
0440: 39 20 3c 3c 20 73 74 64 3a 3a 65 6e 64 6c 3b 0a 9 << std::endl;.
0450: 20 20 6f 75 74 66 2e 63 6c 6f 73 65 28 29 3b 0a outf.close();.
0460: 20 20 73 74 64 3a 3a 63 6f 75 74 20 3c 3c 20 22 std::cout << "
0470: 5c 6e 57 72 6f 74 65 20 74 68 65 20 73 61 6d 65 \nWrote the same
0480: 20 6d 65 73 73 61 67 65 20 74 6f 20 27 74 65 73 message to 'tes
0490: 74 32 2e 74 78 74 2e 67 7a 27 20 69 6e 20 75 6e t2.txt.gz' in un
04a0: 63 6f 6d 70 72 65 73 73 65 64 20 66 6f 72 6d 22 compressed form"
04b0: 3b 0a 0a 20 20 73 74 64 3a 3a 63 6f 75 74 20 3c ;.. std::cout <
04c0: 3c 20 22 5c 6e 52 65 61 64 69 6e 67 20 27 74 65 < "\nReading 'te
04d0: 73 74 32 2e 74 78 74 2e 67 7a 27 20 28 75 6e 62 st2.txt.gz' (unb
04e0: 75 66 66 65 72 65 64 29 20 70 72 6f 64 75 63 65 uffered) produce
04f0: 73 3a 5c 6e 22 3b 0a 20 20 69 6e 66 2e 72 64 62 s:\n";. inf.rdb
0500: 75 66 28 29 2d 3e 70 75 62 73 65 74 62 75 66 28 uf()->pubsetbuf(
0510: 30 2c 30 29 3b 0a 20 20 69 6e 66 2e 6f 70 65 6e 0,0);. inf.open
0520: 28 22 74 65 73 74 32 2e 74 78 74 2e 67 7a 22 29 ("test2.txt.gz")
0530: 3b 0a 20 20 77 68 69 6c 65 20 28 69 6e 66 2e 67 ;. while (inf.g
0540: 65 74 6c 69 6e 65 28 62 75 66 2c 38 30 2c 27 5c etline(buf,80,'\
0550: 6e 27 29 29 20 7b 0a 20 20 20 20 73 74 64 3a 3a n')) {. std::
0560: 63 6f 75 74 20 3c 3c 20 62 75 66 20 3c 3c 20 22 cout << buf << "
0570: 5c 74 28 22 20 3c 3c 20 69 6e 66 2e 72 64 62 75 \t(" << inf.rdbu
0580: 66 28 29 2d 3e 69 6e 5f 61 76 61 69 6c 28 29 20 f()->in_avail()
0590: 3c 3c 20 22 20 63 68 61 72 73 20 6c 65 66 74 20 << " chars left
05a0: 69 6e 20 62 75 66 66 65 72 29 5c 6e 22 3b 0a 20 in buffer)\n";.
05b0: 20 7d 0a 20 20 69 6e 66 2e 63 6c 6f 73 65 28 29 }. inf.close()
05c0: 3b 0a 0a 20 20 72 65 74 75 72 6e 20 30 3b 0a 0a ;.. return 0;..
05d0: 7d 0a }.