Skip to content

Commit

Permalink
add C++ tests
Browse files Browse the repository at this point in the history
  • Loading branch information
nicksanford committed Jul 3, 2023
1 parent cb9c232 commit ed2437e
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 11 deletions.
7 changes: 3 additions & 4 deletions cartofacade/capi.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,15 +259,14 @@ func (vc *Carto) getInternalState() ([]byte, error) {
return nil, err
}

interalState := bstringToByteSlice(value.internal_state)

status = C.viam_carto_get_internal_state_response_destroy(&value)
if err := toError(status); err != nil {
return nil, err
}

if value.internal_state != nil {
return bstringToByteSlice(value.internal_state), nil
}
return nil, errors.New("nil internal state")
return interalState, nil
}

// this function is only used for testing purposes, but needs to be in this file as CGo is not supported in go test files
Expand Down
3 changes: 2 additions & 1 deletion viam-cartographer/src/carto_facade/carto_facade.cc
Original file line number Diff line number Diff line change
Expand Up @@ -605,7 +605,8 @@ void CartoFacade::GetPointCloudMap(viam_carto_get_point_cloud_map_response *r) {
// https://viam.atlassian.net/browse/RSDK-3878
void CartoFacade::GetInternalState(viam_carto_get_internal_state_response *r) {
boost::uuids::uuid uuid = boost::uuids::random_generator()();
std::string filename = path_to_internal_state + "/" + "temp_internal_state_" +
std::string filename = path_to_internal_state + "/" +
"temp_internal_state_" +
boost::uuids::to_string(uuid) + ".pbstream";
{
std::lock_guard<std::mutex> lk(map_builder_mutex);
Expand Down
62 changes: 56 additions & 6 deletions viam-cartographer/src/carto_facade/carto_facade_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -616,6 +616,28 @@ BOOST_AUTO_TEST_CASE(CartoFacade_demo) {
VIAM_CARTO_POINTCLOUD_MAP_EMPTY);
}

// GetInternalState
// Every call to AddSensorReading after the first one (for some
// unknown reason) should be persisted in the the internal state.
int last_internal_state_response_size = 0;
{
BOOST_TEST(viam_carto_get_internal_state_response_destroy(nullptr) ==
VIAM_CARTO_GET_INTERNAL_STATE_RESPONSE_INVLALID);
BOOST_TEST(viam_carto_get_internal_state(nullptr, nullptr) ==
VIAM_CARTO_VC_INVALID);
BOOST_TEST(viam_carto_get_internal_state(vc, nullptr) ==
VIAM_CARTO_GET_INTERNAL_STATE_RESPONSE_INVLALID);

viam_carto_get_internal_state_response isr;
BOOST_TEST(viam_carto_get_internal_state(vc, &isr) ==
VIAM_CARTO_SUCCESS);
BOOST_TEST(blength(isr.internal_state) >
last_internal_state_response_size);
last_internal_state_response_size = blength(isr.internal_state);
BOOST_TEST(viam_carto_get_internal_state_response_destroy(&isr) ==
VIAM_CARTO_SUCCESS);
}

// GetPosition unchanged from failed AddSensorReading requests
{
viam_carto_get_position_response pr;
Expand Down Expand Up @@ -678,6 +700,19 @@ BOOST_AUTO_TEST_CASE(CartoFacade_demo) {
VIAM_CARTO_POINTCLOUD_MAP_EMPTY);
}

{
viam_carto_get_internal_state_response isr;
BOOST_TEST(viam_carto_get_internal_state(vc, &isr) ==
VIAM_CARTO_SUCCESS);
// special case: apparently the first call to AddSensorReading doesn't
// change the internal state, but subsequent calls do.
BOOST_TEST(blength(isr.internal_state) ==
last_internal_state_response_size);
last_internal_state_response_size = blength(isr.internal_state);
BOOST_TEST(viam_carto_get_internal_state_response_destroy(&isr) ==
VIAM_CARTO_SUCCESS);
}

// second sensor reading
{
VLOG(1) << "viam_carto_add_sensor_reading 2";
Expand Down Expand Up @@ -725,6 +760,17 @@ BOOST_AUTO_TEST_CASE(CartoFacade_demo) {
VIAM_CARTO_SUCCESS);
}

{
viam_carto_get_internal_state_response isr;
BOOST_TEST(viam_carto_get_internal_state(vc, &isr) ==
VIAM_CARTO_SUCCESS);
BOOST_TEST(blength(isr.internal_state) >
last_internal_state_response_size);
last_internal_state_response_size = blength(isr.internal_state);
BOOST_TEST(viam_carto_get_internal_state_response_destroy(&isr) ==
VIAM_CARTO_SUCCESS);
}

// third sensor reading
{
VLOG(1) << "viam_carto_add_sensor_reading 3";
Expand Down Expand Up @@ -754,12 +800,16 @@ BOOST_AUTO_TEST_CASE(CartoFacade_demo) {
VIAM_CARTO_SUCCESS);
}

// GetInternalState
viam_carto_get_internal_state_response isr;
BOOST_TEST(viam_carto_get_internal_state(vc, &isr) == VIAM_CARTO_SUCCESS);

BOOST_TEST(viam_carto_get_internal_state_response_destroy(&isr) ==
VIAM_CARTO_SUCCESS);
{
viam_carto_get_internal_state_response isr;
BOOST_TEST(viam_carto_get_internal_state(vc, &isr) ==
VIAM_CARTO_SUCCESS);
BOOST_TEST(blength(isr.internal_state) >
last_internal_state_response_size);
last_internal_state_response_size = blength(isr.internal_state);
BOOST_TEST(viam_carto_get_internal_state_response_destroy(&isr) ==
VIAM_CARTO_SUCCESS);
}

// Stop
BOOST_TEST(viam_carto_stop(vc) == VIAM_CARTO_SUCCESS);
Expand Down

0 comments on commit ed2437e

Please sign in to comment.