Skip to content

Commit 305e2a8

Browse files
committed
mock and test stubs
1 parent 83444b3 commit 305e2a8

File tree

4 files changed

+235
-0
lines changed

4 files changed

+235
-0
lines changed

src/viam/sdk/tests/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ target_sources(viamsdk_test
3030
mocks/mock_motor.cpp
3131
mocks/mock_motion.cpp
3232
mocks/mock_movement_sensor.cpp
33+
mocks/mock_navigation.cpp
3334
mocks/mock_pose_tracker.cpp
3435
mocks/mock_power_sensor.cpp
3536
mocks/mock_sensor.cpp
@@ -55,6 +56,7 @@ viamcppsdk_add_boost_test(test_mlmodel.cpp)
5556
viamcppsdk_add_boost_test(test_motor.cpp)
5657
viamcppsdk_add_boost_test(test_motion.cpp)
5758
viamcppsdk_add_boost_test(test_movement_sensor.cpp)
59+
viamcppsdk_add_boost_test(test_navigation.cpp)
5860
viamcppsdk_add_boost_test(test_pose_tracker.cpp)
5961
viamcppsdk_add_boost_test(test_power_sensor.cpp)
6062
viamcppsdk_add_boost_test(test_proto_value.cpp)
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#include <viam/sdk/tests/mocks/mock_navigation.hpp>
2+
3+
#include <chrono>
4+
5+
#include <viam/sdk/common/private/utils.hpp>
6+
#include <viam/sdk/common/utils.hpp>
7+
#include <viam/sdk/services/motion.hpp>
8+
#include <viam/sdk/spatialmath/geometry.hpp>
9+
#include <viam/sdk/spatialmath/orientation_types.hpp>
10+
#include <viam/sdk/tests/test_utils.hpp>
11+
12+
namespace viam {
13+
namespace sdktests {
14+
namespace navigation {
15+
16+
using namespace viam::sdk;
17+
18+
Navigation::Mode MockNav::get_mode(const ProtoStruct& extra) {
19+
return mode;
20+
}
21+
22+
void MockNav::set_mode(const Mode mode, const ProtoStruct& extra) {
23+
this->mode = mode;
24+
}
25+
26+
Navigation::LocationResponse MockNav::get_location(const ProtoStruct& extra) {
27+
return loc;
28+
}
29+
30+
std::unique_ptr<std::vector<Navigation::Waypoint>> MockNav::get_waypoints(
31+
const ProtoStruct& extra) {
32+
return std::make_unique<std::vector<Waypoint>>(waypoints);
33+
}
34+
35+
void MockNav::add_waypoint(const geo_point& location, const ProtoStruct& extra) {
36+
waypoints.push_back(Waypoint{std::to_string(next_waypoint_id++), location});
37+
}
38+
39+
void MockNav::remove_waypoint(const std::string id, const ProtoStruct& extra) {
40+
for (auto it = waypoints.begin(); it != waypoints.end(); ++it) {
41+
if (it->id == id) {
42+
waypoints.erase(it);
43+
break;
44+
}
45+
}
46+
}
47+
48+
std::unique_ptr<std::vector<geo_geometry>> MockNav::get_obstacles(const ProtoStruct& extra) {
49+
return std::make_unique<std::vector<geo_geometry>>(obstacles);
50+
}
51+
52+
std::unique_ptr<std::vector<Navigation::Path>> MockNav::get_paths(const ProtoStruct& extra) {
53+
return std::make_unique<std::vector<Path>>(paths);
54+
}
55+
56+
Navigation::Properties MockNav::get_properties() {
57+
return Properties{map_type};
58+
}
59+
60+
ProtoStruct MockNav::do_command(const ProtoStruct& command) {
61+
return ProtoStruct{};
62+
}
63+
64+
} // namespace navigation
65+
} // namespace sdktests
66+
} // namespace viam
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
#pragma once
2+
3+
// #include <viam/sdk/common/pose.hpp>
4+
// #include <viam/sdk/common/proto_value.hpp>
5+
// #include <viam/sdk/resource/resource_api.hpp>
6+
// #include <viam/sdk/services/motion.hpp>
7+
#include <viam/sdk/services/navigation.hpp>
8+
// #include <viam/sdk/spatialmath/geometry.hpp>
9+
10+
namespace viam {
11+
namespace sdktests {
12+
namespace navigation {
13+
14+
using namespace sdk;
15+
16+
class MockNav : public sdk::Navigation {
17+
public:
18+
Mode get_mode(const ProtoStruct& extra) override;
19+
void set_mode(const Mode mode, const ProtoStruct& extra) override;
20+
LocationResponse get_location(const ProtoStruct& extra) override;
21+
std::unique_ptr<std::vector<Waypoint>> get_waypoints(const ProtoStruct& extra) override;
22+
void add_waypoint(const geo_point& location, const ProtoStruct& extra) override;
23+
void remove_waypoint(const std::string id, const ProtoStruct& extra) override;
24+
std::unique_ptr<std::vector<geo_geometry>> get_obstacles(const ProtoStruct& extra) override;
25+
std::unique_ptr<std::vector<Path>> get_paths(const ProtoStruct& extra) override;
26+
Properties get_properties() override;
27+
ProtoStruct do_command(const ProtoStruct& command) override;
28+
29+
Mode mode;
30+
LocationResponse loc;
31+
std::vector<Waypoint> waypoints;
32+
int next_waypoint_id = 0;
33+
std::vector<geo_geometry> obstacles;
34+
std::vector<Path> paths;
35+
MapType map_type;
36+
};
37+
38+
// sdk::pose_in_frame init_fake_pose();
39+
// sdk::pose_in_frame fake_pose();
40+
41+
// sdk::Name fake_component_name();
42+
// sdk::Name fake_slam_name();
43+
// sdk::Name fake_movement_sensor_name();
44+
// sdk::geo_point fake_geo_point();
45+
// std::vector<sdk::geo_geometry> fake_obstacles();
46+
// std::shared_ptr<sdk::motion_configuration> fake_motion_configuration();
47+
// std::vector<sdk::geo_geometry> fake_bounding_regions();
48+
49+
// class MockMotion : public sdk::Motion {
50+
// public:
51+
// bool move(const sdk::pose_in_frame& destination,
52+
// const sdk::Name& component_name,
53+
// const std::shared_ptr<sdk::WorldState>& world_state,
54+
// const std::shared_ptr<constraints>& constraints,
55+
// const sdk::ProtoStruct& extra) override;
56+
57+
// std::string move_on_map(const sdk::pose& destination,
58+
// const sdk::Name& component_name,
59+
// const sdk::Name& slam_name,
60+
// const std::shared_ptr<sdk::motion_configuration>&
61+
// motion_configuration, const std::vector<sdk::GeometryConfig>&
62+
// obstacles, const sdk::ProtoStruct& extra) override;
63+
64+
// std::string move_on_globe(
65+
// const sdk::geo_point& destination,
66+
// const boost::optional<double>& heading,
67+
// const sdk::Name& component_name,
68+
// const sdk::Name& movement_sensor_name,
69+
// const std::vector<sdk::geo_geometry>& obstacles,
70+
// const std::shared_ptr<sdk::motion_configuration>& motion_configuration,
71+
// const std::vector<sdk::geo_geometry>& bounding_regions,
72+
// const sdk::ProtoStruct& extra) override;
73+
74+
// sdk::pose_in_frame get_pose(
75+
// const sdk::Name& component_name,
76+
// const std::string& destination_frame,
77+
// const std::vector<sdk::WorldState::transform>& supplemental_transforms,
78+
// const sdk::ProtoStruct& extra) override;
79+
80+
// plan_with_status get_plan(const sdk::Name& component_name,
81+
// const std::string& execution_id,
82+
// const sdk::ProtoStruct& extra) override;
83+
84+
// std::pair<plan_with_status, std::vector<plan_with_status>> get_plan_with_replan_history(
85+
// const sdk::Name& component_name,
86+
// const std::string& execution_id,
87+
// const sdk::ProtoStruct& extra) override;
88+
89+
// plan_with_status get_latest_plan(const sdk::Name& component_name,
90+
// const sdk::ProtoStruct& extra) override;
91+
92+
// std::pair<plan_with_status, std::vector<plan_with_status>>
93+
// get_latest_plan_with_replan_history(
94+
// const sdk::Name& component_name, const sdk::ProtoStruct& extra) override;
95+
96+
// std::vector<plan_status_with_id> list_plan_statuses(const sdk::ProtoStruct& extra) override;
97+
98+
// std::vector<plan_status_with_id> list_active_plan_statuses(
99+
// const sdk::ProtoStruct& extra) override;
100+
101+
// void stop_plan(const sdk::Name& name, const sdk::ProtoStruct& extra) override;
102+
103+
// sdk::ProtoStruct do_command(const sdk::ProtoStruct& command) override;
104+
// static std::shared_ptr<MockMotion> get_mock_motion();
105+
// static plan_status fake_plan_status();
106+
// static plan_with_status fake_plan_with_status();
107+
// static plan_status_with_id fake_plan_status_with_id();
108+
109+
// // These variables allow the testing infra to `peek` into the mock
110+
// // and ensure that the correct values were passed
111+
// sdk::pose_in_frame current_location;
112+
// sdk::pose peek_current_pose;
113+
// sdk::Name peek_component_name;
114+
// sdk::Name peek_movement_sensor_name;
115+
// sdk::Name peek_slam_name;
116+
// sdk::geo_point peek_destination;
117+
// std::string peek_destination_frame;
118+
// double peek_heading;
119+
// bool peek_stop_plan_called = false;
120+
// std::string peek_debug_key;
121+
// std::vector<sdk::geo_geometry> peek_obstacles;
122+
// std::vector<sdk::GeometryConfig> peek_map_obstacles;
123+
// std::shared_ptr<constraints> peek_constraints;
124+
// std::shared_ptr<sdk::motion_configuration> peek_motion_configuration;
125+
// std::vector<sdk::geo_geometry> peek_bounding_regions;
126+
// std::shared_ptr<sdk::WorldState> peek_world_state;
127+
128+
// MockMotion(std::string name)
129+
// : sdk::Motion(std::move(name)), current_location(init_fake_pose()){};
130+
// };
131+
132+
} // namespace navigation
133+
} // namespace sdktests
134+
} // namespace viam
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#define BOOST_TEST_MODULE test module test_navigation
2+
3+
#include <boost/test/included/unit_test.hpp>
4+
5+
#include <viam/sdk/services/navigation.hpp>
6+
#include <viam/sdk/tests/mocks/mock_navigation.hpp>
7+
8+
namespace viam {
9+
namespace sdktests {
10+
namespace navigation {
11+
12+
using namespace viam::sdk;
13+
14+
BOOST_AUTO_TEST_CASE(nav_mode) {
15+
// test get_mode and set_mode
16+
}
17+
18+
BOOST_AUTO_TEST_CASE(nav_get_location) {
19+
}
20+
21+
BOOST_AUTO_TEST_CASE(nav_waypoints) {
22+
// get, add, remove
23+
}
24+
25+
BOOST_AUTO_TEST_CASE(nav_obstacles) {
26+
}
27+
28+
BOOST_AUTO_TEST_CASE(nav_paths) {
29+
}
30+
31+
} // namespace navigation
32+
} // namespace sdktests
33+
} // namespace viam

0 commit comments

Comments
 (0)