/***{{{******************************************************************* * This file is part of libco - object library for C * * Copyright (c) 2002 Peter Rockai (yenar) * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public * * License as published by the Free Software Foundation; either * * version 2 of the License, or (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; see the file COPYING. If not, write to * * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * * Boston, MA 02111-1307, USA. * *******************************************************************}}}***/ /* {{{ file description */ /** * @file vector.c * @brief Test libco's vector object. **/ /* }}} */ /* {{{ includes */ #include "co_vector.h" #include "test_util.h" #include "co_conv.h" #include /* }}} */ #include "vector.cometa" #define ITEMS 1000 /* {{{ */ int main (void) { co v; int i, j, last; co_o_small item; co super; super = co_init (); __co_file_init_vector_c (super); v = co_vector_new (); for (i = 0; i < ITEMS; i ++) { j = (int)(1+(50000.0*rand()/(RAND_MAX+1.0))); CO_DEBUG (1, "appending value: %d ", j); item = co_vector_item_new (); M (item, bless, co_t_int, j); CO_M (v, item_add, item); } CO_M (v, sort); //last = 0xFFFFFFFFFFFFLL; last = 0; for (i = 0; i < ITEMS; i ++) { item = CO_M (v, item_get, i) . _co; j = CO_A (int, item, v); CO_DEBUG (1, "item: %d, last: %d", j, last); if (j < last) error (1, "sorting failed (bad order)\n"); last = j; } item = CO_M (v, item_get, ITEMS - 1) . _co; last = CO_A (int, item, v); for (i = 0; i < ITEMS; i ++) { if (i == ITEMS - 1) { item = CO_M (v, item_get, 0) . _co; if (last != CO_A (int, item, v)) error (1, "removal isn't working properly\n"); } CO_M (v, item_remove, 0); } CO_M (v, delete); return 0; } /* }}} */