123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- /*****************************************************************************
- *
- * MODULE: Grass PDE Numerical Library
- * AUTHOR(S): Soeren Gebbert, Berlin (GER) Dec 2006
- * soerengebbert <at> gmx <dot> de
- *
- * PURPOSE: Unit tests for les solving
- *
- * COPYRIGHT: (C) 2000 by the GRASS Development Team
- *
- * This program is free software under the GNU General Public
- * License (>=v2). Read the file COPYING that comes with GRASS
- * for details.
- *
- *****************************************************************************/
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <grass/glocale.h>
- #include <grass/gis.h>
- #include <grass/rtree.h>
- #include <grass/vector.h>
- #include "test_rtree_lib.h"
- /* prototypes */
- static int test_basics_1d(void);
- static int test_basics_2d(void);
- static int test_basics_3d(void);
- static int test_basics_4d(void);
- /* ************************************************************************* */
- /* Performe the solver unit tests ****************************************** */
- /* ************************************************************************* */
- int unit_test_basics(void)
- {
- int sum = 0;
- G_message(_("\n++ Running basic unit tests ++"));
- sum += test_basics_1d();
- sum += test_basics_2d();
- sum += test_basics_3d();
- sum += test_basics_4d();
- if (sum > 0)
- G_warning(_("\n-- Basic rtree unit tests failure --"));
- else
- G_message(_("\n-- Basic rtree unit tests finished successfully --"));
- return sum;
- }
- /* *************************************************************** */
- /* *************************************************************** */
- /* *************************************************************** */
- int test_basics_1d(void)
- {
- int sum = 0, num, i;
-
- struct RTree* tree = RTreeCreateTree(-1, 0, 1);
-
- struct ilist *list = G_new_ilist();
-
- for(i = 0; i < 10; i++) {
-
- struct RTree_Rect* rect1 = RTreeAllocRect(tree);
- RTreeSetRect1D(rect1, tree,(i - 2), (i + 2));
- RTreeInsertRect(rect1, i + 1, tree);
-
- struct RTree_Rect* rect2 = RTreeAllocRect(tree);
- RTreeSetRect1D(rect2, tree, 2.0, 7.0);
-
- num = RTreeSearch2(tree, rect2, list);
- printf("Found %i neighbors\n", num);
-
- if(num != i + 1)
- sum++;
-
- RTreeFreeRect(rect1);
- RTreeFreeRect(rect2);
- }
- RTreeDestroyTree(tree);
- G_free_ilist(list);
-
- return sum;
- }
- /* *************************************************************** */
- /* *************************************************************** */
- /* *************************************************************** */
- int test_basics_2d(void)
- {
- int sum = 0, num, i;
-
- struct RTree* tree = RTreeCreateTree(-1, 0, 2);
-
- struct ilist *list = G_new_ilist();
-
- for(i = 0; i < 10; i++) {
-
- struct RTree_Rect* rect1 = RTreeAllocRect(tree);
- RTreeSetRect2D(rect1, tree,(i - 2), (i + 2), (i - 2), (i + 2));
- RTreeInsertRect(rect1, i + 1, tree);
-
- struct RTree_Rect* rect2 = RTreeAllocRect(tree);
- RTreeSetRect2D(rect2, tree, 2.0, 7.0, 2.0, 7.0);
-
- num = RTreeSearch2(tree, rect2, list);
- printf("Found %i neighbors\n", num);
- if(num != i + 1)
- sum++;
-
- RTreeFreeRect(rect1);
- RTreeFreeRect(rect2);
- }
- RTreeDestroyTree(tree);
- G_free_ilist(list);
-
- return sum;
- }
- /* *************************************************************** */
- /* *************************************************************** */
- /* *************************************************************** */
- int test_basics_3d(void)
- {
- int sum = 0, num, i;
-
- struct RTree* tree = RTreeCreateTree(-1, 0, 3);
-
- struct ilist *list = G_new_ilist();
-
- for(i = 0; i < 10; i++) {
-
- struct RTree_Rect* rect1 = RTreeAllocRect(tree);
- RTreeSetRect3D(rect1, tree,(i - 2), (i + 2), (i - 2), (i + 2),
- (i - 2), (i + 2));
- RTreeInsertRect(rect1, i + 1, tree);
-
- struct RTree_Rect* rect2 = RTreeAllocRect(tree);
- RTreeSetRect3D(rect2, tree, 2.0, 7.0, 2.0,
- 7.0, 2.0, 7.0);
-
- num = RTreeSearch2(tree, rect2, list);
- printf("Found %i neighbors\n", num);
-
- if(num != i + 1)
- sum++;
-
- RTreeFreeRect(rect1);
- RTreeFreeRect(rect2);
- }
- RTreeDestroyTree(tree);
- G_free_ilist(list);
-
- return sum;
- }
- /* *************************************************************** */
- /* *************************************************************** */
- /* *************************************************************** */
- int test_basics_4d(void)
- {
- int sum = 0, num, i;
-
- struct RTree* tree = RTreeCreateTree(-1, 0, 4);
-
- struct ilist *list = G_new_ilist();
-
- for(i = 0; i < 10; i++) {
-
- struct RTree_Rect* rect1 = RTreeAllocRect(tree);
- RTreeSetRect4D(rect1, tree,(i - 2), (i + 2), (i - 2), (i + 2),
- (i - 2), (i + 2), (i - 2), (i + 2));
- RTreeInsertRect(rect1, i + 1, tree);
-
- struct RTree_Rect* rect2 = RTreeAllocRect(tree);
- RTreeSetRect4D(rect2, tree, 2.0, 7.0, 2.0,
- 7.0, 2.0, 7.0, 2.0, 7.0);
-
- num = RTreeSearch2(tree, rect2, list);
- printf("Found %i neighbors\n", num);
-
- if(num != i + 1)
- sum++;
-
- RTreeFreeRect(rect1);
- RTreeFreeRect(rect2);
- }
- RTreeDestroyTree(tree);
- G_free_ilist(list);
-
- return sum;
- }
|