#include void test_vector () { basedvector v; assert (v.size () == 0); assert (v.capacity () == 0); v.append (69); assert (v.size () == 1); assert (v[1] == 69); v.append (8); v.append (13); assert (v.pop () == 13); assert (v.pop () == 8); v.append (14); v.append (17); v.append (36); v.append (101); assert (v.size () == 5); assert (v.pop () == 101); assert (v.pop () == 36); assert (v.pop () == 17); assert (v.pop () == 14); assert (v.pop () == 69); assert (v.size () == 0); v = basedvector (); assert (v.size () == 0); assert (v.capacity () == 0); v.append (69); v.append (14); v.append (17); v.append (36); v.append (101); assert (v.size () == 5); v.resize (10); assert (v.size () == 10); assert (v.capacity () >= v.size ()); assert (v[1] == 69); assert (v[2] == 14); assert (v[3] == 17); assert (v[4] == 36); assert (v[5] == 101); v[1] = 52; v[2] = 666; v[3] = 55559; v[4] = 1721; v[5] = -24; v[6] = 8893; v[7] = 42; v[8] = 173; v[9] = 115; v[10] = 382; /* shared */ basedvector v2 (v); assert (v2.size () == 10); for (int i = 1; i <= 10; i ++) assert (v2[i] == v[i]); assert (v2[8] == 173); v[8] = 174; assert (v2[8] == 174); basedvector u (COPY, v); assert (u.size () == 10); for (int i = 1; i <= 10; i ++) assert (u[i] == v[i]); int x[6] = { 7, 4, 2, 3, 9, 1 }; basedvector w (4, x); assert (w.size () == 4); for (int i = 0; i < 4; i ++) assert (w[i + 1] == x[i]); basedvector y (6, v); assert (y.size () == 6); for (int i = 1; i <= 6; i ++) assert (y[i] == v[i]); y = w; assert (y.size () == 4); for (int i = 1; i <= 4; i ++) assert (y[i] == w[i]); } void test_bitset () { bitset s; assert (s.size () == 0); assert (s.card () == 0); bitset t (100); assert (t.size () == 100); assert (t.card () == 0); t.push (52); t.push (1); t.push (31); t.push (32); t.push (100); t.push (63); t.push (7); int c = 0; for (bitset_const_iter i = t; i; i ++) { assert (t(i.val ())); c ++; } assert (c == 7); assert (t.card () == 7); assert (t(52)); assert (t(1)); assert (t(31)); assert (t(32)); assert (t(100)); assert (t(63)); assert (t(7)); assert (!t(2)); assert (!t(15)); assert (!t(47)); assert (!t(99)); t -= 52; t -= 63; t -= 7; t += 100; t += 82; t -= 47; assert (t.card () == 5); assert (!t(52)); assert (!t(63)); assert (!t(7)); assert (!t(47)); assert (t(100)); assert (t(82)); bitset u (t); assert (u.size () == 100); assert (u.card () == 5); } template void test_unsignedset1 () { unsignedset1 s (94); assert (s.card () == 0); unsignedset1 t (300); assert (t.card () == 0); t.push (52); t.push (1); t.push (31); t.push (32); t.push (33); t.push (63); t.push (64); t.push (65); t.push (300); t.push (299); t.push (243); t.push (172); t.push (122); t.push (70); int c = 0; for (typename unsignedset1::const_iter i = t; i; i ++) { assert (t(i.val ())); c ++; } assert (c == 14); assert (t.card () == 14); assert (t(52)); assert (t(1)); assert (t(31)); assert (t(32)); assert (t(33)); assert (t(63)); assert (t(64)); assert (t(65)); assert (t(300)); assert (t(299)); assert (t(243)); assert (t(172)); assert (t(122)); assert (t(70)); assert (!t(2)); assert (!t(15)); assert (!t(47)); assert (!t(99)); assert (!t(127)); assert (!t(128)); assert (!t(129)); t -= 52; t -= 63; t -= 64; t -= 65; t -= 7; t += 100; t += 82; t -= 47; assert (t.card () == 12); assert (!t(52)); assert (!t(63)); assert (!t(64)); assert (!t(65)); assert (!t(7)); assert (!t(47)); assert (t(100)); assert (t(82)); unsignedset1 u (COPY, t); assert (u.card () == 12); } void test_map () { map m; assert (m.card () == 0); m.push (1, 7); m.set (2, 9); m[3] = 14; m[4] = 23; assert (m.card () == 4); assert (m % 1); assert (m % 2); assert (m % 3); assert (m % 4); assert (! (m % 5)); assert (m(1) == 7); assert (m(2) == 9); assert (m(3) == 14); assert (m(4) == 23); m[2] = 17; assert (m(2) == 17); int c = 0; for (map::iter i = m; i; i ++) { int k = i.key (); assert (k >= 1); assert (k <= 4); switch (k) { case 1: assert (i.val () == 7); break; case 2: assert (i.val () == 17); break; case 3: assert (i.val () == 14); break; case 4: assert (i.val () == 23); break; default: abort (); } c ++; } assert (c == 4); map n (COPY, m); assert (n.card () == 4); m[2] = 111; assert (n(2) == 17); } void test_polynomial () { vector coeffs (3); coeffs[0] = 7; coeffs[1] = 0; coeffs[2] = 2; polynomial p (coeffs); p.show_self (); printf ("\n"); polynomial q (coeffs); q += p; show (q); printf ("\n"); q *= p; show (q); printf ("\n"); } void test_laurentpoly () { vector c (3); c[0] = 1; c[1] = 0; c[2] = 1; laurentpoly p (-1, c); show (p); printf ("\n"); p *= p; show (p); printf ("\n"); } #if 0 void test_vs () { grading gr; gr.h = -1; gr.q = 1; basedvector g5_gr (5); g5_gr[1] = g5_gr[2] = g5_gr[3] = g5_gr[4] = g5_gr[5] = gr; basedvector, 1> gs5; gs5.append (new euclideangenerator (1)); gs5.append (new euclideangenerator (2)); gs5.append (new euclideangenerator (3)); gs5.append (new euclideangenerator (4)); gs5.append (new euclideangenerator (5)); ptr > e5 = new vectorspace (gs5, g5_gr); printf ("e5: "); e5->show_self (); printf ("\n"); vselt x1 = e5->singleton (1); x1 += e5->singleton (3); vselt x2 = e5->singleton (2); x2 += e5->singleton (3); x2 += e5->singleton (5); vselt x3 = e5->singleton (4); x3 += e5->singleton (5); vselt x4 = e5->singleton (1); x4 += e5->singleton (2); x4 += e5->singleton (5); basedvector, 1> xs (4); xs[1] = x1; xs[2] = x2; xs[3] = x3; xs[4] = x4; ptr > vs3 = e5->subspace (xs); assert (vs3->dim () == 3); printf ("vs3: "); vs3->show_self (); printf ("\n"); basedvector g2_gr (2); g2_gr[1] = g2_gr[2] = gr; basedvector, 1> gs2; gs2.append (new euclideangenerator (1)); gs2.append (new euclideangenerator (2)); ptr > e2 = new vectorspace (gs2, g2_gr); basedvector g3_gr (3); g3_gr[1] = g3_gr[2] = g3_gr[3] = gr; basedvector, 1> gs3; gs3.append (new euclideangenerator (1)); gs3.append (new euclideangenerator (2)); gs3.append (new euclideangenerator (3)); ptr > e3 = new vectorspace (gs3, g3_gr); basedvector, 1> cols (3); cols[1] = e2->singleton (1); cols[2] = e2->singleton (2); vselt x5 = e2->singleton (1); x5 += e2->singleton (2); cols[3] = x5; vsmap m (e3, e2, cols); ptr > mker = m.kernel (); printf ("mker: "); mker->show_self (); printf ("\n"); } #endif void test_fields () { Q a (2, 1); Q b (-2, 1); a /= b; assert (a == -1); } int main () { test_vector (); test_bitset (); test_unsignedset1 (); test_unsignedset1 (); test_unsignedset1 > (); test_map (); test_polynomial (); test_laurentpoly (); // test_vs (); test_fields (); }