Fix several warnings that appear in gcc 4.3.2.
[wvstreams.git] / utils / tests / serializetest.cc
blob8c9a8dbe249e11956a8915bcc53b657a2ea996d2
1 #include "wvserialize.h"
3 struct Silly
5 int big;
6 long bigger;
7 short small;
8 WvString s1;
9 bool b;
10 WvString s2;
12 void print()
14 printf("Silly: %d %ld %d '%s' %d '%s'\n",
15 big, bigger, small, s1.cstr(), b, s2.cstr());
20 void _wv_serialize(WvBuf &buf, const Silly &s)
22 wv_serialize(buf, s.big);
23 wv_serialize(buf, (int)s.bigger);
24 wv_serialize(buf, s.small);
25 wv_serialize(buf, s.s1);
26 wv_serialize(buf, s.b);
27 wv_serialize(buf, s.s2);
31 template <>
32 Silly *_wv_deserialize<Silly *>(WvBuf &buf)
34 Silly *s = new Silly;
35 s->big = wv_deserialize<int>(buf);
36 s->bigger = wv_deserialize<int>(buf);
37 s->small = wv_deserialize<short>(buf);
38 s->s1 = wv_deserialize<WvString>(buf);
39 s->b = wv_deserialize<int>(buf);
40 s->s2 = wv_deserialize<WvString>(buf);
41 return s;
44 template <>
45 Silly _wv_deserialize<Silly>(WvBuf &buf)
47 Silly *tmp = _wv_deserialize<Silly *>(buf);
48 Silly tmp2 = *tmp;
49 delete tmp;
50 return tmp2;
54 DeclareWvList(int);
57 int main()
59 WvDynBuf buf;
60 bool bb = false;
62 wv_serialize(buf, "hello");
63 wv_serialize(buf, 5U);
64 wv_serialize(buf, (short)7);
65 wv_serialize(buf, true);
66 wv_serialize(buf, bb);
67 wv_serialize(buf, 'x');
68 printf("buf used: %d\n", buf.used());
70 printf("got: '%s'\n", wv_deserialize<WvString>(buf).cstr());
71 printf("buf used: %d\n", buf.used());
72 printf("got: %d\n", wv_deserialize<int>(buf));
73 printf("got: %d\n", wv_deserialize<short>(buf));
74 printf("got: %d\n", wv_deserialize<int>(buf));
75 printf("got: %d\n", wv_deserialize<int>(buf));
76 printf("got: '%c'\n", wv_deserialize<char>(buf));
77 printf("\n");
79 buf.zap();
80 Silly s = {5, 6, 7, "hello", false, "world"};
81 s.print();
82 wv_serialize(buf, s);
83 s.print();
84 printf("buf used: %d\n", buf.used());
86 WvBufCursor buf2(buf, 0, buf.used());
87 Silly *s2 = wv_deserialize<Silly *>(buf2);
88 s2->print();
89 delete s2;
90 printf("buf used: %d/%d\n", buf2.used(), buf.used());
92 Silly s3 = wv_deserialize<Silly>(buf);
93 s3.print();
96 buf.zap();
97 intList list;
98 list.append(new int(7), true);
99 list.append(new int(5), true);
100 list.append(new int(1231), true);
101 list.append(new int(973), true);
102 wv_serialize(buf, list);
103 printf("buf used: %d\n", buf.used());
105 WvDynBuf xbuf;
106 wv_serialize(xbuf, buf);
108 WvBuf *xbuf2 = wv_deserialize<WvBuf *>(xbuf);
109 intList *list2 = wv_deserialize<intList *>(*xbuf2);
110 delete xbuf2;
112 printf("%d list elements after deserialize.\n", list.count());
113 intList::Iter i(*list2);
114 for (i.rewind(); i.next(); )
115 printf(" ... %d\n", *i);
116 delete list2;
118 return 0;