1 // This is gel/vtol/tests/test_edge_2d.cxx
2 #include "testlib/testlib_test.h"
3 #include <vtol/vtol_vertex_2d_sptr.h>
4 #include <vtol/vtol_vertex_2d.h>
5 #include <vtol/vtol_edge_2d.h>
6 #include <vtol/vtol_edge_2d_sptr.h>
7 #include <vtol/vtol_zero_chain_sptr.h>
8 #include <vtol/vtol_zero_chain.h>
9 
test_edge_2d()10 static void test_edge_2d()
11 {
12   std::cout << "testing edge 2d\n";
13 
14   vtol_vertex_2d_sptr v1 = new vtol_vertex_2d(0.0,0.0);
15   vtol_vertex_2d_sptr v2 = new vtol_vertex_2d(1.0,1.0);
16   vtol_vertex_2d_sptr v3 = new vtol_vertex_2d(2.0,2.0);
17   vtol_vertex_2d_sptr v4 = new vtol_vertex_2d(3.0,3.0);
18 
19   vtol_edge_2d_sptr e1= new vtol_edge_2d(v1,v2);
20   vtol_edge_2d_sptr e1a = new vtol_edge_2d(e1);
21   e1a->describe(std::cout,8);
22 
23   TEST("vtol_edge_2d equality", *e1, *e1a);
24   TEST("vtol_edge_2d::cast_to_edge()", e1->cast_to_edge()==nullptr, false);
25 
26   vtol_zero_chain_sptr zc2 = new vtol_zero_chain(v2,v3);
27   zc2->describe(std::cout,8);
28 
29   vtol_edge_2d_sptr e2 = new vtol_edge_2d(zc2);
30   TEST("vtol_edge_2d inequality", *e2==*e1, false);
31 
32   vtol_zero_chain_sptr zc3 = new vtol_zero_chain(v3,v4);
33 
34   zero_chain_list z_list;
35 
36   z_list.push_back(zc3);
37   z_list.push_back(e1->zero_chain());
38 
39   vtol_edge_2d_sptr e3 = new vtol_edge_2d(z_list);
40   TEST("vtol_edge_2d inequality", *e3==*e1, false);
41   TEST("vtol_edge_2d inequality", *e3==*e2, false);
42 
43   vtol_edge_2d_sptr e4 = new vtol_edge_2d(3.0,3.0,4.0,4.0);
44   vsol_spatial_object_2d_sptr so_clone = e4->clone();
45   so_clone->describe(std::cout,8);
46   vtol_topology_object_sptr to_clone = so_clone->cast_to_topology_object();
47   to_clone->describe(std::cout,8);
48   vtol_edge_2d_sptr e4_clone = to_clone->cast_to_edge()->cast_to_edge_2d();
49 
50   TEST("vtol_edge_2d::clone()", *e4, *e4_clone);
51   TEST("vtol_edge_2d inequality", *e4==*e1, false);
52   TEST("vtol_edge_2d inequality", *e4==*e2, false);
53   TEST("vtol_edge_2d inequality", *e4==*e3, false);
54   TEST("vtol_edge_2d::clone()", *e4, *(e4_clone->cast_to_topology_object()));
55   TEST("vtol_edge_2d::cast_to_edge_2d()", e4->cast_to_edge_2d()==nullptr, false);
56 
57   vtol_vertex_sptr e1v1 = e1->v1();
58   vtol_vertex_sptr e1v2 = e1->v2();
59 
60   TEST("vtol_edge_2d equality", *e1v1, *v1);
61   TEST("vtol_edge_2d equality", *e1v2, *v2);
62 
63   vtol_zero_chain_sptr e2zc = e2->zero_chain();
64   TEST("vtol_edge_2d::zero_chain()", *e2zc, *zc2);
65 
66   e1->set_v1(v3->cast_to_vertex());
67   e1->set_v2(v4->cast_to_vertex());
68 
69   TEST("vtol_edge_2d::v1()", *(e1->v1()), *v3);
70   TEST("vtol_edge_2d::v2()", *(e1->v2()), *v4);
71 
72   vtol_vertex_sptr current = e1->v1();
73 
74   e1->replace_end_point(*current,*(v1));
75 
76   TEST("vtol_edge_2d::v1()", *(e1->v1()), *v1);
77   TEST("vtol_edge_2d::cast_to_edge()", e1->cast_to_edge()==nullptr, false);
78 
79   TEST("vtol_edge_2d::valid_inferior_type()",e1->valid_inferior_type(zc2),true);
80   TEST("vtol_zero_chain::valid_superior_type()",zc2->valid_superior_type(e1),true);
81   TEST("vtol_edge_2d::valid_inferior_type()",e1->valid_inferior_type(e1->cast_to_topology_object()),false);
82 }
83 
84 TESTMAIN(test_edge_2d);
85