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