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