From 61e8e94addff28f32b80a19a0c013ba4fdb9dc0b Mon Sep 17 00:00:00 2001 From: CSRG Date: Sat, 26 Aug 1989 16:30:35 -0800 Subject: [PATCH] BSD 4_3_Net_2 development Work on file usr/src/lib/libg++/tests/tDeque.cc Work on file usr/src/lib/libg++/tests/tQueue.cc Synthesized-from: CSRG/cd2/net.2 --- usr/src/lib/libg++/tests/tDeque.cc | 167 ++++++++++++++++++++++++++ usr/src/lib/libg++/tests/tQueue.cc | 184 +++++++++++++++++++++++++++++ 2 files changed, 351 insertions(+) create mode 100644 usr/src/lib/libg++/tests/tDeque.cc create mode 100644 usr/src/lib/libg++/tests/tQueue.cc diff --git a/usr/src/lib/libg++/tests/tDeque.cc b/usr/src/lib/libg++/tests/tDeque.cc new file mode 100644 index 0000000000..6ae6f65687 --- /dev/null +++ b/usr/src/lib/libg++/tests/tDeque.cc @@ -0,0 +1,167 @@ +/* + test of Deques +*/ + +#ifdef PTIMES +const int ptimes = 1; +#else +const int ptimes = 0; +#endif + +#include +#include + +#include "iDeque.h" + +#define tassert(ex) {if ((ex)) cerr << #ex << "\n"; \ + else _assert(#ex, __FILE__,__LINE__); } + + +int SIZE; + +void print(intDeque& a) +{ + int maxprint = 20; + cout << "["; + int k = 0; + while (!a.empty() && k++ < maxprint) + cout << a.deq() << " "; + if (k == maxprint) + cout << "]\n"; + else + { + while (!a.empty()) a.del_front(); + cout << "...]\n"; + } + assert(a.empty()); +} + +#include "iXPDeque.h" + +void XPtest () +{ + intXPDeque d(SIZE); + assert(d.OK()); + for (int i = 0; i < SIZE; ++i) + { + if (i % 2 == 0) + d.enq(i); + else + d.push(i); + } + assert(d.length() == SIZE); + assert(d.front() == (SIZE-1)); + assert(d.rear() == (SIZE-2)); + assert(!d.full()); + intXPDeque d1(SIZE/2); + for (i = (SIZE-1); i >= 0; --i) + { + int x; + if (i % 2 == 0) + { + x = d.rear(); + d.del_rear(); + } + else + { + x = d.front(); + d.del_front(); + } + d1.enq(x); + } + assert(d.empty()); + assert(d1.length() == SIZE); + assert(d1.front() == (SIZE-1)); + assert(d1.rear() == 0); + assert(d.OK()); + assert(d1.OK()); + intXPDeque d2 (d1); + assert(d2.length() == SIZE); + assert(d2.front() == (SIZE-1)); + assert(d2.OK()); + d1.clear(); + assert(d1.empty()); + d1 = d2; + assert(d1.length() == SIZE); + assert(d1.front() == (SIZE-1)); + cout << "d1:"; print(d1); + assert(d.OK()); + assert(d1.OK()); + assert(d2.OK()); +} + + +#include "iDLDeque.h" + +void DLtest () +{ + intDLDeque d; + assert(d.OK()); + for (int i = 0; i < SIZE; ++i) + { + if (i % 2 == 0) + d.enq(i); + else + d.push(i); + } + assert(d.length() == SIZE); + assert(d.front() == (SIZE-1)); + assert(d.rear() == (SIZE-2)); + assert(!d.full()); + intDLDeque d1; + for (i = (SIZE-1); i >= 0; --i) + { + int x; + if (i % 2 == 0) + { + x = d.rear(); + d.del_rear(); + } + else + { + x = d.front(); + d.del_front(); + } + d1.enq(x); + } + assert(d.empty()); + assert(d1.length() == SIZE); + assert(d1.front() == (SIZE-1)); + assert(d1.rear() == 0); + assert(d.OK()); + assert(d1.OK()); + intDLDeque d2 (d1); + assert(d2.length() == SIZE); + assert(d2.front() == (SIZE-1)); + assert(d2.OK()); + d1.clear(); + assert(d1.empty()); + d1 = d2; + assert(d1.length() == SIZE); + assert(d1.front() == (SIZE-1)); + cout << "d1:"; print(d1); + + assert(d.OK()); + assert(d1.OK()); + assert(d2.OK()); +} + + +main(int argv, char** argc) +{ + if (argv > 1) + { + SIZE = abs(atoi(argc[1])); + SIZE &= ~1; + } + else + SIZE = 100; + + start_timer(); + cout << "XP deques:\n"; XPtest(); + if (ptimes) cout << "\ntime = " << return_elapsed_time(0.0) << "\n"; + start_timer(); + cout << "DL deques:\n"; DLtest(); + if (ptimes) cout << "\ntime = " << return_elapsed_time(0.0) << "\n"; + cout << "\nEnd of test\n"; +} diff --git a/usr/src/lib/libg++/tests/tQueue.cc b/usr/src/lib/libg++/tests/tQueue.cc new file mode 100644 index 0000000000..294b62bd56 --- /dev/null +++ b/usr/src/lib/libg++/tests/tQueue.cc @@ -0,0 +1,184 @@ +/* + test of Queues +*/ + +#ifdef PTIMES +const int ptimes = 1; +#else +const int ptimes = 0; +#endif + +#include +#include +#include "iQueue.h" + +#define tassert(ex) {if ((ex)) cerr << #ex << "\n"; \ + else _assert(#ex, __FILE__,__LINE__); } + + +int SIZE; + +void print(intQueue& a) +{ + int maxprint = 20; + cout << "["; + int k = 0; + while (!a.empty() && k++ < maxprint) + cout << a.deq() << " "; + if (k == maxprint) + cout << "]\n"; + else + { + while (!a.empty()) a.del_front(); + cout << "...]\n"; + } + assert(a.empty()); +} + +#include "iXPQueue.h" + +void XPtest () +{ + intXPQueue q(SIZE/2); + assert(q.OK()); + for (int i = 0; i < SIZE; ++i) + q.enq(i); + assert(q.length() == SIZE); + assert(q.front() == 0); + assert(!q.full()); + intXPQueue q1(SIZE*2); + for (i = 0; i < SIZE; ++i) + { + int x = q.deq(); + assert(x == i); + q1.enq(x); + } + assert(q.empty()); + assert(q1.length() == SIZE); + assert(q1.front() == 0); + assert(q.OK()); + assert(q1.OK()); + intXPQueue q2 (q1); + assert(q2.length() == SIZE); + assert(q2.front() == 0); + assert(q2.OK()); + q1.clear(); + assert(q1.empty()); + q1 = q2; + assert(q1.length() == SIZE); + assert(q1.front() == 0); + assert(q1.OK()); + q1.del_front(); + assert(q1.length() == (SIZE-1)); + assert(q1.front() == 1); + cout << "q1:"; print(q1); + assert(q.OK()); + assert(q1.OK()); + assert(q2.OK()); +} + +#include "iVQueue.h" + +void Vtest () +{ + intVQueue q(SIZE); + assert(q.OK()); + for (int i = 0; i < SIZE; ++i) + q.enq(i); + assert(q.length() == SIZE); + assert(q.front() == 0); + assert(q.full()); + intVQueue q1(SIZE); + for (i = 0; i < SIZE; ++i) + { + int x = q.deq(); + assert(x == i); + q1.enq(x); + } + assert(q.empty()); + assert(q1.length() == SIZE); + assert(q1.front() == 0); + assert(q.OK()); + assert(q1.OK()); + intVQueue q2 (q1); + assert(q2.length() == SIZE); + assert(q2.front() == 0); + assert(q2.OK()); + q1.clear(); + assert(q1.empty()); + q1 = q2; + assert(q1.length() == SIZE); + assert(q1.front() == 0); + assert(q1.OK()); + q1.del_front(); + assert(q1.length() == (SIZE-1)); + assert(q1.front() == 1); + cout << "q1:"; print(q1); + assert(q.OK()); + assert(q1.OK()); + assert(q2.OK()); +} + +#include "iSLQueue.h" + +void SLtest () +{ + intXPQueue q; + assert(q.OK()); + for (int i = 0; i < SIZE; ++i) + q.enq(i); + assert(q.length() == SIZE); + assert(q.front() == 0); + assert(!q.full()); + intXPQueue q1; + for (i = 0; i < SIZE; ++i) + { + int x = q.deq(); + assert(x == i); + q1.enq(x); + } + assert(q.empty()); + assert(q1.length() == SIZE); + assert(q1.front() == 0); + assert(q.OK()); + assert(q1.OK()); + intXPQueue q2 (q1); + assert(q2.length() == SIZE); + assert(q2.front() == 0); + assert(q2.OK()); + q1.clear(); + assert(q1.empty()); + q1 = q2; + assert(q1.length() == SIZE); + assert(q1.front() == 0); + assert(q1.OK()); + q1.del_front(); + assert(q1.length() == (SIZE-1)); + assert(q1.front() == 1); + cout << "q1:"; print(q1); + assert(q.OK()); + assert(q1.OK()); + assert(q2.OK()); +} + + +main(int argv, char** argc) +{ + if (argv > 1) + { + SIZE = abs(atoi(argc[1])); + SIZE &= ~1; + } + else + SIZE = 100; + start_timer(); + cout << "XP queues:\n"; XPtest(); + if (ptimes) cout << "\ntime = " << return_elapsed_time(0.0) << "\n"; + start_timer(); + cout << "V queues:\n"; Vtest(); + if (ptimes) cout << "\ntime = " << return_elapsed_time(0.0) << "\n"; + start_timer(); + cout << "SL queues:\n"; SLtest(); + if (ptimes) cout << "\ntime = " << return_elapsed_time(0.0) << "\n"; + cout << "\nEnd of test\n"; +} -- 2.20.1