From 9083afa6a8050f00cd5b0cef0aa13b12f11c84a1 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 23 Feb 2017 11:43:00 +0200 Subject: [PATCH 01/25] Unit testing --- .travis.yml | 1 + test/CMakeLists.txt | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/.travis.yml b/.travis.yml index dd28c8b..56f8361 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,4 +8,5 @@ os: script: - cmake . - make all +- ctest test diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 04ca74e..a2413be 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -175,3 +175,30 @@ TARGET_LINK_LIBRARIES(PreviewFile route4me) ADD_EXECUTABLE(UploadFile UploadFile.cpp) TARGET_LINK_LIBRARIES(UploadFile route4me) +ENABLE_TESTING() + +ADD_TEST(RouteManifest RouteManifest) +ADD_TEST(GetRoute GetRoute) +ADD_TEST(DuplicateRoute DuplicateRoute) +ADD_TEST(GetRouteByPoints GetRouteByPoints) +ADD_TEST(GetRouteByDirections GetRouteByDirections) +ADD_TEST(GetRouteByText GetRouteByText) +ADD_TEST(UpdateRoute UpdateRoute) +ADD_TEST(RouteDestinations RouteDestinations) +ADD_TEST(AddressBook AddressBook) +ADD_TEST(Notes Notes) +ADD_TEST(Users Users) +ADD_TEST(Orders Orders) +ADD_TEST(GetOrders GetOrders) +ADD_TEST(TeamActivities TeamActivities) +ADD_TEST(Zones Zones) +ADD_TEST(Territory Territory) +ADD_TEST(GetAllRoutes GetAllRoutes) +ADD_TEST(RouteStatus RouteStatus) +ADD_TEST(SingleDriverRoundTrip SingleDriverRoundTrip) +ADD_TEST(ActivitiesByType ActivitiesByType) +ADD_TEST(AssetTracking AssetTracking) +ADD_TEST(GetLocationHistory GetLocationHistory) +ADD_TEST(GetOptimization GetOptimization) +ADD_TEST(BatchGeocoding BatchGeocoding) +ADD_TEST(GetConfig GetConfig) From e3e9d71cc1cc652a94486ac15ffee1691fa27f08 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 23 Feb 2017 12:05:05 +0200 Subject: [PATCH 02/25] Unit testing --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 56f8361..de7ac26 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,5 +8,5 @@ os: script: - cmake . - make all -- ctest test +- ctest From e79eccf03643dfa12e04e52d2296ed05c55f17c7 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 23 Feb 2017 13:51:34 +0200 Subject: [PATCH 03/25] Unit testing --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index de7ac26..d1853ef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,5 +8,5 @@ os: script: - cmake . - make all -- ctest +- cd test && ctest . From f7dae1066a0ae269cb52cbe899cee31295b0ac28 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 23 Feb 2017 14:08:14 +0200 Subject: [PATCH 04/25] Build fix --- test/CMakeLists.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a2413be..2d6213a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -177,19 +177,15 @@ TARGET_LINK_LIBRARIES(UploadFile route4me) ENABLE_TESTING() -ADD_TEST(RouteManifest RouteManifest) -ADD_TEST(GetRoute GetRoute) ADD_TEST(DuplicateRoute DuplicateRoute) ADD_TEST(GetRouteByPoints GetRouteByPoints) ADD_TEST(GetRouteByDirections GetRouteByDirections) ADD_TEST(GetRouteByText GetRouteByText) ADD_TEST(UpdateRoute UpdateRoute) -ADD_TEST(RouteDestinations RouteDestinations) ADD_TEST(AddressBook AddressBook) ADD_TEST(Notes Notes) ADD_TEST(Users Users) ADD_TEST(Orders Orders) -ADD_TEST(GetOrders GetOrders) ADD_TEST(TeamActivities TeamActivities) ADD_TEST(Zones Zones) ADD_TEST(Territory Territory) From 0a04a6502742a060f41045831bc46ecb2130d0f3 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Feb 2017 11:54:34 +0200 Subject: [PATCH 05/25] Splitting examples and unit tests --- CMakeLists.txt | 5 +- {test => examples}/Activities.cpp | 0 {test => examples}/ActivitiesByType.cpp | 0 examples/ActivitiesTest.cpp | 21 ++ .../AddAddressToOptimization.cpp | 0 {test => examples}/AddConfig.cpp | 0 {test => examples}/AddOrder.cpp | 0 {test => examples}/AddressBook.cpp | 0 {test => examples}/AssetTracking.cpp | 0 {test => examples}/AvoidanceZones.cpp | 0 {test => examples}/BatchGeocoding.cpp | 0 examples/CMakeLists.txt | 177 +++++++++++++++ {test => examples}/DeleteMember.cpp | 0 {test => examples}/DeleteRoute.cpp | 0 {test => examples}/DuplicateRoute.cpp | 0 {test => examples}/EditMember.cpp | 0 {test => examples}/GetAllStreets.cpp | 0 {test => examples}/GetConfig.cpp | 0 {test => examples}/GetCustomOrders.cpp | 0 {test => examples}/GetLocationHistory.cpp | 0 {test => examples}/GetMultipleRoutes.cpp | 0 {test => examples}/GetOptimization.cpp | 0 {test => examples}/GetOptimizations.cpp | 0 {test => examples}/GetOrdersByDate.cpp | 0 {test => examples}/GetOrdersQuery.cpp | 0 {test => examples}/GetRoute.cpp | 0 {test => examples}/GetRouteByDirections.cpp | 0 {test => examples}/GetRouteByPoints.cpp | 0 {test => examples}/GetRouteByText.cpp | 0 {test => examples}/GetSingleStreet.cpp | 0 {test => examples}/GetStreetsLimited.cpp | 0 {test => examples}/GetStreetsZipHouse.cpp | 0 {test => examples}/GetSubUsers.cpp | 0 {test => examples}/GetVehicles.cpp | 0 {test => examples}/LogActivities.cpp | 0 {test => examples}/Login.cpp | 0 examples/MarkVisited.cpp | 31 +++ {test => examples}/MergeRoutes.cpp | 3 +- .../MultipleDepotMultipleDriver.cpp | 0 ...MultipleDepotMultipleDriverTimeWindows.cpp | 0 {test => examples}/Notes.cpp | 0 {test => examples}/OptimizeAndReoptimize.cpp | 2 +- {test => examples}/Orders.cpp | 0 {test => examples}/PreviewFile.cpp | 0 {test => examples}/PurchaseLicense.cpp | 0 {test => examples}/ReOptimization.cpp | 2 +- {test => examples}/Register.cpp | 0 {test => examples}/RemoveOptimization.cpp | 0 {test => examples}/ReverseGeocoding.cpp | 0 {test => examples}/RouteDestinations.cpp | 0 {test => examples}/RouteManifest.cpp | 0 {test => examples}/RouteStatus.cpp | 0 {test => examples}/SetGPSPosition.cpp | 4 +- {test => examples}/ShareRoutes.cpp | 0 {test => examples}/SingleDriverRoundTrip.cpp | 0 .../SingleDriverRoute10Stops.cpp | 0 {test => examples}/TeamActivities.cpp | 0 {test => examples}/Territory.cpp | 0 .../TrackDeviceLastLocationHistory.cpp | 0 {test => examples}/UpdateRoute.cpp | 0 {test => examples}/UploadFile.cpp | 0 {test => examples}/Users.cpp | 0 {test => examples}/ValidateSession.cpp | 0 {test => examples}/add_account_data.json | 0 {test => examples}/add_address_to_route.json | 0 {test => examples}/add_order.json | 0 {test => examples}/add_order_data.json | 0 {test => examples}/add_order_to_route.json | 0 .../add_order_to_route_data.json | 0 {test => examples}/addr.json | 0 .../address_for_optimization.json | 0 .../app_purchase_user_license_data.json | 0 examples/cmake_install.cmake | 34 +++ {test => examples}/member_create_v4_data.json | 0 {test => examples}/member_delete_data.json | 0 {test => examples}/member_edit_data.json | 0 {test => examples}/poly.json | 0 {test => examples}/territory.json | 0 {test => examples}/update_route_data.json | 0 .../update_route_destination_custom_data.json | 0 test/ActivitiesTest.cpp | 21 ++ test/CMakeLists.txt | 201 +----------------- 82 files changed, 298 insertions(+), 203 deletions(-) rename {test => examples}/Activities.cpp (100%) rename {test => examples}/ActivitiesByType.cpp (100%) create mode 100644 examples/ActivitiesTest.cpp rename {test => examples}/AddAddressToOptimization.cpp (100%) rename {test => examples}/AddConfig.cpp (100%) rename {test => examples}/AddOrder.cpp (100%) rename {test => examples}/AddressBook.cpp (100%) rename {test => examples}/AssetTracking.cpp (100%) rename {test => examples}/AvoidanceZones.cpp (100%) rename {test => examples}/BatchGeocoding.cpp (100%) create mode 100644 examples/CMakeLists.txt rename {test => examples}/DeleteMember.cpp (100%) rename {test => examples}/DeleteRoute.cpp (100%) rename {test => examples}/DuplicateRoute.cpp (100%) rename {test => examples}/EditMember.cpp (100%) rename {test => examples}/GetAllStreets.cpp (100%) rename {test => examples}/GetConfig.cpp (100%) rename {test => examples}/GetCustomOrders.cpp (100%) rename {test => examples}/GetLocationHistory.cpp (100%) rename {test => examples}/GetMultipleRoutes.cpp (100%) rename {test => examples}/GetOptimization.cpp (100%) rename {test => examples}/GetOptimizations.cpp (100%) rename {test => examples}/GetOrdersByDate.cpp (100%) rename {test => examples}/GetOrdersQuery.cpp (100%) rename {test => examples}/GetRoute.cpp (100%) rename {test => examples}/GetRouteByDirections.cpp (100%) rename {test => examples}/GetRouteByPoints.cpp (100%) rename {test => examples}/GetRouteByText.cpp (100%) rename {test => examples}/GetSingleStreet.cpp (100%) rename {test => examples}/GetStreetsLimited.cpp (100%) rename {test => examples}/GetStreetsZipHouse.cpp (100%) rename {test => examples}/GetSubUsers.cpp (100%) rename {test => examples}/GetVehicles.cpp (100%) rename {test => examples}/LogActivities.cpp (100%) rename {test => examples}/Login.cpp (100%) create mode 100644 examples/MarkVisited.cpp rename {test => examples}/MergeRoutes.cpp (87%) rename {test => examples}/MultipleDepotMultipleDriver.cpp (100%) rename {test => examples}/MultipleDepotMultipleDriverTimeWindows.cpp (100%) rename {test => examples}/Notes.cpp (100%) rename {test => examples}/OptimizeAndReoptimize.cpp (98%) rename {test => examples}/Orders.cpp (100%) rename {test => examples}/PreviewFile.cpp (100%) rename {test => examples}/PurchaseLicense.cpp (100%) rename {test => examples}/ReOptimization.cpp (99%) rename {test => examples}/Register.cpp (100%) rename {test => examples}/RemoveOptimization.cpp (100%) rename {test => examples}/ReverseGeocoding.cpp (100%) rename {test => examples}/RouteDestinations.cpp (100%) rename {test => examples}/RouteManifest.cpp (100%) rename {test => examples}/RouteStatus.cpp (100%) rename {test => examples}/SetGPSPosition.cpp (97%) rename {test => examples}/ShareRoutes.cpp (100%) rename {test => examples}/SingleDriverRoundTrip.cpp (100%) rename {test => examples}/SingleDriverRoute10Stops.cpp (100%) rename {test => examples}/TeamActivities.cpp (100%) rename {test => examples}/Territory.cpp (100%) rename {test => examples}/TrackDeviceLastLocationHistory.cpp (100%) rename {test => examples}/UpdateRoute.cpp (100%) rename {test => examples}/UploadFile.cpp (100%) rename {test => examples}/Users.cpp (100%) rename {test => examples}/ValidateSession.cpp (100%) rename {test => examples}/add_account_data.json (100%) rename {test => examples}/add_address_to_route.json (100%) rename {test => examples}/add_order.json (100%) rename {test => examples}/add_order_data.json (100%) rename {test => examples}/add_order_to_route.json (100%) rename {test => examples}/add_order_to_route_data.json (100%) rename {test => examples}/addr.json (100%) rename {test => examples}/address_for_optimization.json (100%) rename {test => examples}/app_purchase_user_license_data.json (100%) create mode 100644 examples/cmake_install.cmake rename {test => examples}/member_create_v4_data.json (100%) rename {test => examples}/member_delete_data.json (100%) rename {test => examples}/member_edit_data.json (100%) rename {test => examples}/poly.json (100%) rename {test => examples}/territory.json (100%) rename {test => examples}/update_route_data.json (100%) rename {test => examples}/update_route_destination_custom_data.json (100%) create mode 100644 test/ActivitiesTest.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f59bf5..13d5c5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,10 +7,12 @@ set (CPPROUTE4ME_VERSION_MINOR 0) # Checking for dependencies FIND_PACKAGE(CURL REQUIRED) +FIND_PACKAGE(GTest REQUIRED) # Set up include pathes INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(${CPPROUTE4ME_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIRS}) # Set up output paths set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib) @@ -18,4 +20,5 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib) # Set up source directories ADD_SUBDIRECTORY(src bin) -ADD_SUBDIRECTORY(test test) \ No newline at end of file +ADD_SUBDIRECTORY(examples examples) +ADD_SUBDIRECTORY(test test) diff --git a/test/Activities.cpp b/examples/Activities.cpp similarity index 100% rename from test/Activities.cpp rename to examples/Activities.cpp diff --git a/test/ActivitiesByType.cpp b/examples/ActivitiesByType.cpp similarity index 100% rename from test/ActivitiesByType.cpp rename to examples/ActivitiesByType.cpp diff --git a/examples/ActivitiesTest.cpp b/examples/ActivitiesTest.cpp new file mode 100644 index 0000000..c30b5eb --- /dev/null +++ b/examples/ActivitiesTest.cpp @@ -0,0 +1,21 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +TEST(ActvitiesTest, GetAll) +{ + CRoute4Me::init(); + CRoute4Me route(KEY); + int ret = route.get_all_activities(); + ASSERT_EQ(0, ret); + route.cleanup(); +} + +int main(int argc, char** argv) +{ + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + return 0; +} diff --git a/test/AddAddressToOptimization.cpp b/examples/AddAddressToOptimization.cpp similarity index 100% rename from test/AddAddressToOptimization.cpp rename to examples/AddAddressToOptimization.cpp diff --git a/test/AddConfig.cpp b/examples/AddConfig.cpp similarity index 100% rename from test/AddConfig.cpp rename to examples/AddConfig.cpp diff --git a/test/AddOrder.cpp b/examples/AddOrder.cpp similarity index 100% rename from test/AddOrder.cpp rename to examples/AddOrder.cpp diff --git a/test/AddressBook.cpp b/examples/AddressBook.cpp similarity index 100% rename from test/AddressBook.cpp rename to examples/AddressBook.cpp diff --git a/test/AssetTracking.cpp b/examples/AssetTracking.cpp similarity index 100% rename from test/AssetTracking.cpp rename to examples/AssetTracking.cpp diff --git a/test/AvoidanceZones.cpp b/examples/AvoidanceZones.cpp similarity index 100% rename from test/AvoidanceZones.cpp rename to examples/AvoidanceZones.cpp diff --git a/test/BatchGeocoding.cpp b/examples/BatchGeocoding.cpp similarity index 100% rename from test/BatchGeocoding.cpp rename to examples/BatchGeocoding.cpp diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt new file mode 100644 index 0000000..04ca74e --- /dev/null +++ b/examples/CMakeLists.txt @@ -0,0 +1,177 @@ +ADD_EXECUTABLE(RouteManifest RouteManifest.cpp) +TARGET_LINK_LIBRARIES(RouteManifest route4me) + +ADD_EXECUTABLE(GetRoute GetRoute.cpp) +TARGET_LINK_LIBRARIES(GetRoute route4me) + +ADD_EXECUTABLE(DuplicateRoute DuplicateRoute.cpp) +TARGET_LINK_LIBRARIES(DuplicateRoute route4me) + +ADD_EXECUTABLE(GetRouteByPoints GetRouteByPoints.cpp) +TARGET_LINK_LIBRARIES(GetRouteByPoints route4me) + +ADD_EXECUTABLE(GetRouteByDirections GetRouteByDirections.cpp) +TARGET_LINK_LIBRARIES(GetRouteByDirections route4me) + +ADD_EXECUTABLE(GetRouteByText GetRouteByText.cpp) +TARGET_LINK_LIBRARIES(GetRouteByText route4me) + +ADD_EXECUTABLE(UpdateRoute UpdateRoute.cpp) +TARGET_LINK_LIBRARIES(UpdateRoute route4me) + +ADD_EXECUTABLE(RouteDestinations RouteDestinations.cpp) +TARGET_LINK_LIBRARIES(RouteDestinations route4me) + +ADD_EXECUTABLE(AddressBook AddressBook.cpp) +TARGET_LINK_LIBRARIES(AddressBook route4me) + +ADD_EXECUTABLE(Notes Notes.cpp) +TARGET_LINK_LIBRARIES(Notes route4me) + +ADD_EXECUTABLE(Users Users.cpp) +TARGET_LINK_LIBRARIES(Users route4me) + +ADD_EXECUTABLE(Orders Orders.cpp) +TARGET_LINK_LIBRARIES(Orders route4me) + +ADD_EXECUTABLE(GetOrders GetOrdersByDate.cpp) +TARGET_LINK_LIBRARIES(GetOrders route4me) + +ADD_EXECUTABLE(GetCustomOrders GetCustomOrders.cpp) +TARGET_LINK_LIBRARIES(GetCustomOrders route4me) + +ADD_EXECUTABLE(GetOrdersQuery GetOrdersQuery.cpp) +TARGET_LINK_LIBRARIES(GetOrdersQuery route4me) + +ADD_EXECUTABLE(AddOrder AddOrder.cpp) +TARGET_LINK_LIBRARIES(AddOrder route4me) + +ADD_EXECUTABLE(TeamActivities TeamActivities.cpp) +TARGET_LINK_LIBRARIES(TeamActivities route4me) + +ADD_EXECUTABLE(LogActivities LogActivities.cpp) +TARGET_LINK_LIBRARIES(LogActivities route4me) + +ADD_EXECUTABLE(Activities Activities.cpp) +TARGET_LINK_LIBRARIES(Activities route4me) + +ADD_EXECUTABLE(Zones AvoidanceZones.cpp) +TARGET_LINK_LIBRARIES(Zones route4me) + +ADD_EXECUTABLE(Territory Territory.cpp) +TARGET_LINK_LIBRARIES(Territory route4me) + +ADD_EXECUTABLE(GetAllRoutes GetMultipleRoutes.cpp) +TARGET_LINK_LIBRARIES(GetAllRoutes route4me) + +ADD_EXECUTABLE(RouteStatus RouteStatus.cpp) +TARGET_LINK_LIBRARIES(RouteStatus route4me) + +ADD_EXECUTABLE(DeleteRoute DeleteRoute.cpp) +TARGET_LINK_LIBRARIES(DeleteRoute route4me) + +ADD_EXECUTABLE(SetGPSPosition SetGPSPosition.cpp) +TARGET_LINK_LIBRARIES(SetGPSPosition route4me) + +ADD_EXECUTABLE(TrackDeviceLastLocationHistory TrackDeviceLastLocationHistory.cpp) +TARGET_LINK_LIBRARIES(TrackDeviceLastLocationHistory route4me) + +ADD_EXECUTABLE(SingleDriverRoundTrip SingleDriverRoundTrip.cpp) +TARGET_LINK_LIBRARIES(SingleDriverRoundTrip route4me) + +ADD_EXECUTABLE(SingleDriverRoute10Stops SingleDriverRoute10Stops.cpp) +TARGET_LINK_LIBRARIES(SingleDriverRoute10Stops route4me) + +ADD_EXECUTABLE(MultipleDepotMultipleDriver MultipleDepotMultipleDriver.cpp) +TARGET_LINK_LIBRARIES(MultipleDepotMultipleDriver route4me) + +ADD_EXECUTABLE(MultipleDepotMultipleDriverTimeWindows MultipleDepotMultipleDriverTimeWindows.cpp) +TARGET_LINK_LIBRARIES(MultipleDepotMultipleDriverTimeWindows route4me) + +ADD_EXECUTABLE(ReOptimization ReOptimization.cpp) +TARGET_LINK_LIBRARIES(ReOptimization route4me) + +ADD_EXECUTABLE(GetOptimization GetOptimization.cpp) +TARGET_LINK_LIBRARIES(GetOptimization route4me) + +ADD_EXECUTABLE(GetOptimizations GetOptimizations.cpp) +TARGET_LINK_LIBRARIES(GetOptimizations route4me) + +ADD_EXECUTABLE(RemoveOptimization RemoveOptimization.cpp) +TARGET_LINK_LIBRARIES(RemoveOptimization route4me) + +ADD_EXECUTABLE(OptimizeAndReoptimize OptimizeAndReoptimize.cpp) +TARGET_LINK_LIBRARIES(OptimizeAndReoptimize route4me) + +ADD_EXECUTABLE(Login Login.cpp) +TARGET_LINK_LIBRARIES(Login route4me) + +ADD_EXECUTABLE(Register Register.cpp) +TARGET_LINK_LIBRARIES(Register route4me) + +ADD_EXECUTABLE(EditMember EditMember.cpp) +TARGET_LINK_LIBRARIES(EditMember route4me) + +ADD_EXECUTABLE(DeleteMember DeleteMember.cpp) +TARGET_LINK_LIBRARIES(DeleteMember route4me) + +ADD_EXECUTABLE(ActivitiesByType ActivitiesByType.cpp) +TARGET_LINK_LIBRARIES(ActivitiesByType route4me) + +ADD_EXECUTABLE(AssetTracking AssetTracking.cpp) +TARGET_LINK_LIBRARIES(AssetTracking route4me) + +ADD_EXECUTABLE(GetLocationHistory GetLocationHistory.cpp) +TARGET_LINK_LIBRARIES(GetLocationHistory route4me) + +ADD_EXECUTABLE(AddAddressToOptimization AddAddressToOptimization.cpp) +TARGET_LINK_LIBRARIES(AddAddressToOptimization route4me) + +ADD_EXECUTABLE(MergeRoutes MergeRoutes.cpp) +TARGET_LINK_LIBRARIES(MergeRoutes route4me) + +ADD_EXECUTABLE(ShareRoutes ShareRoutes.cpp) +TARGET_LINK_LIBRARIES(ShareRoutes route4me) + +ADD_EXECUTABLE(BatchGeocoding BatchGeocoding.cpp) +TARGET_LINK_LIBRARIES(BatchGeocoding route4me) + +ADD_EXECUTABLE(ReverseGeocoding ReverseGeocoding.cpp) +TARGET_LINK_LIBRARIES(ReverseGeocoding route4me) + +ADD_EXECUTABLE(GetSingleStreet GetSingleStreet.cpp) +TARGET_LINK_LIBRARIES(GetSingleStreet route4me) + +ADD_EXECUTABLE(GetAllStreets GetAllStreets.cpp) +TARGET_LINK_LIBRARIES(GetAllStreets route4me) + +ADD_EXECUTABLE(GetStreetsLimited GetStreetsLimited.cpp) +TARGET_LINK_LIBRARIES(GetStreetsLimited route4me) + +ADD_EXECUTABLE(GetStreetsZipHouse GetStreetsZipHouse.cpp) +TARGET_LINK_LIBRARIES(GetStreetsZipHouse route4me) + +ADD_EXECUTABLE(PurchaseLicense PurchaseLicense.cpp) +TARGET_LINK_LIBRARIES(PurchaseLicense route4me) + +ADD_EXECUTABLE(GetSubUsers GetSubUsers.cpp) +TARGET_LINK_LIBRARIES(GetSubUsers route4me) + +ADD_EXECUTABLE(ValidateSession ValidateSession.cpp) +TARGET_LINK_LIBRARIES(ValidateSession route4me) + +ADD_EXECUTABLE(AddConfig AddConfig.cpp) +TARGET_LINK_LIBRARIES(AddConfig route4me) + +ADD_EXECUTABLE(GetConfig GetConfig.cpp) +TARGET_LINK_LIBRARIES(GetConfig route4me) + +ADD_EXECUTABLE(GetVehicles GetVehicles.cpp) +TARGET_LINK_LIBRARIES(GetVehicles route4me) + +ADD_EXECUTABLE(PreviewFile PreviewFile.cpp) +TARGET_LINK_LIBRARIES(PreviewFile route4me) + +ADD_EXECUTABLE(UploadFile UploadFile.cpp) +TARGET_LINK_LIBRARIES(UploadFile route4me) + diff --git a/test/DeleteMember.cpp b/examples/DeleteMember.cpp similarity index 100% rename from test/DeleteMember.cpp rename to examples/DeleteMember.cpp diff --git a/test/DeleteRoute.cpp b/examples/DeleteRoute.cpp similarity index 100% rename from test/DeleteRoute.cpp rename to examples/DeleteRoute.cpp diff --git a/test/DuplicateRoute.cpp b/examples/DuplicateRoute.cpp similarity index 100% rename from test/DuplicateRoute.cpp rename to examples/DuplicateRoute.cpp diff --git a/test/EditMember.cpp b/examples/EditMember.cpp similarity index 100% rename from test/EditMember.cpp rename to examples/EditMember.cpp diff --git a/test/GetAllStreets.cpp b/examples/GetAllStreets.cpp similarity index 100% rename from test/GetAllStreets.cpp rename to examples/GetAllStreets.cpp diff --git a/test/GetConfig.cpp b/examples/GetConfig.cpp similarity index 100% rename from test/GetConfig.cpp rename to examples/GetConfig.cpp diff --git a/test/GetCustomOrders.cpp b/examples/GetCustomOrders.cpp similarity index 100% rename from test/GetCustomOrders.cpp rename to examples/GetCustomOrders.cpp diff --git a/test/GetLocationHistory.cpp b/examples/GetLocationHistory.cpp similarity index 100% rename from test/GetLocationHistory.cpp rename to examples/GetLocationHistory.cpp diff --git a/test/GetMultipleRoutes.cpp b/examples/GetMultipleRoutes.cpp similarity index 100% rename from test/GetMultipleRoutes.cpp rename to examples/GetMultipleRoutes.cpp diff --git a/test/GetOptimization.cpp b/examples/GetOptimization.cpp similarity index 100% rename from test/GetOptimization.cpp rename to examples/GetOptimization.cpp diff --git a/test/GetOptimizations.cpp b/examples/GetOptimizations.cpp similarity index 100% rename from test/GetOptimizations.cpp rename to examples/GetOptimizations.cpp diff --git a/test/GetOrdersByDate.cpp b/examples/GetOrdersByDate.cpp similarity index 100% rename from test/GetOrdersByDate.cpp rename to examples/GetOrdersByDate.cpp diff --git a/test/GetOrdersQuery.cpp b/examples/GetOrdersQuery.cpp similarity index 100% rename from test/GetOrdersQuery.cpp rename to examples/GetOrdersQuery.cpp diff --git a/test/GetRoute.cpp b/examples/GetRoute.cpp similarity index 100% rename from test/GetRoute.cpp rename to examples/GetRoute.cpp diff --git a/test/GetRouteByDirections.cpp b/examples/GetRouteByDirections.cpp similarity index 100% rename from test/GetRouteByDirections.cpp rename to examples/GetRouteByDirections.cpp diff --git a/test/GetRouteByPoints.cpp b/examples/GetRouteByPoints.cpp similarity index 100% rename from test/GetRouteByPoints.cpp rename to examples/GetRouteByPoints.cpp diff --git a/test/GetRouteByText.cpp b/examples/GetRouteByText.cpp similarity index 100% rename from test/GetRouteByText.cpp rename to examples/GetRouteByText.cpp diff --git a/test/GetSingleStreet.cpp b/examples/GetSingleStreet.cpp similarity index 100% rename from test/GetSingleStreet.cpp rename to examples/GetSingleStreet.cpp diff --git a/test/GetStreetsLimited.cpp b/examples/GetStreetsLimited.cpp similarity index 100% rename from test/GetStreetsLimited.cpp rename to examples/GetStreetsLimited.cpp diff --git a/test/GetStreetsZipHouse.cpp b/examples/GetStreetsZipHouse.cpp similarity index 100% rename from test/GetStreetsZipHouse.cpp rename to examples/GetStreetsZipHouse.cpp diff --git a/test/GetSubUsers.cpp b/examples/GetSubUsers.cpp similarity index 100% rename from test/GetSubUsers.cpp rename to examples/GetSubUsers.cpp diff --git a/test/GetVehicles.cpp b/examples/GetVehicles.cpp similarity index 100% rename from test/GetVehicles.cpp rename to examples/GetVehicles.cpp diff --git a/test/LogActivities.cpp b/examples/LogActivities.cpp similarity index 100% rename from test/LogActivities.cpp rename to examples/LogActivities.cpp diff --git a/test/Login.cpp b/examples/Login.cpp similarity index 100% rename from test/Login.cpp rename to examples/Login.cpp diff --git a/examples/MarkVisited.cpp b/examples/MarkVisited.cpp new file mode 100644 index 0000000..983e982 --- /dev/null +++ b/examples/MarkVisited.cpp @@ -0,0 +1,31 @@ +#include +#include "../include/route4me.h" + +#define KEY "11111111111111111111111111111111" + +using namespace std; + +int main() +{ + // global init + CRoute4Me::init(); + + CRoute4Me route(KEY, true); + + const char* route_id = "5C15E83A4BE005BCD1537955D28D51D7"; + const char* address_id = "5C15E83A4BE005BCD1537955D28D51D7"; + + if(route.mark_address_visited(route_id, address_id, true,1) == 0) + { + cout << "Marked:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl; + } + else + { + cout << "Failed to mark: " << route.get_err_code() << ": " << route.get_err_msg() << endl; + } + + // global cleanup + CRoute4Me::cleanup(); + + return 0; +} diff --git a/test/MergeRoutes.cpp b/examples/MergeRoutes.cpp similarity index 87% rename from test/MergeRoutes.cpp rename to examples/MergeRoutes.cpp index 71639dc..f671adf 100644 --- a/test/MergeRoutes.cpp +++ b/examples/MergeRoutes.cpp @@ -12,7 +12,8 @@ int main() CRoute4Me route(KEY, true); - const char* route_ids="075594D31563C05ACCEBCAA77D026B2D,6AF79B603C1B6C5AAC714CDD76687CC6"; + const char* route_ids="075594D31563C05ACCEBCAA77D026B2D"; + //6AF79B603C1B6C5AAC714CDD76687CC6"; const char* depot_address="11921 N Dickinson Dr, Fredericksburg, VA 22407, USA"; MapPoint point; diff --git a/test/MultipleDepotMultipleDriver.cpp b/examples/MultipleDepotMultipleDriver.cpp similarity index 100% rename from test/MultipleDepotMultipleDriver.cpp rename to examples/MultipleDepotMultipleDriver.cpp diff --git a/test/MultipleDepotMultipleDriverTimeWindows.cpp b/examples/MultipleDepotMultipleDriverTimeWindows.cpp similarity index 100% rename from test/MultipleDepotMultipleDriverTimeWindows.cpp rename to examples/MultipleDepotMultipleDriverTimeWindows.cpp diff --git a/test/Notes.cpp b/examples/Notes.cpp similarity index 100% rename from test/Notes.cpp rename to examples/Notes.cpp diff --git a/test/OptimizeAndReoptimize.cpp b/examples/OptimizeAndReoptimize.cpp similarity index 98% rename from test/OptimizeAndReoptimize.cpp rename to examples/OptimizeAndReoptimize.cpp index 4c14431..bbb3177 100644 --- a/test/OptimizeAndReoptimize.cpp +++ b/examples/OptimizeAndReoptimize.cpp @@ -22,7 +22,7 @@ int main() // global init CRoute4Me::init(); - CRoute4Me route(KEY); + CRoute4Me route(KEY, true); Json::Value params(Json::objectValue); params["route_name"] = "Single Driver Round Trip"; params["algorithm_type"] = CRoute4Me::TSP; diff --git a/test/Orders.cpp b/examples/Orders.cpp similarity index 100% rename from test/Orders.cpp rename to examples/Orders.cpp diff --git a/test/PreviewFile.cpp b/examples/PreviewFile.cpp similarity index 100% rename from test/PreviewFile.cpp rename to examples/PreviewFile.cpp diff --git a/test/PurchaseLicense.cpp b/examples/PurchaseLicense.cpp similarity index 100% rename from test/PurchaseLicense.cpp rename to examples/PurchaseLicense.cpp diff --git a/test/ReOptimization.cpp b/examples/ReOptimization.cpp similarity index 99% rename from test/ReOptimization.cpp rename to examples/ReOptimization.cpp index 76d63ac..7e89e25 100644 --- a/test/ReOptimization.cpp +++ b/examples/ReOptimization.cpp @@ -35,4 +35,4 @@ int main() CRoute4Me::cleanup(); return ret; -} \ No newline at end of file +} diff --git a/test/Register.cpp b/examples/Register.cpp similarity index 100% rename from test/Register.cpp rename to examples/Register.cpp diff --git a/test/RemoveOptimization.cpp b/examples/RemoveOptimization.cpp similarity index 100% rename from test/RemoveOptimization.cpp rename to examples/RemoveOptimization.cpp diff --git a/test/ReverseGeocoding.cpp b/examples/ReverseGeocoding.cpp similarity index 100% rename from test/ReverseGeocoding.cpp rename to examples/ReverseGeocoding.cpp diff --git a/test/RouteDestinations.cpp b/examples/RouteDestinations.cpp similarity index 100% rename from test/RouteDestinations.cpp rename to examples/RouteDestinations.cpp diff --git a/test/RouteManifest.cpp b/examples/RouteManifest.cpp similarity index 100% rename from test/RouteManifest.cpp rename to examples/RouteManifest.cpp diff --git a/test/RouteStatus.cpp b/examples/RouteStatus.cpp similarity index 100% rename from test/RouteStatus.cpp rename to examples/RouteStatus.cpp diff --git a/test/SetGPSPosition.cpp b/examples/SetGPSPosition.cpp similarity index 97% rename from test/SetGPSPosition.cpp rename to examples/SetGPSPosition.cpp index 9b5e288..2f1db97 100644 --- a/test/SetGPSPosition.cpp +++ b/examples/SetGPSPosition.cpp @@ -14,7 +14,7 @@ int main() // global init CRoute4Me::init(); - CRoute4Me route(KEY); + CRoute4Me route(KEY, true); Json::Value params(Json::objectValue); params["route_id"] = "AC16E7D338B551013FF34266FE81A5EE"; params["format"] = CRoute4Me::Csv; @@ -42,4 +42,4 @@ int main() CRoute4Me::cleanup(); return ret; -} \ No newline at end of file +} diff --git a/test/ShareRoutes.cpp b/examples/ShareRoutes.cpp similarity index 100% rename from test/ShareRoutes.cpp rename to examples/ShareRoutes.cpp diff --git a/test/SingleDriverRoundTrip.cpp b/examples/SingleDriverRoundTrip.cpp similarity index 100% rename from test/SingleDriverRoundTrip.cpp rename to examples/SingleDriverRoundTrip.cpp diff --git a/test/SingleDriverRoute10Stops.cpp b/examples/SingleDriverRoute10Stops.cpp similarity index 100% rename from test/SingleDriverRoute10Stops.cpp rename to examples/SingleDriverRoute10Stops.cpp diff --git a/test/TeamActivities.cpp b/examples/TeamActivities.cpp similarity index 100% rename from test/TeamActivities.cpp rename to examples/TeamActivities.cpp diff --git a/test/Territory.cpp b/examples/Territory.cpp similarity index 100% rename from test/Territory.cpp rename to examples/Territory.cpp diff --git a/test/TrackDeviceLastLocationHistory.cpp b/examples/TrackDeviceLastLocationHistory.cpp similarity index 100% rename from test/TrackDeviceLastLocationHistory.cpp rename to examples/TrackDeviceLastLocationHistory.cpp diff --git a/test/UpdateRoute.cpp b/examples/UpdateRoute.cpp similarity index 100% rename from test/UpdateRoute.cpp rename to examples/UpdateRoute.cpp diff --git a/test/UploadFile.cpp b/examples/UploadFile.cpp similarity index 100% rename from test/UploadFile.cpp rename to examples/UploadFile.cpp diff --git a/test/Users.cpp b/examples/Users.cpp similarity index 100% rename from test/Users.cpp rename to examples/Users.cpp diff --git a/test/ValidateSession.cpp b/examples/ValidateSession.cpp similarity index 100% rename from test/ValidateSession.cpp rename to examples/ValidateSession.cpp diff --git a/test/add_account_data.json b/examples/add_account_data.json similarity index 100% rename from test/add_account_data.json rename to examples/add_account_data.json diff --git a/test/add_address_to_route.json b/examples/add_address_to_route.json similarity index 100% rename from test/add_address_to_route.json rename to examples/add_address_to_route.json diff --git a/test/add_order.json b/examples/add_order.json similarity index 100% rename from test/add_order.json rename to examples/add_order.json diff --git a/test/add_order_data.json b/examples/add_order_data.json similarity index 100% rename from test/add_order_data.json rename to examples/add_order_data.json diff --git a/test/add_order_to_route.json b/examples/add_order_to_route.json similarity index 100% rename from test/add_order_to_route.json rename to examples/add_order_to_route.json diff --git a/test/add_order_to_route_data.json b/examples/add_order_to_route_data.json similarity index 100% rename from test/add_order_to_route_data.json rename to examples/add_order_to_route_data.json diff --git a/test/addr.json b/examples/addr.json similarity index 100% rename from test/addr.json rename to examples/addr.json diff --git a/test/address_for_optimization.json b/examples/address_for_optimization.json similarity index 100% rename from test/address_for_optimization.json rename to examples/address_for_optimization.json diff --git a/test/app_purchase_user_license_data.json b/examples/app_purchase_user_license_data.json similarity index 100% rename from test/app_purchase_user_license_data.json rename to examples/app_purchase_user_license_data.json diff --git a/examples/cmake_install.cmake b/examples/cmake_install.cmake new file mode 100644 index 0000000..7e7098a --- /dev/null +++ b/examples/cmake_install.cmake @@ -0,0 +1,34 @@ +# Install script for directory: /home/alex/src/github/route4me-cpp-sdk/test + +# Set the install prefix +IF(NOT DEFINED CMAKE_INSTALL_PREFIX) + SET(CMAKE_INSTALL_PREFIX "/usr/local") +ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX) +STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + IF(BUILD_TYPE) + STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + ELSE(BUILD_TYPE) + SET(CMAKE_INSTALL_CONFIG_NAME "") + ENDIF(BUILD_TYPE) + MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + +# Set the component getting installed. +IF(NOT CMAKE_INSTALL_COMPONENT) + IF(COMPONENT) + MESSAGE(STATUS "Install component: \"${COMPONENT}\"") + SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + ELSE(COMPONENT) + SET(CMAKE_INSTALL_COMPONENT) + ENDIF(COMPONENT) +ENDIF(NOT CMAKE_INSTALL_COMPONENT) + +# Install shared libraries without execute permission? +IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + SET(CMAKE_INSTALL_SO_NO_EXE "1") +ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + diff --git a/test/member_create_v4_data.json b/examples/member_create_v4_data.json similarity index 100% rename from test/member_create_v4_data.json rename to examples/member_create_v4_data.json diff --git a/test/member_delete_data.json b/examples/member_delete_data.json similarity index 100% rename from test/member_delete_data.json rename to examples/member_delete_data.json diff --git a/test/member_edit_data.json b/examples/member_edit_data.json similarity index 100% rename from test/member_edit_data.json rename to examples/member_edit_data.json diff --git a/test/poly.json b/examples/poly.json similarity index 100% rename from test/poly.json rename to examples/poly.json diff --git a/test/territory.json b/examples/territory.json similarity index 100% rename from test/territory.json rename to examples/territory.json diff --git a/test/update_route_data.json b/examples/update_route_data.json similarity index 100% rename from test/update_route_data.json rename to examples/update_route_data.json diff --git a/test/update_route_destination_custom_data.json b/examples/update_route_destination_custom_data.json similarity index 100% rename from test/update_route_destination_custom_data.json rename to examples/update_route_destination_custom_data.json diff --git a/test/ActivitiesTest.cpp b/test/ActivitiesTest.cpp new file mode 100644 index 0000000..c30b5eb --- /dev/null +++ b/test/ActivitiesTest.cpp @@ -0,0 +1,21 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +TEST(ActvitiesTest, GetAll) +{ + CRoute4Me::init(); + CRoute4Me route(KEY); + int ret = route.get_all_activities(); + ASSERT_EQ(0, ret); + route.cleanup(); +} + +int main(int argc, char** argv) +{ + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + return 0; +} diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 2d6213a..a47bb8a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,200 +1,7 @@ -ADD_EXECUTABLE(RouteManifest RouteManifest.cpp) -TARGET_LINK_LIBRARIES(RouteManifest route4me) - -ADD_EXECUTABLE(GetRoute GetRoute.cpp) -TARGET_LINK_LIBRARIES(GetRoute route4me) - -ADD_EXECUTABLE(DuplicateRoute DuplicateRoute.cpp) -TARGET_LINK_LIBRARIES(DuplicateRoute route4me) - -ADD_EXECUTABLE(GetRouteByPoints GetRouteByPoints.cpp) -TARGET_LINK_LIBRARIES(GetRouteByPoints route4me) - -ADD_EXECUTABLE(GetRouteByDirections GetRouteByDirections.cpp) -TARGET_LINK_LIBRARIES(GetRouteByDirections route4me) - -ADD_EXECUTABLE(GetRouteByText GetRouteByText.cpp) -TARGET_LINK_LIBRARIES(GetRouteByText route4me) - -ADD_EXECUTABLE(UpdateRoute UpdateRoute.cpp) -TARGET_LINK_LIBRARIES(UpdateRoute route4me) - -ADD_EXECUTABLE(RouteDestinations RouteDestinations.cpp) -TARGET_LINK_LIBRARIES(RouteDestinations route4me) - -ADD_EXECUTABLE(AddressBook AddressBook.cpp) -TARGET_LINK_LIBRARIES(AddressBook route4me) - -ADD_EXECUTABLE(Notes Notes.cpp) -TARGET_LINK_LIBRARIES(Notes route4me) - -ADD_EXECUTABLE(Users Users.cpp) -TARGET_LINK_LIBRARIES(Users route4me) - -ADD_EXECUTABLE(Orders Orders.cpp) -TARGET_LINK_LIBRARIES(Orders route4me) - -ADD_EXECUTABLE(GetOrders GetOrdersByDate.cpp) -TARGET_LINK_LIBRARIES(GetOrders route4me) - -ADD_EXECUTABLE(GetCustomOrders GetCustomOrders.cpp) -TARGET_LINK_LIBRARIES(GetCustomOrders route4me) - -ADD_EXECUTABLE(GetOrdersQuery GetOrdersQuery.cpp) -TARGET_LINK_LIBRARIES(GetOrdersQuery route4me) - -ADD_EXECUTABLE(AddOrder AddOrder.cpp) -TARGET_LINK_LIBRARIES(AddOrder route4me) - -ADD_EXECUTABLE(TeamActivities TeamActivities.cpp) -TARGET_LINK_LIBRARIES(TeamActivities route4me) - -ADD_EXECUTABLE(LogActivities LogActivities.cpp) -TARGET_LINK_LIBRARIES(LogActivities route4me) - -ADD_EXECUTABLE(Activities Activities.cpp) -TARGET_LINK_LIBRARIES(Activities route4me) - -ADD_EXECUTABLE(Zones AvoidanceZones.cpp) -TARGET_LINK_LIBRARIES(Zones route4me) - -ADD_EXECUTABLE(Territory Territory.cpp) -TARGET_LINK_LIBRARIES(Territory route4me) - -ADD_EXECUTABLE(GetAllRoutes GetMultipleRoutes.cpp) -TARGET_LINK_LIBRARIES(GetAllRoutes route4me) - -ADD_EXECUTABLE(RouteStatus RouteStatus.cpp) -TARGET_LINK_LIBRARIES(RouteStatus route4me) - -ADD_EXECUTABLE(DeleteRoute DeleteRoute.cpp) -TARGET_LINK_LIBRARIES(DeleteRoute route4me) - -ADD_EXECUTABLE(SetGPSPosition SetGPSPosition.cpp) -TARGET_LINK_LIBRARIES(SetGPSPosition route4me) - -ADD_EXECUTABLE(TrackDeviceLastLocationHistory TrackDeviceLastLocationHistory.cpp) -TARGET_LINK_LIBRARIES(TrackDeviceLastLocationHistory route4me) - -ADD_EXECUTABLE(SingleDriverRoundTrip SingleDriverRoundTrip.cpp) -TARGET_LINK_LIBRARIES(SingleDriverRoundTrip route4me) - -ADD_EXECUTABLE(SingleDriverRoute10Stops SingleDriverRoute10Stops.cpp) -TARGET_LINK_LIBRARIES(SingleDriverRoute10Stops route4me) - -ADD_EXECUTABLE(MultipleDepotMultipleDriver MultipleDepotMultipleDriver.cpp) -TARGET_LINK_LIBRARIES(MultipleDepotMultipleDriver route4me) - -ADD_EXECUTABLE(MultipleDepotMultipleDriverTimeWindows MultipleDepotMultipleDriverTimeWindows.cpp) -TARGET_LINK_LIBRARIES(MultipleDepotMultipleDriverTimeWindows route4me) - -ADD_EXECUTABLE(ReOptimization ReOptimization.cpp) -TARGET_LINK_LIBRARIES(ReOptimization route4me) - -ADD_EXECUTABLE(GetOptimization GetOptimization.cpp) -TARGET_LINK_LIBRARIES(GetOptimization route4me) - -ADD_EXECUTABLE(GetOptimizations GetOptimizations.cpp) -TARGET_LINK_LIBRARIES(GetOptimizations route4me) - -ADD_EXECUTABLE(RemoveOptimization RemoveOptimization.cpp) -TARGET_LINK_LIBRARIES(RemoveOptimization route4me) - -ADD_EXECUTABLE(OptimizeAndReoptimize OptimizeAndReoptimize.cpp) -TARGET_LINK_LIBRARIES(OptimizeAndReoptimize route4me) - -ADD_EXECUTABLE(Login Login.cpp) -TARGET_LINK_LIBRARIES(Login route4me) - -ADD_EXECUTABLE(Register Register.cpp) -TARGET_LINK_LIBRARIES(Register route4me) - -ADD_EXECUTABLE(EditMember EditMember.cpp) -TARGET_LINK_LIBRARIES(EditMember route4me) - -ADD_EXECUTABLE(DeleteMember DeleteMember.cpp) -TARGET_LINK_LIBRARIES(DeleteMember route4me) - -ADD_EXECUTABLE(ActivitiesByType ActivitiesByType.cpp) -TARGET_LINK_LIBRARIES(ActivitiesByType route4me) - -ADD_EXECUTABLE(AssetTracking AssetTracking.cpp) -TARGET_LINK_LIBRARIES(AssetTracking route4me) - -ADD_EXECUTABLE(GetLocationHistory GetLocationHistory.cpp) -TARGET_LINK_LIBRARIES(GetLocationHistory route4me) - -ADD_EXECUTABLE(AddAddressToOptimization AddAddressToOptimization.cpp) -TARGET_LINK_LIBRARIES(AddAddressToOptimization route4me) - -ADD_EXECUTABLE(MergeRoutes MergeRoutes.cpp) -TARGET_LINK_LIBRARIES(MergeRoutes route4me) - -ADD_EXECUTABLE(ShareRoutes ShareRoutes.cpp) -TARGET_LINK_LIBRARIES(ShareRoutes route4me) - -ADD_EXECUTABLE(BatchGeocoding BatchGeocoding.cpp) -TARGET_LINK_LIBRARIES(BatchGeocoding route4me) - -ADD_EXECUTABLE(ReverseGeocoding ReverseGeocoding.cpp) -TARGET_LINK_LIBRARIES(ReverseGeocoding route4me) - -ADD_EXECUTABLE(GetSingleStreet GetSingleStreet.cpp) -TARGET_LINK_LIBRARIES(GetSingleStreet route4me) - -ADD_EXECUTABLE(GetAllStreets GetAllStreets.cpp) -TARGET_LINK_LIBRARIES(GetAllStreets route4me) - -ADD_EXECUTABLE(GetStreetsLimited GetStreetsLimited.cpp) -TARGET_LINK_LIBRARIES(GetStreetsLimited route4me) - -ADD_EXECUTABLE(GetStreetsZipHouse GetStreetsZipHouse.cpp) -TARGET_LINK_LIBRARIES(GetStreetsZipHouse route4me) - -ADD_EXECUTABLE(PurchaseLicense PurchaseLicense.cpp) -TARGET_LINK_LIBRARIES(PurchaseLicense route4me) - -ADD_EXECUTABLE(GetSubUsers GetSubUsers.cpp) -TARGET_LINK_LIBRARIES(GetSubUsers route4me) - -ADD_EXECUTABLE(ValidateSession ValidateSession.cpp) -TARGET_LINK_LIBRARIES(ValidateSession route4me) - -ADD_EXECUTABLE(AddConfig AddConfig.cpp) -TARGET_LINK_LIBRARIES(AddConfig route4me) - -ADD_EXECUTABLE(GetConfig GetConfig.cpp) -TARGET_LINK_LIBRARIES(GetConfig route4me) - -ADD_EXECUTABLE(GetVehicles GetVehicles.cpp) -TARGET_LINK_LIBRARIES(GetVehicles route4me) - -ADD_EXECUTABLE(PreviewFile PreviewFile.cpp) -TARGET_LINK_LIBRARIES(PreviewFile route4me) - -ADD_EXECUTABLE(UploadFile UploadFile.cpp) -TARGET_LINK_LIBRARIES(UploadFile route4me) ENABLE_TESTING() +ADD_EXECUTABLE(ActivitiesTest ActivitiesTest) +TARGET_LINK_LIBRARIES(ActivitiesTest route4me) +TARGET_LINK_LIBRARIES(ActivitiesTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(ActivitiesTest ActivitiesTest) -ADD_TEST(DuplicateRoute DuplicateRoute) -ADD_TEST(GetRouteByPoints GetRouteByPoints) -ADD_TEST(GetRouteByDirections GetRouteByDirections) -ADD_TEST(GetRouteByText GetRouteByText) -ADD_TEST(UpdateRoute UpdateRoute) -ADD_TEST(AddressBook AddressBook) -ADD_TEST(Notes Notes) -ADD_TEST(Users Users) -ADD_TEST(Orders Orders) -ADD_TEST(TeamActivities TeamActivities) -ADD_TEST(Zones Zones) -ADD_TEST(Territory Territory) -ADD_TEST(GetAllRoutes GetAllRoutes) -ADD_TEST(RouteStatus RouteStatus) -ADD_TEST(SingleDriverRoundTrip SingleDriverRoundTrip) -ADD_TEST(ActivitiesByType ActivitiesByType) -ADD_TEST(AssetTracking AssetTracking) -ADD_TEST(GetLocationHistory GetLocationHistory) -ADD_TEST(GetOptimization GetOptimization) -ADD_TEST(BatchGeocoding BatchGeocoding) -ADD_TEST(GetConfig GetConfig) From fa70464d342994a7e8c20727cac841ea645eaa95 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Feb 2017 12:21:42 +0200 Subject: [PATCH 06/25] Clean up --- examples/cmake_install.cmake | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 examples/cmake_install.cmake diff --git a/examples/cmake_install.cmake b/examples/cmake_install.cmake deleted file mode 100644 index 7e7098a..0000000 --- a/examples/cmake_install.cmake +++ /dev/null @@ -1,34 +0,0 @@ -# Install script for directory: /home/alex/src/github/route4me-cpp-sdk/test - -# Set the install prefix -IF(NOT DEFINED CMAKE_INSTALL_PREFIX) - SET(CMAKE_INSTALL_PREFIX "/usr/local") -ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX) -STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - -# Set the install configuration name. -IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) - IF(BUILD_TYPE) - STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" "" - CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") - ELSE(BUILD_TYPE) - SET(CMAKE_INSTALL_CONFIG_NAME "") - ENDIF(BUILD_TYPE) - MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") -ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) - -# Set the component getting installed. -IF(NOT CMAKE_INSTALL_COMPONENT) - IF(COMPONENT) - MESSAGE(STATUS "Install component: \"${COMPONENT}\"") - SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}") - ELSE(COMPONENT) - SET(CMAKE_INSTALL_COMPONENT) - ENDIF(COMPONENT) -ENDIF(NOT CMAKE_INSTALL_COMPONENT) - -# Install shared libraries without execute permission? -IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) - SET(CMAKE_INSTALL_SO_NO_EXE "1") -ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) - From 35a664fd3a4116ae562c8c0dc10cb5f32c80ccd1 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Feb 2017 12:31:17 +0200 Subject: [PATCH 07/25] Travis build --- .travis.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d1853ef..020a9eb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,16 @@ -sudo: false +sudo: true language: cpp compiler: - gcc os: - linux +before_install: +- sudo apt-get install libgtest-dev +- cd /usr/src/gtest +- sudo cmake CMakeLists.txt +- sudo make +- sudo cp *.a /usr/lib script: - cmake . - make all From 9aa6b9eeffebbc893443c55f454116c912537e64 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Feb 2017 12:37:26 +0200 Subject: [PATCH 08/25] Travis build --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 020a9eb..da8f30d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,7 @@ compiler: os: - linux before_install: +- pwd - sudo apt-get install libgtest-dev - cd /usr/src/gtest - sudo cmake CMakeLists.txt From 4e40a1bfce67bb5e0b33c8c0445ba46a35885a09 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Feb 2017 12:52:48 +0200 Subject: [PATCH 09/25] Travis build --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index da8f30d..864d56a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,13 +5,14 @@ compiler: - gcc os: - linux -before_install: -- pwd +install: +- CURRENT=pwd - sudo apt-get install libgtest-dev - cd /usr/src/gtest - sudo cmake CMakeLists.txt - sudo make - sudo cp *.a /usr/lib +- cd $CURRENT script: - cmake . - make all From a748d956032cc75812cfecf5152dbbd1fcd559ce Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Feb 2017 12:56:33 +0200 Subject: [PATCH 10/25] Travis build --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 864d56a..27ace08 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ compiler: os: - linux install: -- CURRENT=pwd +- CURRENT=`pwd` - sudo apt-get install libgtest-dev - cd /usr/src/gtest - sudo cmake CMakeLists.txt From 048da4983b3cc77116343f9d2f6f20182307ce0f Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Feb 2017 16:41:42 +0200 Subject: [PATCH 11/25] More unit tests --- test/ActivitiesTest.cpp | 64 ++++++++++++++++++++++++++++++++++--- test/AddressBookTest.cpp | 32 +++++++++++++++++++ test/AvoidanceZonesTest.cpp | 41 ++++++++++++++++++++++++ test/CMakeLists.txt | 20 ++++++++++++ test/StreetsTest.cpp | 35 ++++++++++++++++++++ test/TrackingTest.cpp | 34 ++++++++++++++++++++ 6 files changed, 221 insertions(+), 5 deletions(-) create mode 100644 test/AddressBookTest.cpp create mode 100644 test/AvoidanceZonesTest.cpp create mode 100644 test/StreetsTest.cpp create mode 100644 test/TrackingTest.cpp diff --git a/test/ActivitiesTest.cpp b/test/ActivitiesTest.cpp index c30b5eb..93cc759 100644 --- a/test/ActivitiesTest.cpp +++ b/test/ActivitiesTest.cpp @@ -4,18 +4,72 @@ #define KEY "11111111111111111111111111111111" -TEST(ActvitiesTest, GetAll) +CRoute4Me* pRoute; + +TEST(ActivitiesTest, GetAll) { - CRoute4Me::init(); - CRoute4Me route(KEY); - int ret = route.get_all_activities(); + int ret = pRoute->get_all_activities(); + ASSERT_EQ(0, ret); +} + +TEST(ActivitiesTest, GetByType ) +{ + std::vector types; + + types.push_back("area-added"); + types.push_back("area-removed"); + types.push_back("area-updated"); + types.push_back("delete-destination"); + types.push_back("destination-out-sequence"); + types.push_back("driver-arrived-early"); + types.push_back("driver-arrived-late"); + types.push_back("driver-arrived-on-time"); + types.push_back("geofence-entered"); + types.push_back("geofence-left"); + types.push_back("insert_destination"); + types.push_back("mark-destination-departed"); + types.push_back("mark-destination-visited"); + types.push_back("member-created"); + types.push_back("member-deleted"); + types.push_back("member-modified"); + types.push_back("move-destination"); + types.push_back("note-insert"); + types.push_back("route-delete"); + types.push_back("route-optimized"); + types.push_back("route-owner-changed"); + types.push_back("update-destinations"); + + std::vector foundActivities, missingActivities; + + for (int i = 0; i < types.size(); ++i) { + const char* type = types[i].c_str(); + if (pRoute->get_activities_by_type(type) == 0) + foundActivities.push_back(type); + else + missingActivities.push_back(type); + } + + ASSERT_EQ(22, foundActivities.size()); + ASSERT_EQ(0, missingActivities.size()); +} + +TEST(ActivitiesTest, GetByTeam) +{ + const char *route_id = "CA902292134DBC134EAF8363426BD247"; + int ret = pRoute->get_team_activities(route_id); ASSERT_EQ(0, ret); - route.cleanup(); } int main(int argc, char** argv) { + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + ::testing::InitGoogleTest(&argc, argv); RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + return 0; } diff --git a/test/AddressBookTest.cpp b/test/AddressBookTest.cpp new file mode 100644 index 0000000..ccef76a --- /dev/null +++ b/test/AddressBookTest.cpp @@ -0,0 +1,32 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(AddressBookTest, GetAllContacts) +{ + int ret = pRoute->get_address_book_contacts(); + ASSERT_EQ(0, ret); +} + +TEST(AddressBookTest, GetOneContact) +{ + int ret = pRoute->get_address_book_contacts_by_text("Wall"); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} diff --git a/test/AvoidanceZonesTest.cpp b/test/AvoidanceZonesTest.cpp new file mode 100644 index 0000000..e6d0e03 --- /dev/null +++ b/test/AvoidanceZonesTest.cpp @@ -0,0 +1,41 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +//TODO: Make this test really positive +TEST(AvoidanceZonesTest, GetZonePositive) +{ + const char *id = "A1"; + int ret = pRoute->get_avoidance_zone(id); + ASSERT_EQ(-9, ret); +} + +TEST(AvoidanceZonesTest, GetZoneNegative) +{ + int ret = pRoute->get_avoidance_zone("fake"); + ASSERT_EQ(-9, ret); +} + +TEST(AvoidanceZonesTest, GetZones) +{ + int ret = pRoute->get_avoidance_zones(); + ASSERT_EQ(0, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + ::testing::InitGoogleTest(&argc, argv); + + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a47bb8a..9618327 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,7 +1,27 @@ ENABLE_TESTING() + ADD_EXECUTABLE(ActivitiesTest ActivitiesTest) TARGET_LINK_LIBRARIES(ActivitiesTest route4me) TARGET_LINK_LIBRARIES(ActivitiesTest ${GTEST_LIBRARIES} pthread) ADD_TEST(ActivitiesTest ActivitiesTest) +ADD_EXECUTABLE(TrackingTest TrackingTest) +TARGET_LINK_LIBRARIES(TrackingTest route4me) +TARGET_LINK_LIBRARIES(TrackingTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(TrackingTest TrackingTest) + +ADD_EXECUTABLE(AvoidanceZonesTest AvoidanceZonesTest) +TARGET_LINK_LIBRARIES(AvoidanceZonesTest route4me) +TARGET_LINK_LIBRARIES(AvoidanceZonesTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(AvoidanceZonesTest AvoidanceZonesTest) + +ADD_EXECUTABLE(AddressBookTest AddressBookTest) +TARGET_LINK_LIBRARIES(AddressBookTest route4me) +TARGET_LINK_LIBRARIES(AddressBookTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(AddressBookTest AddressBookTest) + +ADD_EXECUTABLE(StreetsTest StreetsTest) +TARGET_LINK_LIBRARIES(StreetsTest route4me) +TARGET_LINK_LIBRARIES(StreetsTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(StreetsTest StreetsTest) diff --git a/test/StreetsTest.cpp b/test/StreetsTest.cpp new file mode 100644 index 0000000..4fc0988 --- /dev/null +++ b/test/StreetsTest.cpp @@ -0,0 +1,35 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(StreetsTest, GetAllStreets) +{ + int ret = pRoute->get_all_streets(); + ASSERT_EQ(0, ret); +} + +TEST(StreetsTest, GetOneStreet ) +{ + int seqno = 1; + int ret = pRoute->get_street_address(seqno); + ASSERT_EQ(0, ret); +} + + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} diff --git a/test/TrackingTest.cpp b/test/TrackingTest.cpp new file mode 100644 index 0000000..cbe0291 --- /dev/null +++ b/test/TrackingTest.cpp @@ -0,0 +1,34 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(TrackingTest, AssetTrackingPositive) +{ + const char *id = "Q7G9P1L9"; + int ret = pRoute->asset_tracking(id); + ASSERT_EQ(0, ret); +} + +TEST(TrackingTest, AssetTrackingNegative) +{ + int ret = pRoute->asset_tracking("fake"); + ASSERT_EQ(-9, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + ::testing::InitGoogleTest(&argc, argv); + + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} From 887f588f129e454ea8800184191ce1ce1140282f Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 27 Feb 2017 09:21:24 +0200 Subject: [PATCH 12/25] Unit tests added --- test/CMakeLists.txt | 40 +++++++++++++++++++++++ test/ConfigTest.cpp | 27 ++++++++++++++++ test/GeocoderTest.cpp | 37 +++++++++++++++++++++ test/NotesTest.cpp | 29 +++++++++++++++++ test/OptimizationTest.cpp | 29 +++++++++++++++++ test/OrdersTest.cpp | 33 +++++++++++++++++++ test/RoutesTest.cpp | 68 +++++++++++++++++++++++++++++++++++++++ test/TerritoriesTest.cpp | 27 ++++++++++++++++ test/UsersTest.cpp | 27 ++++++++++++++++ test/VehiclesTest.cpp | 27 ++++++++++++++++ 10 files changed, 344 insertions(+) create mode 100644 test/ConfigTest.cpp create mode 100644 test/GeocoderTest.cpp create mode 100644 test/NotesTest.cpp create mode 100644 test/OptimizationTest.cpp create mode 100644 test/OrdersTest.cpp create mode 100644 test/RoutesTest.cpp create mode 100644 test/TerritoriesTest.cpp create mode 100644 test/UsersTest.cpp create mode 100644 test/VehiclesTest.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 9618327..ccca21b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -25,3 +25,43 @@ ADD_EXECUTABLE(StreetsTest StreetsTest) TARGET_LINK_LIBRARIES(StreetsTest route4me) TARGET_LINK_LIBRARIES(StreetsTest ${GTEST_LIBRARIES} pthread) ADD_TEST(StreetsTest StreetsTest) + +ADD_EXECUTABLE(RoutesTest RoutesTest) +TARGET_LINK_LIBRARIES(RoutesTest route4me) +TARGET_LINK_LIBRARIES(RoutesTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(RoutesTest RoutesTest) + +ADD_EXECUTABLE(NotesTest NotesTest) +TARGET_LINK_LIBRARIES(NotesTest route4me) +TARGET_LINK_LIBRARIES(NotesTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(NotesTest NotesTest) + +ADD_EXECUTABLE(ConfigTest ConfigTest) +TARGET_LINK_LIBRARIES(ConfigTest route4me) +TARGET_LINK_LIBRARIES(ConfigTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(ConfigTest ConfigTest) + +ADD_EXECUTABLE(TerritoriesTest TerritoriesTest) +TARGET_LINK_LIBRARIES(TerritoriesTest route4me) +TARGET_LINK_LIBRARIES(TerritoriesTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(TerritoriesTest TerritoriesTest) + +ADD_EXECUTABLE(OrdersTest OrdersTest) +TARGET_LINK_LIBRARIES(OrdersTest route4me) +TARGET_LINK_LIBRARIES(OrdersTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(OrdersTest OrdersTest) + +ADD_EXECUTABLE(GeocoderTest GeocoderTest) +TARGET_LINK_LIBRARIES(GeocoderTest route4me) +TARGET_LINK_LIBRARIES(GeocoderTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(GeocoderTest GeocoderTest) + +ADD_EXECUTABLE(UsersTest UsersTest) +TARGET_LINK_LIBRARIES(UsersTest route4me) +TARGET_LINK_LIBRARIES(UsersTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(UsersTest UsersTest) + +ADD_EXECUTABLE(OptimizationTest OptimizationTest) +TARGET_LINK_LIBRARIES(OptimizationTest route4me) +TARGET_LINK_LIBRARIES(OptimizationTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(OptimizationTest OptimizationTest) diff --git a/test/ConfigTest.cpp b/test/ConfigTest.cpp new file mode 100644 index 0000000..9750ada --- /dev/null +++ b/test/ConfigTest.cpp @@ -0,0 +1,27 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(NotesTest, GetRouteNotes) +{ + int ret = pRoute->get_config(); + ASSERT_EQ(0, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} diff --git a/test/GeocoderTest.cpp b/test/GeocoderTest.cpp new file mode 100644 index 0000000..7619ed1 --- /dev/null +++ b/test/GeocoderTest.cpp @@ -0,0 +1,37 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(GeocoderTest, BatchGeocoding) +{ + const char* addrs = "Los20%Angeles20%International20%Airport,20%CA"; + const char* format = "json"; + int ret = pRoute->batch_geocoding(addrs, format); + ASSERT_EQ(0, ret); +} + +TEST(GeocoderTest, ReverseGeocoding) +{ + const char* addrs = "33.945705,-118.391105"; + const char* format = "json"; + int ret = pRoute->reverse_geocoding(addrs, format); + ASSERT_EQ(0, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + ::testing::InitGoogleTest(&argc, argv); + + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} diff --git a/test/NotesTest.cpp b/test/NotesTest.cpp new file mode 100644 index 0000000..89d0530 --- /dev/null +++ b/test/NotesTest.cpp @@ -0,0 +1,29 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; +const char *route_id = "CA902292134DBC134EAF8363426BD247"; +const char *route_destination_id = "174405709A"; + +TEST(NotesTest, GetRouteNotes) +{ + int ret = pRoute->get_route_notes(route_id, route_destination_id); + ASSERT_EQ(0, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} diff --git a/test/OptimizationTest.cpp b/test/OptimizationTest.cpp new file mode 100644 index 0000000..25c3a4f --- /dev/null +++ b/test/OptimizationTest.cpp @@ -0,0 +1,29 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(OptimizationTest, ReOptimize) +{ + const char *id = "c46648541ca5d716a31ffae6f405a37d"; + int ret = pRoute->reoptimize(id); + ASSERT_EQ(0, ret); +} + + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + ::testing::InitGoogleTest(&argc, argv); + + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} diff --git a/test/OrdersTest.cpp b/test/OrdersTest.cpp new file mode 100644 index 0000000..2a6da38 --- /dev/null +++ b/test/OrdersTest.cpp @@ -0,0 +1,33 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(OrdersTest, GetAllOrders) +{ + int ret = pRoute->get_all_orders(); + ASSERT_EQ(0, ret); +} + +TEST(OrdersTest, GetCustomOrders) +{ + int ret = pRoute->get_custom_orders("order_id,member_id", 0, 100); + ASSERT_EQ(0, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} diff --git a/test/RoutesTest.cpp b/test/RoutesTest.cpp new file mode 100644 index 0000000..2ae6f94 --- /dev/null +++ b/test/RoutesTest.cpp @@ -0,0 +1,68 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; +const char *route_id = "CA902292134DBC134EAF8363426BD247"; + +TEST(RoutesTest, GetByDirections) +{ + int ret = pRoute->get_route_directions(route_id, 1); + ASSERT_EQ(0, ret); +} + +TEST(RoutesTest, GetByPointPath) +{ + int ret = pRoute->get_route_path_points(route_id, "Points"); + ASSERT_EQ(0, ret); +} + +TEST(RoutesTest, GetById) +{ + int ret = pRoute->get_route_by_id(route_id); + ASSERT_EQ(0, ret); +} + +TEST(RoutesTest, GetMultipleRoutes) +{ + int ret = pRoute->get_multiple_routes(); + ASSERT_EQ(0, ret); +} + +TEST(RoutesTest, AddRouteDestinationsInvalidBody) +{ + const char *route_id = "CA902292134DBC134EAF8363426BD247"; + Json::Value addr; + int ret = pRoute->add_route_destinations(route_id, addr); + ASSERT_EQ(-9, ret); + +} + +TEST(RoutesTest, GetRouteManifest) +{ + Json::Value params(Json::objectValue); + params["route_id"] = "AC16E7D338B551013FF34266FE81A5EE"; + params["directions"] = 1; + params["route_path_output"] = CRoute4Me::Points; + params["device_tracking_history"] = 1; + params["limit"] = 10; + params["offset"] = 5; + int ret = pRoute->get_route(params); + ASSERT_EQ(0, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} diff --git a/test/TerritoriesTest.cpp b/test/TerritoriesTest.cpp new file mode 100644 index 0000000..7e8400a --- /dev/null +++ b/test/TerritoriesTest.cpp @@ -0,0 +1,27 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(TerritoriesTest, GetAll) +{ + int ret = pRoute->get_all_territories(); + ASSERT_EQ(0, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} diff --git a/test/UsersTest.cpp b/test/UsersTest.cpp new file mode 100644 index 0000000..1aa1993 --- /dev/null +++ b/test/UsersTest.cpp @@ -0,0 +1,27 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(UsersTest, GetUsers) +{ + int ret = pRoute->get_users(); + ASSERT_EQ(0, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} diff --git a/test/VehiclesTest.cpp b/test/VehiclesTest.cpp new file mode 100644 index 0000000..ee79393 --- /dev/null +++ b/test/VehiclesTest.cpp @@ -0,0 +1,27 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(VehiclesTest, GetAll) +{ + int ret = pRoute->get_vehicles(5, 10); + ASSERT_EQ(0, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY, true); + + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} From c5e869d3bcdd1091acd5b5a73997f114e4166c9a Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 27 Feb 2017 09:30:41 +0200 Subject: [PATCH 13/25] More tests added --- test/CMakeLists.txt | 5 +++++ test/SessionTest.cpp | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 test/SessionTest.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ccca21b..2902d42 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -65,3 +65,8 @@ ADD_EXECUTABLE(OptimizationTest OptimizationTest) TARGET_LINK_LIBRARIES(OptimizationTest route4me) TARGET_LINK_LIBRARIES(OptimizationTest ${GTEST_LIBRARIES} pthread) ADD_TEST(OptimizationTest OptimizationTest) + +ADD_EXECUTABLE(SessionTest SessionTest) +TARGET_LINK_LIBRARIES(SessionTest route4me) +TARGET_LINK_LIBRARIES(SessionTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(SessionTest SessionTest) diff --git a/test/SessionTest.cpp b/test/SessionTest.cpp new file mode 100644 index 0000000..84d3c28 --- /dev/null +++ b/test/SessionTest.cpp @@ -0,0 +1,29 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(SessionTest, Validate) +{ + const char* session_id="4552222222"; + const char* member_id="787544566"; + int ret = pRoute->validate_session(session_id, member_id); + ASSERT_EQ(0, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY, true); + + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} From 8b35b8164f6ecf9109c8ba33849ee4562ed4eae9 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 28 Feb 2017 09:09:56 +0200 Subject: [PATCH 14/25] Unit tests --- test/CMakeLists.txt | 5 +++++ test/GPSTest.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 test/GPSTest.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 2902d42..602dcb5 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -70,3 +70,8 @@ ADD_EXECUTABLE(SessionTest SessionTest) TARGET_LINK_LIBRARIES(SessionTest route4me) TARGET_LINK_LIBRARIES(SessionTest ${GTEST_LIBRARIES} pthread) ADD_TEST(SessionTest SessionTest) + +ADD_EXECUTABLE(GPSTest GPSTest) +TARGET_LINK_LIBRARIES(GPSTest route4me) +TARGET_LINK_LIBRARIES(GPSTest ${GTEST_LIBRARIES} pthread) +ADD_TEST(GPSTest GPSTest) diff --git a/test/GPSTest.cpp b/test/GPSTest.cpp new file mode 100644 index 0000000..0e5513f --- /dev/null +++ b/test/GPSTest.cpp @@ -0,0 +1,38 @@ + +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +TEST(GPSTest, SetPosition) +{ + Json::Value params(Json::objectValue); + params["route_id"] = "AC16E7D338B551013FF34266FE81A5EE"; + params["format"] = CRoute4Me::Csv; + params["lat"] = 33.14384; + params["lng"] = -83.22466; + params["course"] = 1; + params["speed"] = 120; + params["device_type"] = CRoute4Me::IPhone; + params["device_guid"] = "TEST_GPS"; + params["device_timestamp"] = "2014-06-14 17:43:35"; + params["member_id"] = 1; + int ret = pRoute->set_gps(params); + ASSERT_EQ(0, ret); +} + +int main(int argc, char** argv) +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY, true); + + ::testing::InitGoogleTest(&argc, argv); + RUN_ALL_TESTS(); + + pRoute->cleanup(); + delete pRoute; + + return 0; +} From 94ff64cd6c63943166764f3b9c3da7c40676d8fe Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 28 Feb 2017 09:42:52 +0200 Subject: [PATCH 15/25] Test under valgrind --- test/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 602dcb5..bf942c6 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -75,3 +75,4 @@ ADD_EXECUTABLE(GPSTest GPSTest) TARGET_LINK_LIBRARIES(GPSTest route4me) TARGET_LINK_LIBRARIES(GPSTest ${GTEST_LIBRARIES} pthread) ADD_TEST(GPSTest GPSTest) +add_test(GPSTest_valgrind valgrind --read-var-info=yes --leak-check=full --show-leak-kinds=all ./GPSTest) From 32cafe765c088db71572ac97c938552963aaac81 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 28 Feb 2017 14:13:56 +0200 Subject: [PATCH 16/25] Test under valgrind --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 27ace08..bd21c30 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,6 +13,8 @@ install: - sudo make - sudo cp *.a /usr/lib - cd $CURRENT +before_script: +- sudo apt-get install valgrind script: - cmake . - make all From 202888a6bd3f7f5bbe5b03a5d4f5add620ca6d62 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 1 Mar 2017 10:30:32 +0200 Subject: [PATCH 17/25] Commented valgrind check --- .travis.yml | 4 ++-- test/CMakeLists.txt | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index bd21c30..63d7991 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,8 +13,8 @@ install: - sudo make - sudo cp *.a /usr/lib - cd $CURRENT -before_script: -- sudo apt-get install valgrind +#before_script: +#- sudo apt-get install valgrind script: - cmake . - make all diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index bf942c6..789dee7 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -75,4 +75,6 @@ ADD_EXECUTABLE(GPSTest GPSTest) TARGET_LINK_LIBRARIES(GPSTest route4me) TARGET_LINK_LIBRARIES(GPSTest ${GTEST_LIBRARIES} pthread) ADD_TEST(GPSTest GPSTest) -add_test(GPSTest_valgrind valgrind --read-var-info=yes --leak-check=full --show-leak-kinds=all ./GPSTest) + +# No neeed to run valgrind tests for each build. Line below added for example. +# ADD_TEST(GPSTest_valgrind valgrind --read-var-info=yes --leak-check=full --show-leak-kinds=all ./GPSTest) From 59c8afdbc85c19cb69a397aa336e76deec136890 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 1 Mar 2017 20:10:14 +0200 Subject: [PATCH 18/25] Cleanup --- test/CMakeLists.txt | 75 ++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 45 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 789dee7..2923a34 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,79 +1,64 @@ ENABLE_TESTING() -ADD_EXECUTABLE(ActivitiesTest ActivitiesTest) -TARGET_LINK_LIBRARIES(ActivitiesTest route4me) -TARGET_LINK_LIBRARIES(ActivitiesTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(ActivitiesTest ActivitiesTest.cpp) +TARGET_LINK_LIBRARIES(ActivitiesTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(ActivitiesTest ActivitiesTest) -ADD_EXECUTABLE(TrackingTest TrackingTest) -TARGET_LINK_LIBRARIES(TrackingTest route4me) -TARGET_LINK_LIBRARIES(TrackingTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(TrackingTest TrackingTest.cpp) +TARGET_LINK_LIBRARIES(TrackingTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(TrackingTest TrackingTest) -ADD_EXECUTABLE(AvoidanceZonesTest AvoidanceZonesTest) -TARGET_LINK_LIBRARIES(AvoidanceZonesTest route4me) -TARGET_LINK_LIBRARIES(AvoidanceZonesTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(AvoidanceZonesTest AvoidanceZonesTest.cpp) +TARGET_LINK_LIBRARIES(AvoidanceZonesTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(AvoidanceZonesTest AvoidanceZonesTest) -ADD_EXECUTABLE(AddressBookTest AddressBookTest) -TARGET_LINK_LIBRARIES(AddressBookTest route4me) -TARGET_LINK_LIBRARIES(AddressBookTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(AddressBookTest AddressBookTest.cpp) +TARGET_LINK_LIBRARIES(AddressBookTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(AddressBookTest AddressBookTest) -ADD_EXECUTABLE(StreetsTest StreetsTest) -TARGET_LINK_LIBRARIES(StreetsTest route4me) -TARGET_LINK_LIBRARIES(StreetsTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(StreetsTest StreetsTest.cpp) +TARGET_LINK_LIBRARIES(StreetsTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(StreetsTest StreetsTest) -ADD_EXECUTABLE(RoutesTest RoutesTest) -TARGET_LINK_LIBRARIES(RoutesTest route4me) -TARGET_LINK_LIBRARIES(RoutesTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(RoutesTest RoutesTest.cpp) +TARGET_LINK_LIBRARIES(RoutesTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(RoutesTest RoutesTest) -ADD_EXECUTABLE(NotesTest NotesTest) -TARGET_LINK_LIBRARIES(NotesTest route4me) -TARGET_LINK_LIBRARIES(NotesTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(NotesTest NotesTest.cpp) +TARGET_LINK_LIBRARIES(NotesTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(NotesTest NotesTest) -ADD_EXECUTABLE(ConfigTest ConfigTest) -TARGET_LINK_LIBRARIES(ConfigTest route4me) -TARGET_LINK_LIBRARIES(ConfigTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(ConfigTest ConfigTest.cpp) +TARGET_LINK_LIBRARIES(ConfigTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(ConfigTest ConfigTest) -ADD_EXECUTABLE(TerritoriesTest TerritoriesTest) -TARGET_LINK_LIBRARIES(TerritoriesTest route4me) -TARGET_LINK_LIBRARIES(TerritoriesTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(TerritoriesTest TerritoriesTest.cpp) +TARGET_LINK_LIBRARIES(TerritoriesTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(TerritoriesTest TerritoriesTest) -ADD_EXECUTABLE(OrdersTest OrdersTest) -TARGET_LINK_LIBRARIES(OrdersTest route4me) -TARGET_LINK_LIBRARIES(OrdersTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(OrdersTest OrdersTest.cpp) +TARGET_LINK_LIBRARIES(OrdersTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(OrdersTest OrdersTest) -ADD_EXECUTABLE(GeocoderTest GeocoderTest) -TARGET_LINK_LIBRARIES(GeocoderTest route4me) -TARGET_LINK_LIBRARIES(GeocoderTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(GeocoderTest GeocoderTest.cpp) +TARGET_LINK_LIBRARIES(GeocoderTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(GeocoderTest GeocoderTest) -ADD_EXECUTABLE(UsersTest UsersTest) -TARGET_LINK_LIBRARIES(UsersTest route4me) -TARGET_LINK_LIBRARIES(UsersTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(UsersTest UsersTest.cpp) +TARGET_LINK_LIBRARIES(UsersTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(UsersTest UsersTest) -ADD_EXECUTABLE(OptimizationTest OptimizationTest) -TARGET_LINK_LIBRARIES(OptimizationTest route4me) -TARGET_LINK_LIBRARIES(OptimizationTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(OptimizationTest OptimizationTest.cpp) +TARGET_LINK_LIBRARIES(OptimizationTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(OptimizationTest OptimizationTest) -ADD_EXECUTABLE(SessionTest SessionTest) -TARGET_LINK_LIBRARIES(SessionTest route4me) -TARGET_LINK_LIBRARIES(SessionTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(SessionTest SessionTest.cpp) +TARGET_LINK_LIBRARIES(SessionTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(SessionTest SessionTest) -ADD_EXECUTABLE(GPSTest GPSTest) -TARGET_LINK_LIBRARIES(GPSTest route4me) -TARGET_LINK_LIBRARIES(GPSTest ${GTEST_LIBRARIES} pthread) +ADD_EXECUTABLE(GPSTest GPSTest.cpp) +TARGET_LINK_LIBRARIES(GPSTest route4me ${GTEST_LIBRARIES} pthread) ADD_TEST(GPSTest GPSTest) # No neeed to run valgrind tests for each build. Line below added for example. From 9d1f431a3f4b9cf0d6969fec3cdc28e5e04c15ae Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 2 Mar 2017 12:11:59 +0200 Subject: [PATCH 19/25] Bulk geocoding --- examples/BulkGeocoding.cpp | 37 +++++++++++++++++++++++++++++++++++++ include/route4me.h | 15 +++++++++++++-- src/route4me.cpp | 14 +++++++++++++- 3 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 examples/BulkGeocoding.cpp diff --git a/examples/BulkGeocoding.cpp b/examples/BulkGeocoding.cpp new file mode 100644 index 0000000..c2108d3 --- /dev/null +++ b/examples/BulkGeocoding.cpp @@ -0,0 +1,37 @@ +#include +#include +#include "../include/route4me.h" + +#define KEY "11111111111111111111111111111111" + +using namespace std; + +int main() +{ + // global init + CRoute4Me::init(); + + CRoute4Me route(KEY, true); + + ifstream inf("bulk_geocoding_data.json"); + if(!inf.is_open()) { + cout << "Cannot find file bulk_geocoding_data.json" << endl; + return -1; + } + Json::Value data; + inf >> data; + + if(route.json_geocoding(data) == 0) + { + cout << "Geocoding done:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl; + } + else + { + cout << "Geocoding failed: " << route.get_err_code() << ": " << route.get_err_msg() << endl; + } + + // global cleanup + CRoute4Me::cleanup(); + + return 0; +} diff --git a/include/route4me.h b/include/route4me.h index b53f00f..d649019 100644 --- a/include/route4me.h +++ b/include/route4me.h @@ -8,7 +8,8 @@ #define __cpproute4me_route4me__ #include -#include +//#include +#include "json/json.h" class CAddressArray; @@ -624,8 +625,18 @@ class CRoute4Me */ int upload_file(const char* file_name, const char* format = "json"); + /** \brief Upload geocoding + * \param - id + * \return \c 0 if the response was successfully received, \c error code if an error occurred. + */ int upload_geocoding(const char* id); + /** \brief Upload JSON geocoding + * \param - body - JSON data + * \return \c 0 if the response was successfully received, \c error code if an error occurred. + */ + int json_geocoding(Json::Value& body); + // TODO section: /** * \brief mark address as visited @@ -653,7 +664,7 @@ class CRoute4Me *R4_TERRITORY_HOST, *AUTHENTICATION_SERVICE, *REGISTRATION_SERVICE, *TRACKING_SERVICE, *LOCATION_SERVICE, *MERGE_SERVICE, *SHARE_SERVICE, *ADDRESS_VISITED_SERVICE, *GEOCODER, *STREET_SERVICE, *USER_LICENSE_SERVICE, *DEVICE_LICENSE_SERVICE, *USER_SERVICE, *VALIDATE_SESSION, *CONFIG_SERVICE, *VEHICLES_SERVICE, - *PREVIEW_SERVICE, *UPLOAD_SERVICE, *UPLOAD_GEOCODING; + *PREVIEW_SERVICE, *UPLOAD_SERVICE, *UPLOAD_GEOCODING, *JSON_GEOCODING; static const char *Driving, *Walking, *Trucking; // TravelMode static const char *MI, *KM; // DistanceUnit static const char *Highways, *Tolls, *MinimizeHighways, *MinimizeTolls, *None; // Avoid diff --git a/src/route4me.cpp b/src/route4me.cpp index 1639673..379e0a3 100644 --- a/src/route4me.cpp +++ b/src/route4me.cpp @@ -45,6 +45,7 @@ const char *CRoute4Me::VEHICLES_SERVICE = "https://www.route4me.com/api/vehicles const char *CRoute4Me::PREVIEW_SERVICE = "https://www.route4me.com/actions/upload/csv-xls-preview.php"; const char *CRoute4Me::UPLOAD_SERVICE = "https://www.route4me.com/actions/upload/upload.php"; const char *CRoute4Me::UPLOAD_GEOCODING = "https://www.route4me.com/actions/upload/csv-xls-geocode.php"; +const char *CRoute4Me::JSON_GEOCODING = "https://www.route4me.com/actions/upload/json-geocode.php"; const char *CRoute4Me::Driving = "Driving"; const char *CRoute4Me::Walking = "Walking"; @@ -445,7 +446,7 @@ int CRoute4Me::update_address_book_contacts(const char* address_id, Json::Value if (!validate(props)) { return m_err_code; } - request(CRoute4Me::REQ_GET, CRoute4Me::R4_ADDRESS_BOOK, props, body); + request(CRoute4Me::REQ_PUT, CRoute4Me::R4_ADDRESS_BOOK, props, body); return m_err_code; } @@ -1234,6 +1235,17 @@ int CRoute4Me::upload_geocoding(const char *id) return m_err_code; } +int CRoute4Me::json_geocoding(Json::Value &body) +{ + Json::Value props(Json::objectValue); + props["api_key"] = m_key; + if (!validate(props)) { + return m_err_code; + } + request(CRoute4Me::REQ_POST, CRoute4Me::JSON_GEOCODING, props, body); + return m_err_code; +} + /////////////////////////////////////////////////////////////////////////////// // CURL wrapper From 8a4ec191797d2fb4925133ccebd091438faea660 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 3 Mar 2017 11:34:56 +0200 Subject: [PATCH 20/25] Refactoring --- include/route4me.h | 4 +- src/route4me.cpp | 139 +++++++++++++++++++++++++++++++-------------- 2 files changed, 99 insertions(+), 44 deletions(-) diff --git a/include/route4me.h b/include/route4me.h index d649019..f3ca260 100644 --- a/include/route4me.h +++ b/include/route4me.h @@ -652,14 +652,14 @@ class CRoute4Me protected: bool validate(const Json::Value& v, const CRoute4Me::key2tp *p = 0, int n = 0, const char **required = 0, int rn = 0); - bool request(CRoute4Me::ReqType method, const char *url, Json::Value& props, Json::Value& content); + bool request(CRoute4Me::ReqType method, const char *serviceURL, Json::Value& props, Json::Value& content, const char* altURL = NULL); public: static key2tp get_route_q_req[], set_gps_req[], get_route_address_req[],\ get_address_notes_req[], get__multiple_routes_req[], update_route_req[], update_route_data_req[], \ duplicate_route_req[], delete_route_req[], add_address_req[], add_address_notes_req[],\ get_address_book_contact_req[]; - static const char *R4_API_HOST, *R4_SHOW_ROUTE_HOST, *R4_DUPLICATE_ROUTE_HOST, *R4_ROUTE_HOST, *R4_SET_GPS_HOST, + static const char *MAIN_HOST, *RAPID_HOST, *R4_API_HOST, *R4_SHOW_ROUTE_HOST, *R4_DUPLICATE_ROUTE_HOST, *R4_ROUTE_HOST, *R4_SET_GPS_HOST, *R4_ADDRESS_HOST, *R4_ADD_ROUTE_NOTES, *R4_ADDRESS_BOOK, *R4_AVOIDANCE_HOST, *R4_ORDER_HOST, *R4_ACTIVITIES, *R4_USERS, *R4_TERRITORY_HOST, *AUTHENTICATION_SERVICE, *REGISTRATION_SERVICE, *TRACKING_SERVICE, *LOCATION_SERVICE, *MERGE_SERVICE, *SHARE_SERVICE, *ADDRESS_VISITED_SERVICE, *GEOCODER, *STREET_SERVICE, *USER_LICENSE_SERVICE, diff --git a/src/route4me.cpp b/src/route4me.cpp index 379e0a3..04800cf 100644 --- a/src/route4me.cpp +++ b/src/route4me.cpp @@ -13,39 +13,41 @@ /////////////////////////////////////////////////////////////////////////////// // Constants - -const char *CRoute4Me::R4_API_HOST = "https://www.route4me.com/api.v4/optimization_problem.php"; -const char *CRoute4Me::R4_SHOW_ROUTE_HOST = "https://www.route4me.com/route4me.php"; -const char *CRoute4Me::R4_ROUTE_HOST = "https://www.route4me.com/api.v4/route.php"; -const char *CRoute4Me::R4_SET_GPS_HOST = "https://www.route4me.com/track/set.php"; -const char *CRoute4Me::R4_ADDRESS_HOST = "https://www.route4me.com/api.v4/address.php"; -const char *CRoute4Me::R4_DUPLICATE_ROUTE_HOST = "https://www.route4me.com/actions/duplicate_route.php"; -const char *CRoute4Me::R4_ADD_ROUTE_NOTES = "https://www.route4me.com/actions/addRouteNotes.php"; -const char *CRoute4Me::R4_ADDRESS_BOOK = "https://www.route4me.com/api.v4/address_book.php"; -const char *CRoute4Me::R4_AVOIDANCE_HOST = "https://www.route4me.com/api.v4/avoidance.php"; -const char *CRoute4Me::R4_ORDER_HOST = "https://www.route4me.com/api.v4/order.php"; -const char *CRoute4Me::R4_ACTIVITIES = "https://www.route4me.com/api/get_activities.php"; -const char *CRoute4Me::R4_USERS = "https://www.route4me.com/api/member/view_users.php"; -const char *CRoute4Me::R4_TERRITORY_HOST = "https://route4me.com/api.v4/territory.php"; -const char *CRoute4Me::AUTHENTICATION_SERVICE = "https://www.route4me.com/actions/authenticate.php"; -const char *CRoute4Me::REGISTRATION_SERVICE = "https://www.route4me.com/actions/register_action.php"; -const char *CRoute4Me::TRACKING_SERVICE = "https://route4me.com/api.v4/status.php"; -const char *CRoute4Me::LOCATION_SERVICE = "https://www.route4me.com/api/track/get_device_location.php"; -const char *CRoute4Me::MERGE_SERVICE = "https://www.route4me.com/actions/merge_routes.php"; -const char *CRoute4Me::SHARE_SERVICE = "https://www.route4me.com/actions/route/share_route.php"; -const char *CRoute4Me::ADDRESS_VISITED_SERVICE = "https://www.route4me.com/api/address/update_address_visited.php"; -const char *CRoute4Me::GEOCODER = "https://www.route4me.com/api/geocoder.php"; -const char *CRoute4Me::STREET_SERVICE = "https://rapid.route4me.com/street_data/"; -const char *CRoute4Me::USER_LICENSE_SERVICE = "https://www.route4me.com/api/member/user_license.php"; -const char *CRoute4Me::DEVICE_LICENSE_SERVICE = "https://www.route4me.com/api/device/verify_device_license.php"; -const char *CRoute4Me::USER_SERVICE = "https://www.route4me.com/api.v4/user.php"; -const char *CRoute4Me::VALIDATE_SESSION = "https://www.route4me.com/datafeed/session/validate_session.php"; -const char *CRoute4Me::CONFIG_SERVICE = "https://route4me.com/api.v4/configuration-settings.php"; -const char *CRoute4Me::VEHICLES_SERVICE = "https://www.route4me.com/api/vehicles/view_vehicles.php"; -const char *CRoute4Me::PREVIEW_SERVICE = "https://www.route4me.com/actions/upload/csv-xls-preview.php"; -const char *CRoute4Me::UPLOAD_SERVICE = "https://www.route4me.com/actions/upload/upload.php"; -const char *CRoute4Me::UPLOAD_GEOCODING = "https://www.route4me.com/actions/upload/csv-xls-geocode.php"; -const char *CRoute4Me::JSON_GEOCODING = "https://www.route4me.com/actions/upload/json-geocode.php"; +const char *CRoute4Me::MAIN_HOST = "https://www.route4me.com/"; +const char *CRoute4Me::RAPID_HOST = "https://rapid.route4me.com/"; + +const char *CRoute4Me::R4_API_HOST = "api.v4/optimization_problem.php"; +const char *CRoute4Me::R4_SHOW_ROUTE_HOST = "route4me.php"; +const char *CRoute4Me::R4_ROUTE_HOST = "api.v4/route.php"; +const char *CRoute4Me::R4_SET_GPS_HOST = "track/set.php"; +const char *CRoute4Me::R4_ADDRESS_HOST = "api.v4/address.php"; +const char *CRoute4Me::R4_DUPLICATE_ROUTE_HOST = "actions/duplicate_route.php"; +const char *CRoute4Me::R4_ADD_ROUTE_NOTES = "actions/addRouteNotes.php"; +const char *CRoute4Me::R4_ADDRESS_BOOK = "api.v4/address_book.php"; +const char *CRoute4Me::R4_AVOIDANCE_HOST = "api.v4/avoidance.php"; +const char *CRoute4Me::R4_ORDER_HOST = "api.v4/order.php"; +const char *CRoute4Me::R4_ACTIVITIES = "api/get_activities.php"; +const char *CRoute4Me::R4_USERS = "api/member/view_users.php"; +const char *CRoute4Me::R4_TERRITORY_HOST = "api.v4/territory.php"; +const char *CRoute4Me::AUTHENTICATION_SERVICE = "actions/authenticate.php"; +const char *CRoute4Me::REGISTRATION_SERVICE = "actions/register_action.php"; +const char *CRoute4Me::TRACKING_SERVICE = "api.v4/status.php"; +const char *CRoute4Me::LOCATION_SERVICE = "api/track/get_device_location.php"; +const char *CRoute4Me::MERGE_SERVICE = "actions/merge_routes.php"; +const char *CRoute4Me::SHARE_SERVICE = "actions/route/share_route.php"; +const char *CRoute4Me::ADDRESS_VISITED_SERVICE = "api/address/update_address_visited.php"; +const char *CRoute4Me::GEOCODER = "api/geocoder.php"; +const char *CRoute4Me::STREET_SERVICE = "street_data/"; +const char *CRoute4Me::USER_LICENSE_SERVICE = "api/member/user_license.php"; +const char *CRoute4Me::DEVICE_LICENSE_SERVICE = "api/device/verify_device_license.php"; +const char *CRoute4Me::USER_SERVICE = "api.v4/user.php"; +const char *CRoute4Me::VALIDATE_SESSION = "datafeed/session/validate_session.php"; +const char *CRoute4Me::CONFIG_SERVICE = "api.v4/configuration-settings.php"; +const char *CRoute4Me::VEHICLES_SERVICE = "api/vehicles/view_vehicles.php"; +const char *CRoute4Me::PREVIEW_SERVICE = "actions/upload/csv-xls-preview.php"; +const char *CRoute4Me::UPLOAD_SERVICE = "actions/upload/upload.php"; +const char *CRoute4Me::UPLOAD_GEOCODING = "actions/upload/csv-xls-geocode.php"; +const char *CRoute4Me::JSON_GEOCODING = "actions/upload/json-geocode.php"; const char *CRoute4Me::Driving = "Driving"; const char *CRoute4Me::Walking = "Walking"; @@ -360,8 +362,41 @@ int CRoute4Me::remove_address_from_route(const char* route_id, const char* route int CRoute4Me::merge_routes(const char *route_ids, const char *depot_address, MapPoint point, bool remove_origin) { - //TODO: Implement missing functionality - return -1; + Json::Value props(Json::objectValue); + + props["api_key"] = m_key; + struct curl_httppost *lastptr=NULL; + + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "route_ids", + CURLFORM_COPYCONTENTS, route_ids, + CURLFORM_END); + + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "depot_address", + CURLFORM_COPYCONTENTS, depot_address, + CURLFORM_END); + + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "depot_lat", + CURLFORM_COPYCONTENTS, &point.lat, + CURLFORM_END); + + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "depot_lng", + CURLFORM_COPYCONTENTS, &point.lng, + CURLFORM_END); + + + if (!validate(props)) + return m_err_code; + Json::Value null; + request(CRoute4Me::REQ_POST, CRoute4Me::MERGE_SERVICE, props, null); + return m_err_code; } int CRoute4Me::share_routes(const char *route_id, const char *email, const char *format) @@ -976,14 +1011,24 @@ int CRoute4Me::modify_member(Json::Value& body, ReqType method) int CRoute4Me::purchase_user_license(Json::Value &body) { - // TODO: Implement missing functionality - return -1; + Json::Value props(Json::objectValue); + props["api_key"] = m_key; + if (!validate(props)) { + return m_err_code; + } + request(CRoute4Me::REQ_POST, CRoute4Me::USER_LICENSE_SERVICE, props, body); + return m_err_code; } int CRoute4Me::purchase_device_license(Json::Value &body) { - // TODO: Implement missing functionality - return -1; + Json::Value props(Json::objectValue); + props["api_key"] = m_key; + if (!validate(props)) { + return m_err_code; + } + request(CRoute4Me::REQ_POST, CRoute4Me::DEVICE_LICENSE_SERVICE, props, body); + return m_err_code; } int CRoute4Me::asset_tracking(const char *id) @@ -1068,7 +1113,7 @@ int CRoute4Me::get_street_address(int seqno) std::string url = std::string(CRoute4Me::STREET_SERVICE ); append_url(url, seqno); Json::Value null; - request(CRoute4Me::REQ_GET, url.c_str(), props, null); + request(CRoute4Me::REQ_GET, url.c_str(), props, null, url.c_str()); return m_err_code; } @@ -1324,14 +1369,24 @@ static size_t read_http_resp(void *contents, size_t size, size_t nmemb, void *us return realsize; } -bool CRoute4Me::request(CRoute4Me::ReqType method, const char *url, Json::Value& props, Json::Value& content) +bool CRoute4Me::request(CRoute4Me::ReqType method, const char *serviceURL, Json::Value& props, Json::Value& content, + const char* altUrl) { long http_code = 0; std::string payload; struct CRoute4Me::http_resp chunk; // prepare buffer for lubcurl http response chunk.memory = (char*) malloc(1); chunk.size = 0; - std::string req = make_arg(m_curl, url, props); // prepare url with parameters + std::string url; + if (altUrl) + { + url = std::string(altUrl); + } + else + { + url = std::string(MAIN_HOST) + std::string(serviceURL); + } + std::string req = make_arg(m_curl, url.c_str(), props); // prepare url with parameters curl_easy_reset(m_curl); curl_easy_getinfo(m_curl, CURLINFO_RESPONSE_CODE, &http_code); curl_easy_setopt(m_curl, CURLOPT_URL, req.c_str()); From 90e6db3c1196c5ec6462bf247ed04f4c39a05ec9 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 6 Mar 2017 12:37:02 +0200 Subject: [PATCH 21/25] Benchmarks --- .travis.yml | 4 ++++ CMakeLists.txt | 1 + benchmarks/ActivitiesBenchmark.cpp | 26 ++++++++++++++++++++++++++ benchmarks/CMakeLists.txt | 4 ++++ 4 files changed, 35 insertions(+) create mode 100644 benchmarks/ActivitiesBenchmark.cpp create mode 100644 benchmarks/CMakeLists.txt diff --git a/.travis.yml b/.travis.yml index 63d7991..280bf4f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,10 @@ compiler: - gcc os: - linux +before_install: +- sudo apt-add-repository ppa:bruun/hayai +- sudo apt-get update +- sudo apt-get install libhayai-dev install: - CURRENT=`pwd` - sudo apt-get install libgtest-dev diff --git a/CMakeLists.txt b/CMakeLists.txt index 13d5c5d..a01ff25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,3 +22,4 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib) ADD_SUBDIRECTORY(src bin) ADD_SUBDIRECTORY(examples examples) ADD_SUBDIRECTORY(test test) +ADD_SUBDIRECTORY(benchmarks benchmarks) diff --git a/benchmarks/ActivitiesBenchmark.cpp b/benchmarks/ActivitiesBenchmark.cpp new file mode 100644 index 0000000..d167a3e --- /dev/null +++ b/benchmarks/ActivitiesBenchmark.cpp @@ -0,0 +1,26 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(ActivitiesFixture, ActivitiesTest, 10, 1) +{ + pRoute->get_all_activities(); +} + + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt new file mode 100644 index 0000000..70bd05b --- /dev/null +++ b/benchmarks/CMakeLists.txt @@ -0,0 +1,4 @@ + +ADD_EXECUTABLE(ActivitiesBenchmark ActivitiesBenchmark.cpp) +TARGET_LINK_LIBRARIES(ActivitiesBenchmark route4me) + From 80f8104923b810d1faa29bd0168df9f38581cb5c Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 6 Mar 2017 13:15:39 +0200 Subject: [PATCH 22/25] Benchmarks --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 280bf4f..fb54809 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ compiler: os: - linux before_install: -- sudo apt-add-repository ppa:bruun/hayai +- sudo apt-add-repository ppa:bruun/hayai -y - sudo apt-get update - sudo apt-get install libhayai-dev install: From 93ffb446b5d4626d461375a5a402add1731f9a36 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 6 Mar 2017 15:30:36 +0200 Subject: [PATCH 23/25] Benchmarks --- benchmarks/ActivitiesBenchmark.cpp | 7 ++++- benchmarks/AddressBookBenchmark.cpp | 31 +++++++++++++++++++ benchmarks/AvoidanceZonesBenchmark.cpp | 25 ++++++++++++++++ benchmarks/CMakeLists.txt | 38 ++++++++++++++++++++++++ benchmarks/ConfigBenchmark.cpp | 25 ++++++++++++++++ benchmarks/GPSBenchmark.cpp | 36 ++++++++++++++++++++++ benchmarks/GeocoderBenchmark.cpp | 34 +++++++++++++++++++++ benchmarks/NotesBenchmark.cpp | 27 +++++++++++++++++ benchmarks/OptimizationBenchmark.cpp | 32 ++++++++++++++++++++ benchmarks/OrdersBenchmark.cpp | 25 ++++++++++++++++ benchmarks/RoutesBenchmark.cpp | 41 ++++++++++++++++++++++++++ benchmarks/SessionBenchmark.cpp | 27 +++++++++++++++++ benchmarks/StreetsBenchmark.cpp | 31 +++++++++++++++++++ benchmarks/TerritoriesBenchmark.cpp | 25 ++++++++++++++++ benchmarks/TrackingBenchmark.cpp | 26 ++++++++++++++++ benchmarks/UsersBenchmark.cpp | 25 ++++++++++++++++ 16 files changed, 454 insertions(+), 1 deletion(-) create mode 100644 benchmarks/AddressBookBenchmark.cpp create mode 100644 benchmarks/AvoidanceZonesBenchmark.cpp create mode 100644 benchmarks/ConfigBenchmark.cpp create mode 100644 benchmarks/GPSBenchmark.cpp create mode 100644 benchmarks/GeocoderBenchmark.cpp create mode 100644 benchmarks/NotesBenchmark.cpp create mode 100644 benchmarks/OptimizationBenchmark.cpp create mode 100644 benchmarks/OrdersBenchmark.cpp create mode 100644 benchmarks/RoutesBenchmark.cpp create mode 100644 benchmarks/SessionBenchmark.cpp create mode 100644 benchmarks/StreetsBenchmark.cpp create mode 100644 benchmarks/TerritoriesBenchmark.cpp create mode 100644 benchmarks/TrackingBenchmark.cpp create mode 100644 benchmarks/UsersBenchmark.cpp diff --git a/benchmarks/ActivitiesBenchmark.cpp b/benchmarks/ActivitiesBenchmark.cpp index d167a3e..39bfea8 100644 --- a/benchmarks/ActivitiesBenchmark.cpp +++ b/benchmarks/ActivitiesBenchmark.cpp @@ -5,11 +5,16 @@ CRoute4Me* pRoute; -BENCHMARK(ActivitiesFixture, ActivitiesTest, 10, 1) +BENCHMARK(ActivitiesFixture, ActivitiesTest, 10, 10) { pRoute->get_all_activities(); } +BENCHMARK(ActivitiesFixture, ActivitiesByTeam, 10, 10) +{ + const char *route_id = "CA902292134DBC134EAF8363426BD247"; + pRoute->get_team_activities(route_id); +} int main() { diff --git a/benchmarks/AddressBookBenchmark.cpp b/benchmarks/AddressBookBenchmark.cpp new file mode 100644 index 0000000..df18d61 --- /dev/null +++ b/benchmarks/AddressBookBenchmark.cpp @@ -0,0 +1,31 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(AddressBookFixture, GetAllContacts, 10, 10) +{ + pRoute->get_address_book_contacts(); +} + +BENCHMARK(AddressBookFixture, GetOneContact, 10, 10) +{ + const char *id = "Wall"; + int ret = pRoute->get_address_book_contacts_by_text(id); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/AvoidanceZonesBenchmark.cpp b/benchmarks/AvoidanceZonesBenchmark.cpp new file mode 100644 index 0000000..b3eec59 --- /dev/null +++ b/benchmarks/AvoidanceZonesBenchmark.cpp @@ -0,0 +1,25 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(AvoidanceZonesFixture, GetAllZones, 10, 10) +{ + pRoute->get_avoidance_zones(); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index 70bd05b..2ea51cb 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -2,3 +2,41 @@ ADD_EXECUTABLE(ActivitiesBenchmark ActivitiesBenchmark.cpp) TARGET_LINK_LIBRARIES(ActivitiesBenchmark route4me) +ADD_EXECUTABLE(OptimizationBenchmark OptimizationBenchmark.cpp) +TARGET_LINK_LIBRARIES(OptimizationBenchmark route4me) + +ADD_EXECUTABLE(AddressBookBenchmark AddressBookBenchmark.cpp) +TARGET_LINK_LIBRARIES(AddressBookBenchmark route4me) + +ADD_EXECUTABLE(ConfigBenchmark ConfigBenchmark.cpp) +TARGET_LINK_LIBRARIES(ConfigBenchmark route4me) + +ADD_EXECUTABLE(GeocoderBenchmark GeocoderBenchmark.cpp) +TARGET_LINK_LIBRARIES(GeocoderBenchmark route4me) + +ADD_EXECUTABLE(GPSBenchmark GPSBenchmark.cpp) +TARGET_LINK_LIBRARIES(GPSBenchmark route4me) + +ADD_EXECUTABLE(NotesBenchmark NotesBenchmark.cpp) +TARGET_LINK_LIBRARIES(NotesBenchmark route4me) + +ADD_EXECUTABLE(OrdersBenchmark OrdersBenchmark.cpp) +TARGET_LINK_LIBRARIES(OrdersBenchmark route4me) + +ADD_EXECUTABLE(RoutesBenchmark RoutesBenchmark.cpp) +TARGET_LINK_LIBRARIES(RoutesBenchmark route4me) + +ADD_EXECUTABLE(SessionBenchmark SessionBenchmark.cpp) +TARGET_LINK_LIBRARIES(SessionBenchmark route4me) + +ADD_EXECUTABLE(StreetsBenchmark StreetsBenchmark.cpp) +TARGET_LINK_LIBRARIES(StreetsBenchmark route4me) + +ADD_EXECUTABLE(TerritoriesBenchmark TerritoriesBenchmark.cpp) +TARGET_LINK_LIBRARIES(TerritoriesBenchmark route4me) + +ADD_EXECUTABLE(TrackingBenchmark TrackingBenchmark.cpp) +TARGET_LINK_LIBRARIES(TrackingBenchmark route4me) + +ADD_EXECUTABLE(UsersBenchmark UsersBenchmark.cpp) +TARGET_LINK_LIBRARIES(UsersBenchmark route4me) diff --git a/benchmarks/ConfigBenchmark.cpp b/benchmarks/ConfigBenchmark.cpp new file mode 100644 index 0000000..9699f27 --- /dev/null +++ b/benchmarks/ConfigBenchmark.cpp @@ -0,0 +1,25 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(ConfigFixture, GetAllConfigs, 10, 10) +{ + pRoute->get_config(); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/GPSBenchmark.cpp b/benchmarks/GPSBenchmark.cpp new file mode 100644 index 0000000..fac28e2 --- /dev/null +++ b/benchmarks/GPSBenchmark.cpp @@ -0,0 +1,36 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(GPSFixture, Set, 10, 10) +{ + Json::Value params(Json::objectValue); + params["route_id"] = "AC16E7D338B551013FF34266FE81A5EE"; + params["format"] = CRoute4Me::Csv; + params["lat"] = 33.14384; + params["lng"] = -83.22466; + params["course"] = 1; + params["speed"] = 120; + params["device_type"] = CRoute4Me::IPhone; + params["device_guid"] = "TEST_GPS"; + params["device_timestamp"] = "2014-06-14 17:43:35"; + params["member_id"] = 1; + int ret = pRoute->set_gps(params); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/GeocoderBenchmark.cpp b/benchmarks/GeocoderBenchmark.cpp new file mode 100644 index 0000000..5d213f4 --- /dev/null +++ b/benchmarks/GeocoderBenchmark.cpp @@ -0,0 +1,34 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(GeocoderFixture, BatchGeocoding, 10, 10) +{ + const char* addrs = "Los20%Angeles20%International20%Airport,20%CA"; + const char* format = "json"; + int ret = pRoute->batch_geocoding(addrs, format); +} + +BENCHMARK(GeocoderFixture, ReverseGeocoding, 10, 10) +{ + const char* addrs = "33.945705,-118.391105"; + const char* format = "json"; + int ret = pRoute->reverse_geocoding(addrs, format); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/NotesBenchmark.cpp b/benchmarks/NotesBenchmark.cpp new file mode 100644 index 0000000..9364f29 --- /dev/null +++ b/benchmarks/NotesBenchmark.cpp @@ -0,0 +1,27 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(AddressBookFixture, GetAllContacts, 10, 10) +{ + const char *route_id = "CA902292134DBC134EAF8363426BD247"; + const char *route_destination_id = "174405709A"; + pRoute->get_route_notes(route_id, route_destination_id); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/OptimizationBenchmark.cpp b/benchmarks/OptimizationBenchmark.cpp new file mode 100644 index 0000000..7720567 --- /dev/null +++ b/benchmarks/OptimizationBenchmark.cpp @@ -0,0 +1,32 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(OptimizationFixture, GetOptimization, 10, 10) +{ + const char *id = "2FB5F91365317758045DB9F19DF5A522"; + pRoute->get_optimization(id); +} + +BENCHMARK(OptimizationFixture, Reoptimize, 10, 10) +{ + const char *id = "c46648541ca5d716a31ffae6f405a37d"; + int ret = pRoute->reoptimize(id); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/OrdersBenchmark.cpp b/benchmarks/OrdersBenchmark.cpp new file mode 100644 index 0000000..e4d933f --- /dev/null +++ b/benchmarks/OrdersBenchmark.cpp @@ -0,0 +1,25 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(OrdersFixture, GetAllOrders, 10, 10) +{ + pRoute->get_all_orders(); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/RoutesBenchmark.cpp b/benchmarks/RoutesBenchmark.cpp new file mode 100644 index 0000000..8fdbc02 --- /dev/null +++ b/benchmarks/RoutesBenchmark.cpp @@ -0,0 +1,41 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; +const char *route_id = "CA902292134DBC134EAF8363426BD247"; + +BENCHMARK(RoutesFixture, GetAllRoutes, 10, 10) +{ + pRoute->get_multiple_routes(); +} + +BENCHMARK(RoutesFixture, ByPointPath, 10, 10) +{ + int ret = pRoute->get_route_path_points(route_id, "Points"); +} + +BENCHMARK(RoutesFixture, ByiD, 10, 10) +{ + int ret = pRoute->get_route_by_id(route_id); +} + +BENCHMARK(RoutesFixture, ByDirection, 10, 10) +{ + int ret = pRoute->get_route_directions(route_id, 1); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/SessionBenchmark.cpp b/benchmarks/SessionBenchmark.cpp new file mode 100644 index 0000000..a87296a --- /dev/null +++ b/benchmarks/SessionBenchmark.cpp @@ -0,0 +1,27 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(SessionFixture, Validate, 10, 10) +{ + const char* session_id="4552222222"; + const char* member_id="787544566"; + int ret = pRoute->validate_session(session_id, member_id); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/StreetsBenchmark.cpp b/benchmarks/StreetsBenchmark.cpp new file mode 100644 index 0000000..5e781aa --- /dev/null +++ b/benchmarks/StreetsBenchmark.cpp @@ -0,0 +1,31 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(StreetsFixture, GetAllStreets, 10, 10) +{ + pRoute->get_all_streets(); +} + +BENCHMARK(StreetsFixture, GetOneStreet, 10, 10) +{ + int seqno = 1; + int ret = pRoute->get_street_address(seqno); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/TerritoriesBenchmark.cpp b/benchmarks/TerritoriesBenchmark.cpp new file mode 100644 index 0000000..e4f6e30 --- /dev/null +++ b/benchmarks/TerritoriesBenchmark.cpp @@ -0,0 +1,25 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(TerritoriesFixture, GetAllTerritories, 10, 10) +{ + pRoute->get_all_territories(); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/TrackingBenchmark.cpp b/benchmarks/TrackingBenchmark.cpp new file mode 100644 index 0000000..bc45fdf --- /dev/null +++ b/benchmarks/TrackingBenchmark.cpp @@ -0,0 +1,26 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(TrackingFixture, Track, 10, 10) +{ + const char *id = "Q7G9P1L9"; + int ret = pRoute->asset_tracking(id); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} diff --git a/benchmarks/UsersBenchmark.cpp b/benchmarks/UsersBenchmark.cpp new file mode 100644 index 0000000..2caf16b --- /dev/null +++ b/benchmarks/UsersBenchmark.cpp @@ -0,0 +1,25 @@ +#include +#include + +#define KEY "11111111111111111111111111111111" + +CRoute4Me* pRoute; + +BENCHMARK(UsersFixture, GetAllUsers, 10, 10) +{ + pRoute->get_users(); +} + +int main() +{ + CRoute4Me::init(); + pRoute = new CRoute4Me(KEY); + + hayai::ConsoleOutputter consoleOutputter; + + hayai::Benchmarker::AddOutputter(consoleOutputter); + hayai::Benchmarker::RunAllTests(); + + pRoute->cleanup(); + return 0; +} From fb6f8299be662bb7fedd3f298fdf7b47d9079584 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 21 Apr 2017 13:26:48 +0300 Subject: [PATCH 24/25] Code review --- src/route4me.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/src/route4me.cpp b/src/route4me.cpp index 04800cf..6ee0988 100644 --- a/src/route4me.cpp +++ b/src/route4me.cpp @@ -48,6 +48,8 @@ const char *CRoute4Me::PREVIEW_SERVICE = "actions/upload/csv-xls-preview.php"; const char *CRoute4Me::UPLOAD_SERVICE = "actions/upload/upload.php"; const char *CRoute4Me::UPLOAD_GEOCODING = "actions/upload/csv-xls-geocode.php"; const char *CRoute4Me::JSON_GEOCODING = "actions/upload/json-geocode.php"; +const char *CRoute4Me::DEPARTED_SERVICE = "api/route/mark_address_departed.php"; +const char *CRoute4Me::HYBRID_SERVICE = "api.v4/hybrid_date_optimization.php"; const char *CRoute4Me::Driving = "Driving"; const char *CRoute4Me::Walking = "Walking"; @@ -1361,8 +1363,11 @@ static size_t read_http_resp(void *contents, size_t size, size_t nmemb, void *us { size_t realsize = size * nmemb; struct CRoute4Me::http_resp *mem = (struct CRoute4Me::http_resp *)userp; - mem->memory = (char*) std::realloc(mem->memory, mem->size + realsize + 1); - if(mem->memory == NULL) return 0; + char* upd_memory = (char*) std::realloc(mem->memory, mem->size + realsize + 1); + if(upd_memory == NULL) + return 0; + else + mem->memory = upd_memory; std::memcpy(&(mem->memory[mem->size]), contents, realsize); mem->size += realsize; mem->memory[mem->size] = 0; @@ -1566,4 +1571,57 @@ int CRoute4Me::get_address(const char* route_id, const char* dest_id) request(CRoute4Me::REQ_GET, CRoute4Me::R4_ROUTE_HOST, props, null); return m_err_code; } + +int CRoute4Me::mark_address_departed(const char *route_id, const char *address_id, bool departed, int member_id, + Json::Value& body) +{ + Json::Value props(Json::objectValue); + props["api_key"] = m_key; + props["route_id"] = route_id; + props["address_id"] = address_id; + props["is_departed"] = departed; + props["member_id"] = member_id; + + request(CRoute4Me::REQ_PUT, CRoute4Me::DEPARTED_SERVICE, props, body); + return m_err_code; +} + +int CRoute4Me::mark_address_visited(const char *route_id, const char *address_id, bool visited, int member_id, + Json::Value& body) +{ + Json::Value props(Json::objectValue); + props["api_key"] = m_key; + props["route_id"] = route_id; + props["address_id"] = address_id; + props["is_visited"] = visited; + props["member_id"] = member_id; + + request(CRoute4Me::REQ_PUT, CRoute4Me::ADDRESS_VISITED_SERVICE, props, body); + return m_err_code; +} + +int CRoute4Me::mark_address_detected(const char *route_id, const char *route_destination_id, + Json::Value& body) +{ + Json::Value props(Json::objectValue); + props["api_key"] = m_key; + props["route_id"] = route_id; + props["route_destination_id"] = route_destination_id; + + request(CRoute4Me::REQ_PUT, CRoute4Me::R4_ADDRESS_HOST, props, body); + return m_err_code; +} + +int CRoute4Me::get_hybrid_route(const char *target_date_string, int tz_offset) +{ + Json::Value props(Json::objectValue); + props["api_key"] = m_key; + props["target_date_string"] = target_date_string; + props["timezone_offset_minutes"] = tz_offset; + + Json::Value null; + request(CRoute4Me::REQ_GET, CRoute4Me::HYBRID_SERVICE, props, null); + return m_err_code; +} + /////////////////////////////////////////////////////////////////////////////// From 9890b4534aa919608a279da7e08110dd2cfd7ab6 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 21 Apr 2017 13:35:16 +0300 Subject: [PATCH 25/25] Some methods added --- include/route4me.h | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/include/route4me.h b/include/route4me.h index f3ca260..25cf431 100644 --- a/include/route4me.h +++ b/include/route4me.h @@ -637,7 +637,6 @@ class CRoute4Me */ int json_geocoding(Json::Value& body); - // TODO section: /** * \brief mark address as visited * \param route_id @@ -646,10 +645,35 @@ class CRoute4Me * \param member * \return \c 0 if the response was successfully received, \c error code if an error occurred. */ - int mark_address_visited(const char* route_id, const char* address_id, bool visited, int member_id); + int mark_address_visited(const char* route_id, const char* address_id, bool visited, int member_id, Json::Value& body); - int mark_address_departed(const char* route_id, const char* address_id, bool departed, int member_id); + /** + * \brief mark address as departed + * \param route_id + * \param address_id + * \param visited + * \param member + * \return \c 0 if the response was successfully received, \c error code if an error occurred. + */ + int mark_address_departed(const char* route_id, const char* address_id, bool departed, int member_id, Json::Value& body); + + /** + * \brief mark address as detected + * \param route_id + * \param address_id + * \param visited + * \param member + * \return \c 0 if the response was successfully received, \c error code if an error occurred. + */ + int mark_address_detected(const char* route_id, const char* route_destination_id, Json::Value& body); + /** + * \brief get hybrid route + * \param target scheduled date + * \param timezone offset in minutes + * \return \c 0 if the response was successfully received, \c error code if an error occurred. + */ + int get_hybrid_route(const char* target_date_string, int tz_offset); protected: bool validate(const Json::Value& v, const CRoute4Me::key2tp *p = 0, int n = 0, const char **required = 0, int rn = 0); bool request(CRoute4Me::ReqType method, const char *serviceURL, Json::Value& props, Json::Value& content, const char* altURL = NULL); @@ -664,7 +688,7 @@ class CRoute4Me *R4_TERRITORY_HOST, *AUTHENTICATION_SERVICE, *REGISTRATION_SERVICE, *TRACKING_SERVICE, *LOCATION_SERVICE, *MERGE_SERVICE, *SHARE_SERVICE, *ADDRESS_VISITED_SERVICE, *GEOCODER, *STREET_SERVICE, *USER_LICENSE_SERVICE, *DEVICE_LICENSE_SERVICE, *USER_SERVICE, *VALIDATE_SESSION, *CONFIG_SERVICE, *VEHICLES_SERVICE, - *PREVIEW_SERVICE, *UPLOAD_SERVICE, *UPLOAD_GEOCODING, *JSON_GEOCODING; + *PREVIEW_SERVICE, *UPLOAD_SERVICE, *UPLOAD_GEOCODING, *JSON_GEOCODING, *DEPARTED_SERVICE, *HYBRID_SERVICE; static const char *Driving, *Walking, *Trucking; // TravelMode static const char *MI, *KM; // DistanceUnit static const char *Highways, *Tolls, *MinimizeHighways, *MinimizeTolls, *None; // Avoid