1 // This is mul/vil3d/tests/test_algo_structuring_element.cxx
2 #include <iostream>
3 #include "testlib/testlib_test.h"
4 #ifdef _MSC_VER
5 # include "vcl_msvc_warnings.h"
6 #endif
7 #include <vil3d/algo/vil3d_structuring_element.h>
8
test_algo_structuring_element()9 static void test_algo_structuring_element()
10 {
11 std::cout << "***********************************\n"
12 << " Testing vil3d_structuring_element\n"
13 << "***********************************\n";
14
15 int n = 5;
16 std::vector<int> px(n),py(n),pz(n);
17 for (int i=0;i<n;++i)
18 {
19 px[i]=i; py[i]=i+3; pz[i]=i-2;
20 }
21
22 vil3d_structuring_element se(px,py,pz);
23
24 std::cout<<"Element: "<<se<<std::endl;
25
26 TEST("min_i()",se.min_i(),0);
27 TEST("max_i()",se.max_i(),n-1);
28 TEST("min_j()",se.min_j(),3);
29 TEST("max_j()",se.max_j(),n+2);
30 TEST("min_k()",se.min_k(),-2);
31 TEST("max_k()",se.max_k(),n-3);
32
33 se.set_to_sphere(1.1);
34 TEST("Number of elements in sphere",se.p_i().size(),7);
35
36 se.set_to_sphere_noniso(1.6,1.0,1.5,1.0);
37 TEST("Number of elements in non-iso (1x1.5x1) sphere",se.p_i().size(),11);
38
39 se.set_to_sphere_noniso(1.9,1.0,1.5,1.0);
40 TEST("Number of elements in non-iso (1x1.5x1) sphere",se.p_i().size(),19);
41
42 std::cout<<"set_to_circle_i():\n";
43 se.set_to_circle_i(1.1);
44 TEST("Number of elements in circle",se.p_i().size(),5);
45 bool plane_i_ok = ( se.min_i() == 0 && se.max_i() == 0 );
46 TEST("Circle in j,k plane",plane_i_ok,true);
47
48 std::cout<<"set_to_circle_j():\n";
49 se.set_to_circle_j(1.1);
50 TEST("Number of elements in circle",se.p_j().size(),5);
51 bool plane_j_ok = ( se.min_j() == 0 && se.max_j() == 0 );
52 TEST("Circle in i,k plane",plane_j_ok,true);
53
54 std::cout<<"set_to_circle_k():\n";
55 se.set_to_circle_k(1.1);
56 TEST("Number of elements in circle",se.p_k().size(),5);
57 bool plane_k_ok = ( se.min_k() == 0 && se.max_k() == 0 );
58 TEST("Circle in i,j plane",plane_k_ok,true);
59
60
61 std::cout<<"set_to_line_i():\n";
62 se.set_to_line_i(-2,7);
63 TEST("Number of elements",se.p_i().size(),10);
64 TEST("min_i()",se.min_i(),-2);
65 TEST("max_i()",se.max_i(),7);
66 TEST("min_j()",se.min_j(),0);
67 TEST("max_j()",se.max_j(),0);
68 TEST("min_k()",se.min_k(),0);
69 TEST("max_k()",se.max_k(),0);
70
71 std::cout<<"set_to_line_j():\n";
72 se.set_to_line_j(-1,6);
73 TEST("Number of elements",se.p_i().size(),8);
74 TEST("min_i()",se.min_i(),0);
75 TEST("max_i()",se.max_i(),0);
76 TEST("min_j()",se.min_j(),-1);
77 TEST("max_j()",se.max_j(),6);
78 TEST("min_k()",se.min_k(),0);
79 TEST("max_k()",se.max_k(),0);
80
81 std::cout<<"set_to_line_k():\n";
82 se.set_to_line_k(-3,8);
83 TEST("Number of elements",se.p_i().size(),12);
84 TEST("min_i()",se.min_i(),0);
85 TEST("max_i()",se.max_i(),0);
86 TEST("min_j()",se.min_j(),0);
87 TEST("max_j()",se.max_j(),0);
88 TEST("min_k()",se.min_k(),-3);
89 TEST("max_k()",se.max_k(),8);
90 }
91
92 TESTMAIN(test_algo_structuring_element);
93