1 //:
2 // \file
3 // \author Andy Miller
4 // \date 26-Oct-2010
5 #include <string>
6 #include <vector>
7 #include <boxm2/boxm2_scene.h>
8 #include "testlib/testlib_test.h"
9 #include "testlib/testlib_root_dir.h"
10 #include "vgl/vgl_point_3d.h"
11 #include "vpl/vpl.h"
test_scene()12 void test_scene()
13 {
14 //test xml file
15 std::string test_dir = testlib_root_dir()+ "/contrib/brl/bseg/boxm2/tests/";
16 std::string test_file = test_dir + "test.xml";
17
18 //create block metadata
19 std::map<boxm2_block_id, boxm2_block_metadata> blocks;
20 for (int i=0; i<2; i++) {
21 for (int j=0; j<2; j++) {
22 double big_block_side = 2.0;
23 boxm2_block_id id(i,j,0);
24 boxm2_block_metadata data;
25 data.id_ = id;
26 data.local_origin_ = vgl_point_3d<double>(big_block_side*i, big_block_side*j, 0.0);
27 data.sub_block_dim_ = vgl_vector_3d<double>(.2, .2, .2);
28 data.sub_block_num_ = vgl_vector_3d<unsigned>(10, 10, 10);
29 data.init_level_ = 1;
30 data.max_level_ = 4;
31 data.max_mb_ = 400;
32 data.p_init_ = .001;
33 data.version_ = 1;
34
35 //push it into the map
36 blocks[id] = data;
37 }
38 }
39
40 //create scene
41 boxm2_scene scene;
42 scene.set_local_origin(vgl_point_3d<double>(0.0, 0.0, 0.0));
43 scene.set_rpc_origin(vgl_point_3d<double>(0.0, 0.0, 0.0));
44 vpgl_lvcs lvcs;
45 scene.set_lvcs(lvcs);
46 scene.set_xml_path(test_file);
47 scene.set_data_path(test_dir);
48 scene.set_blocks(blocks);
49 scene.save_scene();
50
51 //create test scene
52 boxm2_scene test_scene_data(test_file);
53 std::cout<<test_scene_data<<std::endl;
54
55 //delete file created
56 vpl_unlink(test_file.c_str());
57 vgl_box_3d<double> bb;
58 vgl_point_3d<double> pmin(-5.0, -5.0, -5.0);
59 vgl_point_3d<double> pmax( 5.0, 5.0, 5.0);
60 bb.add(pmin); bb.add(pmax);
61 double sub_block_len = 0.2;
62 std::vector<std::string> prefixes;
63 prefixes.emplace_back("boxm2_mog3_grey");
64 prefixes.emplace_back("boxm2_num_obs");
65 boxm2_scene scene_one_block(test_dir, "scene_1b", "scene_data", prefixes, bb, sub_block_len);
66 TEST("valid one block scene", scene_one_block.local_origin() == pmin, true);
67 }
68
69
70 TESTMAIN(test_scene);
71