@josuelmm/cordova-background-geolocation 2.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/.npmignore +23 -0
  2. package/CHANGELOG.md +787 -0
  3. package/CONTRIBUTORS.md +15 -0
  4. package/HISTORY.md +734 -0
  5. package/LICENSE +191 -0
  6. package/README.md +125 -0
  7. package/RELEASE.MD +5 -0
  8. package/android/CDVBackgroundGeolocation/src/main/AndroidManifest.xml +23 -0
  9. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/HandlerWrapper.java +18 -0
  10. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JavaScriptInterface.java +22 -0
  11. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JsEvaluator.java +133 -0
  12. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JsFunctionCallFormatter.java +37 -0
  13. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/WebViewWrapper.java +71 -0
  14. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/CallJavaResultInterface.java +8 -0
  15. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/HandlerWrapperInterface.java +5 -0
  16. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/JsCallback.java +10 -0
  17. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/JsEvaluatorInterface.java +18 -0
  18. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/WebViewWrapperInterface.java +14 -0
  19. package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/ConfigMapper.java +148 -0
  20. package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/PluginRegistry.java +25 -0
  21. package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/headless/JsEvaluatorTaskRunner.java +53 -0
  22. package/android/CDVBackgroundGeolocation/src/main/java/com/tenforwardconsulting/bgloc/cordova/BackgroundGeolocationPlugin.java +603 -0
  23. package/android/CDVBackgroundGeolocation/src/main/res/values/strings.xml +4 -0
  24. package/android/CDVBackgroundGeolocation/src/test/java/com/marianhello/ConfigMapperTest.java +208 -0
  25. package/android/common/src/androidTest/java/com/marianhello/bgloc/BackgroundGeolocationFacadeTest.java +45 -0
  26. package/android/common/src/androidTest/java/com/marianhello/bgloc/BatchManagerTest.java +570 -0
  27. package/android/common/src/androidTest/java/com/marianhello/bgloc/ConfigTest.java +76 -0
  28. package/android/common/src/androidTest/java/com/marianhello/bgloc/ContentProviderLocationDAOTest.java +437 -0
  29. package/android/common/src/androidTest/java/com/marianhello/bgloc/DBLogReaderTest.java +95 -0
  30. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationContentProviderTest.java +159 -0
  31. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationServiceProxyTest.java +161 -0
  32. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationServiceTest.java +247 -0
  33. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteConfigurationDAOTest.java +200 -0
  34. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteLocationDAOTest.java +457 -0
  35. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteLocationDAOThreadTest.java +96 -0
  36. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteOpenHelperTest.java +225 -0
  37. package/android/common/src/androidTest/java/com/marianhello/bgloc/TestPluginDelegate.java +46 -0
  38. package/android/common/src/androidTest/java/com/marianhello/bgloc/TestResourceResolver.java +14 -0
  39. package/android/common/src/androidTest/java/com/marianhello/bgloc/provider/MockLocationProvider.java +50 -0
  40. package/android/common/src/androidTest/java/com/marianhello/bgloc/provider/TestLocationProviderFactory.java +17 -0
  41. package/android/common/src/androidTest/java/com/marianhello/bgloc/sqlite/SQLiteOpenHelper10.java +92 -0
  42. package/android/common/src/androidTest/java/com/marianhello/bgloc/test/LocationProviderTestCase.java +107 -0
  43. package/android/common/src/androidTest/java/com/marianhello/bgloc/test/TestConstants.java +5 -0
  44. package/android/common/src/main/AndroidManifest.xml +72 -0
  45. package/android/common/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +523 -0
  46. package/android/common/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +59 -0
  47. package/android/common/src/main/java/com/marianhello/bgloc/Config.java +652 -0
  48. package/android/common/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
  49. package/android/common/src/main/java/com/marianhello/bgloc/HttpPostService.java +224 -0
  50. package/android/common/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
  51. package/android/common/src/main/java/com/marianhello/bgloc/PluginDelegate.java +19 -0
  52. package/android/common/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
  53. package/android/common/src/main/java/com/marianhello/bgloc/PostLocationTask.java +188 -0
  54. package/android/common/src/main/java/com/marianhello/bgloc/ResourceResolver.java +55 -0
  55. package/android/common/src/main/java/com/marianhello/bgloc/data/AbstractLocationTemplate.java +69 -0
  56. package/android/common/src/main/java/com/marianhello/bgloc/data/ArrayListLocationTemplate.java +88 -0
  57. package/android/common/src/main/java/com/marianhello/bgloc/data/BackgroundActivity.java +108 -0
  58. package/android/common/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +994 -0
  59. package/android/common/src/main/java/com/marianhello/bgloc/data/ConfigurationDAO.java +13 -0
  60. package/android/common/src/main/java/com/marianhello/bgloc/data/DAOFactory.java +17 -0
  61. package/android/common/src/main/java/com/marianhello/bgloc/data/HashMapLocationTemplate.java +82 -0
  62. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationDAO.java +22 -0
  63. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTemplate.java +12 -0
  64. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +65 -0
  65. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
  66. package/android/common/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +395 -0
  67. package/android/common/src/main/java/com/marianhello/bgloc/data/provider/LocationContentProvider.java +321 -0
  68. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +76 -0
  69. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +160 -0
  70. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +112 -0
  71. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +506 -0
  72. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +151 -0
  73. package/android/common/src/main/java/com/marianhello/bgloc/headless/AbstractTaskRunner.java +15 -0
  74. package/android/common/src/main/java/com/marianhello/bgloc/headless/ActivityTask.java +48 -0
  75. package/android/common/src/main/java/com/marianhello/bgloc/headless/JsCallback.java +10 -0
  76. package/android/common/src/main/java/com/marianhello/bgloc/headless/LocationTask.java +60 -0
  77. package/android/common/src/main/java/com/marianhello/bgloc/headless/StationaryTask.java +25 -0
  78. package/android/common/src/main/java/com/marianhello/bgloc/headless/Task.java +8 -0
  79. package/android/common/src/main/java/com/marianhello/bgloc/headless/TaskRunner.java +5 -0
  80. package/android/common/src/main/java/com/marianhello/bgloc/headless/TaskRunnerFactory.java +8 -0
  81. package/android/common/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +171 -0
  82. package/android/common/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +282 -0
  83. package/android/common/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +610 -0
  84. package/android/common/src/main/java/com/marianhello/bgloc/provider/LocationProvider.java +32 -0
  85. package/android/common/src/main/java/com/marianhello/bgloc/provider/LocationProviderFactory.java +47 -0
  86. package/android/common/src/main/java/com/marianhello/bgloc/provider/ProviderDelegate.java +12 -0
  87. package/android/common/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +145 -0
  88. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationService.java +16 -0
  89. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +749 -0
  90. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceInfo.java +6 -0
  91. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceInfoImpl.java +41 -0
  92. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceIntentBuilder.java +203 -0
  93. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +130 -0
  94. package/android/common/src/main/java/com/marianhello/bgloc/sync/AccountHelper.java +39 -0
  95. package/android/common/src/main/java/com/marianhello/bgloc/sync/Authenticator.java +68 -0
  96. package/android/common/src/main/java/com/marianhello/bgloc/sync/AuthenticatorService.java +28 -0
  97. package/android/common/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +278 -0
  98. package/android/common/src/main/java/com/marianhello/bgloc/sync/NotificationHelper.java +148 -0
  99. package/android/common/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +249 -0
  100. package/android/common/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
  101. package/android/common/src/main/java/com/marianhello/logging/DBLogReader.java +203 -0
  102. package/android/common/src/main/java/com/marianhello/logging/LogEntry.java +99 -0
  103. package/android/common/src/main/java/com/marianhello/logging/LoggerManager.java +70 -0
  104. package/android/common/src/main/java/com/marianhello/logging/UncaughtExceptionLogger.java +36 -0
  105. package/android/common/src/main/java/com/marianhello/utils/CloneHelper.java +22 -0
  106. package/android/common/src/main/java/com/marianhello/utils/Convert.java +56 -0
  107. package/android/common/src/main/java/com/marianhello/utils/TextUtils.java +72 -0
  108. package/android/common/src/main/java/com/marianhello/utils/ToneGenerator.java +68 -0
  109. package/android/common/src/main/java/org/apache/commons/io/Charsets.java +153 -0
  110. package/android/common/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java +344 -0
  111. package/android/common/src/main/java/org/chromium/content/browser/ThreadUtils.java +134 -0
  112. package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlExpression.java +398 -0
  113. package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlSelectStatement.java +671 -0
  114. package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlStatement.java +29 -0
  115. package/android/common/src/main/java/ru/andremoniy/utils/TextUtils.java +61 -0
  116. package/android/common/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  117. package/android/common/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  118. package/android/common/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  119. package/android/common/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  120. package/android/common/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  121. package/android/common/src/main/res/values/strings.xml +4 -0
  122. package/android/common/src/main/res/xml/authenticator.xml +7 -0
  123. package/android/common/src/main/res/xml/syncadapter.xml +9 -0
  124. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/ArrayListLocationTemplateTest.java +82 -0
  125. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/BackgroundLocationTest.java +128 -0
  126. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/ConfigTest.java +191 -0
  127. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/DBLogReaderTest.java +37 -0
  128. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/HashMapLocationTemplateTest.java +216 -0
  129. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/HttpPostServiceTest.java +223 -0
  130. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/LocationTemplateFactoryTest.java +50 -0
  131. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/PostLocationTaskTest.java +180 -0
  132. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/TestHelper.java +16 -0
  133. package/android/dependencies.gradle +13 -0
  134. package/ios/CDVBackgroundGeolocation/CDVBackgroundGeolocation.h +41 -0
  135. package/ios/CDVBackgroundGeolocation/CDVBackgroundGeolocation.m +526 -0
  136. package/ios/common/BackgroundGeolocation/CocoaLumberjack.h +1945 -0
  137. package/ios/common/BackgroundGeolocation/CocoaLumberjack.m +5255 -0
  138. package/ios/common/BackgroundGeolocation/FMDB.h +2357 -0
  139. package/ios/common/BackgroundGeolocation/FMDB.m +2672 -0
  140. package/ios/common/BackgroundGeolocation/FMDBLogger.h +42 -0
  141. package/ios/common/BackgroundGeolocation/FMDBLogger.m +264 -0
  142. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.h +41 -0
  143. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.m +68 -0
  144. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager+Internal.h +33 -0
  145. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.h +178 -0
  146. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.m +1025 -0
  147. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.h +103 -0
  148. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.m +238 -0
  149. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequestDefines.h +163 -0
  150. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.h +39 -0
  151. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.m +37 -0
  152. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.h +51 -0
  153. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.m +53 -0
  154. package/ios/common/BackgroundGeolocation/MAURActivity.h +23 -0
  155. package/ios/common/BackgroundGeolocation/MAURActivity.m +52 -0
  156. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.h +18 -0
  157. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.m +202 -0
  158. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +60 -0
  159. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +638 -0
  160. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +34 -0
  161. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +185 -0
  162. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.h +25 -0
  163. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.m +105 -0
  164. package/ios/common/BackgroundGeolocation/MAURConfig.h +74 -0
  165. package/ios/common/BackgroundGeolocation/MAURConfig.m +485 -0
  166. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +49 -0
  167. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +51 -0
  168. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.h +20 -0
  169. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +514 -0
  170. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.h +17 -0
  171. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +97 -0
  172. package/ios/common/BackgroundGeolocation/MAURLocation.h +59 -0
  173. package/ios/common/BackgroundGeolocation/MAURLocation.m +349 -0
  174. package/ios/common/BackgroundGeolocation/MAURLocationContract.h +34 -0
  175. package/ios/common/BackgroundGeolocation/MAURLocationContract.m +35 -0
  176. package/ios/common/BackgroundGeolocation/MAURLocationManager.h +53 -0
  177. package/ios/common/BackgroundGeolocation/MAURLocationManager.m +287 -0
  178. package/ios/common/BackgroundGeolocation/MAURLogReader.h +26 -0
  179. package/ios/common/BackgroundGeolocation/MAURLogReader.m +122 -0
  180. package/ios/common/BackgroundGeolocation/MAURLogging.h +19 -0
  181. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +40 -0
  182. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +250 -0
  183. package/ios/common/BackgroundGeolocation/MAURProviderDelegate.h +52 -0
  184. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.h +18 -0
  185. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.m +129 -0
  186. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.h +26 -0
  187. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +278 -0
  188. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.h +57 -0
  189. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.m +93 -0
  190. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +38 -0
  191. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +380 -0
  192. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.h +32 -0
  193. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.m +276 -0
  194. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.h +20 -0
  195. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.m +62 -0
  196. package/ios/common/BackgroundGeolocation/Reachability.h +102 -0
  197. package/ios/common/BackgroundGeolocation/Reachability.m +475 -0
  198. package/ios/common/BackgroundGeolocation/SOMotionDetector/CHANGELOG.md +2 -0
  199. package/ios/common/BackgroundGeolocation/SOMotionDetector/LICENSE +21 -0
  200. package/ios/common/BackgroundGeolocation/SOMotionDetector/README.md +135 -0
  201. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.h +80 -0
  202. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.m +147 -0
  203. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.h +30 -0
  204. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.m +42 -0
  205. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.h +99 -0
  206. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.m +327 -0
  207. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.h +44 -0
  208. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.m +94 -0
  209. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/README.md +170 -0
  210. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.h +55 -0
  211. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.m +47 -0
  212. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlDataManipulationCommand.h +27 -0
  213. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.h +250 -0
  214. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.m +259 -0
  215. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.h +360 -0
  216. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.m +427 -0
  217. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlStatement.h +37 -0
  218. package/ios/common/BackgroundGeolocation.xcodeproj/project.pbxproj +760 -0
  219. package/ios/common/BackgroundGeolocationTests/Info.plist +24 -0
  220. package/ios/common/BackgroundGeolocationTests/MAURBackgroundLocationTest.m +185 -0
  221. package/ios/common/BackgroundGeolocationTests/MAURConfigTest.m +161 -0
  222. package/ios/common/BackgroundGeolocationTests/MAURGeolocationOpenHelperTest.m +102 -0
  223. package/ios/common/BackgroundGeolocationTests/MAURLocationTest.m +216 -0
  224. package/ios/common/BackgroundGeolocationTests/MAURLocationUploaderTest.m +55 -0
  225. package/ios/common/BackgroundGeolocationTests/MAURLogReaderTest.m +43 -0
  226. package/ios/common/BackgroundGeolocationTests/MAURSQLiteConfigurationDAOTest.m +102 -0
  227. package/ios/common/BackgroundGeolocationTests/MAURSQLiteHelperTest.m +41 -0
  228. package/ios/common/BackgroundGeolocationTests/MAURSQLiteLocationDAOTests.m +240 -0
  229. package/ios/common/BackgroundGeolocationTests/MAURSQLiteLocationDAOThreadTest.m +84 -0
  230. package/ios/common/BackgroundGeolocationTests/MAURSQLiteOpenHelperTest.m +144 -0
  231. package/ios/common/CONTRIBUTORS.md +10 -0
  232. package/ios/common/LICENSE +191 -0
  233. package/ios/common/README.md +7 -0
  234. package/ios/common/scripts/xcode-refactor.js +184 -0
  235. package/package.json +44 -0
  236. package/plugin.xml +355 -0
  237. package/www/BackgroundGeolocation.d.ts +910 -0
  238. package/www/BackgroundGeolocation.js +247 -0
  239. package/www/radio.js +177 -0
@@ -0,0 +1,55 @@
1
+ //
2
+ // MAURLocationUploaderTest.m
3
+ // BackgroundGeolocationTests
4
+ //
5
+ // Created by Marian Hello on 07/07/16.
6
+ // Copyright © 2016 mauron85. All rights reserved.
7
+ //
8
+
9
+ #import <XCTest/XCTest.h>
10
+ #import "MAURBackgroundSync.h"
11
+ #import "MAURSQLiteLocationDAO.h"
12
+
13
+ @interface BackgroundSyncTest : XCTestCase
14
+
15
+ @end
16
+
17
+ @implementation BackgroundSyncTest
18
+
19
+ - (void)setUp {
20
+ [super setUp];
21
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
22
+ [locationDAO clearDatabase];
23
+ }
24
+
25
+ - (void)tearDown {
26
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
27
+ [super tearDown];
28
+ }
29
+
30
+ - (void)testSync {
31
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
32
+ MAURLocation *location;
33
+
34
+ for (int i = 0; i < 10; i++) {
35
+ location = [[MAURLocation alloc] init];
36
+ location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577+i];
37
+ location.accuracy = [NSNumber numberWithDouble:5+i];
38
+ location.speed = [NSNumber numberWithDouble:31.67+i];
39
+ location.heading = [NSNumber numberWithDouble:298.83+i];
40
+ location.altitude = [NSNumber numberWithDouble:940+i];
41
+ location.latitude = [NSNumber numberWithDouble:37.35439853+i];
42
+ location.longitude = [NSNumber numberWithDouble:-122.1100721+i];
43
+ location.provider = @"TEST";
44
+ location.locationProvider = [NSNumber numberWithInt:-1];
45
+
46
+ [locationDAO persistLocation:location];
47
+ }
48
+
49
+ MAURBackgroundSync *uploader = [[MAURBackgroundSync alloc] init];
50
+ [uploader sync:@"http://192.168.81.15:3000/testSync" withTemplate:nil withHttpHeaders:nil];
51
+ sleep(5);
52
+
53
+ }
54
+
55
+ @end
@@ -0,0 +1,43 @@
1
+ //
2
+ // MAURLogReaderTest.m
3
+ // BackgroundGeolocationTests
4
+ //
5
+ // Created by Marian Hello on 13/04/2018.
6
+ // Copyright © 2018 mauron85. All rights reserved.
7
+ //
8
+
9
+ #import <Foundation/Foundation.h>
10
+ #import <XCTest/XCTest.h>
11
+ #import "MAURLogReader.h"
12
+
13
+ @interface MAURLogReaderTest : XCTestCase
14
+
15
+ @end
16
+
17
+ @implementation MAURLogReaderTest
18
+
19
+ - (void)testSqlStatementDescending {
20
+ MAURLogReader *lr = [[MAURLogReader alloc] init];
21
+ NSString *stmt = [lr prepareSQL:100 fromLogEntryId:0 minLogLevel:14];
22
+ XCTAssertEqualObjects(stmt, @"SELECT [rowid], [context], [level], [message], [timestamp] FROM [logs] WHERE [level] <= 14 ORDER BY [timestamp] DESC, [rowid] DESC LIMIT 100;");
23
+ }
24
+
25
+ - (void)testSqlStatementAscending {
26
+ MAURLogReader *lr = [[MAURLogReader alloc] init];
27
+ NSString *stmt = [lr prepareSQL:-100 fromLogEntryId:0 minLogLevel:14];
28
+ XCTAssertEqualObjects(stmt, @"SELECT [rowid], [context], [level], [message], [timestamp] FROM [logs] WHERE [level] <= 14 ORDER BY [timestamp] ASC, [rowid] ASC LIMIT 100;");
29
+ }
30
+
31
+ - (void)testSqlStatementFromOffsetDescending {
32
+ MAURLogReader *lr = [[MAURLogReader alloc] init];
33
+ NSString *stmt = [lr prepareSQL:100 fromLogEntryId:100 minLogLevel:14];
34
+ XCTAssertEqualObjects(stmt, @"SELECT [rowid], [context], [level], [message], [timestamp] FROM [logs] WHERE [level] <= 14 AND [rowid] < 100 ORDER BY [timestamp] DESC, [rowid] DESC LIMIT 100;");
35
+ }
36
+
37
+ - (void)testSqlStatementFromOffsetAscending {
38
+ MAURLogReader *lr = [[MAURLogReader alloc] init];
39
+ NSString *stmt = [lr prepareSQL:-100 fromLogEntryId:100 minLogLevel:14];
40
+ XCTAssertEqualObjects(stmt, @"SELECT [rowid], [context], [level], [message], [timestamp] FROM [logs] WHERE [level] <= 14 AND [rowid] > 100 ORDER BY [timestamp] ASC, [rowid] ASC LIMIT 100;");
41
+ }
42
+
43
+ @end
@@ -0,0 +1,102 @@
1
+ //
2
+ // MAURSQLiteConfigurationDAOTest.m
3
+ // BackgroundGeolocationTests
4
+ //
5
+ // Created by Marian Hello on 01/12/2017.
6
+ // Copyright © 2017 mauron85. All rights reserved.
7
+ //
8
+
9
+ #import <XCTest/XCTest.h>
10
+ #import "MAURConfig.h"
11
+ #import "MAURSQLiteConfigurationDAO.h"
12
+
13
+ @interface MAURSQLiteConfigurationDAOTest : XCTestCase
14
+
15
+ @end
16
+
17
+ @implementation MAURSQLiteConfigurationDAOTest
18
+
19
+ - (void)setUp {
20
+ [super setUp];
21
+ }
22
+
23
+ - (void)tearDown {
24
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
25
+ [super tearDown];
26
+ }
27
+
28
+ - (void)testEmptyConfiguration {
29
+ MAURSQLiteConfigurationDAO *dao = [MAURSQLiteConfigurationDAO sharedInstance];
30
+ XCTAssertTrue([dao clearDatabase]);
31
+ MAURConfig *config = [dao retrieveConfiguration];
32
+ XCTAssertNil(config);
33
+ }
34
+
35
+ - (void)testPersistConfiguration {
36
+ MAURSQLiteConfigurationDAO *dao = [MAURSQLiteConfigurationDAO sharedInstance];
37
+ MAURConfig *config = [[MAURConfig alloc] init];
38
+
39
+ BOOL success = [dao persistConfiguration:config];
40
+ config = [dao retrieveConfiguration];
41
+
42
+ XCTAssertTrue(success);
43
+ XCTAssertFalse([config hasStationaryRadius]);
44
+ XCTAssertFalse([config hasDistanceFilter]);
45
+ XCTAssertFalse([config hasDesiredAccuracy]);
46
+ XCTAssertFalse([config hasDebug]);
47
+ XCTAssertFalse([config hasActivityType]);
48
+ XCTAssertFalse([config hasActivitiesInterval]);
49
+ XCTAssertFalse([config hasStopOnTerminate]);
50
+ XCTAssertFalse([config hasUrl]);
51
+ XCTAssertFalse([config hasSyncUrl]);
52
+ XCTAssertFalse([config hasSyncThreshold]);
53
+ XCTAssertFalse([config hasHttpHeaders]);
54
+ XCTAssertFalse([config hasSaveBatteryOnBackground]);
55
+ XCTAssertFalse([config hasMaxLocations]);
56
+ XCTAssertFalse([config hasPauseLocationUpdates]);
57
+ XCTAssertFalse([config hasLocationProvider]);
58
+ }
59
+
60
+
61
+ - (void)testRetrieveConfiguration {
62
+ MAURSQLiteConfigurationDAO *dao = [MAURSQLiteConfigurationDAO sharedInstance];
63
+ MAURConfig *config = [[MAURConfig alloc] init];
64
+ config.stationaryRadius = [NSNumber numberWithInt:99];
65
+ config.distanceFilter = [NSNumber numberWithInt:20];
66
+ config.desiredAccuracy = [NSNumber numberWithInt:30];
67
+ config._debug = [NSNumber numberWithBool:YES];
68
+ config.activityType = @"MyActivity";
69
+ config.activitiesInterval = [NSNumber numberWithInt:1234];
70
+ config._stopOnTerminate = [NSNumber numberWithBool:YES];
71
+ config.url = @"http://server:3000/locations";
72
+ config.syncUrl = @"http://server:3000/sync";
73
+ config.syncThreshold = [NSNumber numberWithInt:100];
74
+ config.httpHeaders = [[NSMutableDictionary alloc] init];
75
+ [config.httpHeaders setObject:@"bar" forKey:@"foo"];
76
+ config._saveBatteryOnBackground = [NSNumber numberWithBool:YES];
77
+ config.maxLocations = [NSNumber numberWithInt:10];
78
+ config._pauseLocationUpdates = [NSNumber numberWithBool:YES];
79
+ config.locationProvider = [NSNumber numberWithInt:2];
80
+
81
+ [dao persistConfiguration:config];
82
+ MAURConfig *stored = [dao retrieveConfiguration];
83
+
84
+ XCTAssertEqualObjects(config.stationaryRadius, stored.stationaryRadius);
85
+ XCTAssertEqualObjects(config.distanceFilter, stored.distanceFilter);
86
+ XCTAssertEqualObjects(config.desiredAccuracy, stored.desiredAccuracy);
87
+ XCTAssertEqual([config isDebugging], [stored isDebugging]);
88
+ XCTAssertEqualObjects(config.activityType, stored.activityType);
89
+ XCTAssertEqualObjects(config.activitiesInterval, stored.activitiesInterval);
90
+ XCTAssertEqual([config stopOnTerminate], [stored stopOnTerminate]);
91
+ XCTAssertEqualObjects(config.url, stored.url);
92
+ XCTAssertEqualObjects(config.syncUrl, stored.syncUrl);
93
+ XCTAssertEqualObjects(config.syncThreshold, stored.syncThreshold);
94
+ XCTAssertEqualObjects(config.httpHeaders, stored.httpHeaders);
95
+ XCTAssertEqual([config saveBatteryOnBackground], [stored saveBatteryOnBackground]);
96
+ XCTAssertEqualObjects(config.maxLocations, stored.maxLocations);
97
+ XCTAssertEqual([config pauseLocationUpdates], [stored pauseLocationUpdates]);
98
+ XCTAssertEqualObjects(config.locationProvider, stored.locationProvider);
99
+ }
100
+
101
+
102
+ @end
@@ -0,0 +1,41 @@
1
+ //
2
+ // MAURSQLiteHelperTest.m
3
+ // BackgroundGeolocationTests
4
+ //
5
+ // Created by Marian Hello on 27/06/16.
6
+ // Copyright © 2016 mauron85. All rights reserved.
7
+ //
8
+
9
+ #import <XCTest/XCTest.h>
10
+ #import "MAURSQLiteHelper.h"
11
+
12
+ @interface MAURSQLiteHelperTest : XCTestCase
13
+
14
+ @end
15
+
16
+ @implementation MAURSQLiteHelperTest
17
+
18
+ - (void)setUp {
19
+ [super setUp];
20
+ // Put setup code here. This method is called before the invocation of each test method in the class.
21
+ }
22
+
23
+ - (void)tearDown {
24
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
25
+ [super tearDown];
26
+ }
27
+
28
+ - (void)testCreateTableSQLStatement {
29
+ NSString *tableName = @"TEST_TABLE";
30
+ NSArray *columns = @[
31
+ @{ @"name": @"pk_col", @"type": [SQLPrimaryKeyAutoIncColumnType sqlColumnWithType: kInteger]},
32
+ @{ @"name": @"text_col", @"type": [SQLColumnType sqlColumnWithType: kText]},
33
+ @{ @"name": @"real_col", @"type": [SQLColumnType sqlColumnWithType: kReal]},
34
+ @{ @"name": @"int_col", @"type": [SQLColumnType sqlColumnWithType: kInteger]}
35
+ ];
36
+ NSString *sql = [MAURSQLiteHelper createTableSqlStatement:tableName columns:columns];
37
+ XCTAssertEqualObjects(sql, @"CREATE TABLE IF NOT EXISTS TEST_TABLE ( pk_col INTEGER PRIMARY KEY AUTOINCREMENT , text_col TEXT , real_col REAL , int_col INTEGER );");
38
+ }
39
+
40
+
41
+ @end
@@ -0,0 +1,240 @@
1
+ //
2
+ // SQLiteLocationDAOTest.m
3
+ // BackgroundGeolocationTests
4
+ //
5
+ // Created by Marian Hello on 10/06/16.
6
+ // Copyright © 2016 mauron85. All rights reserved.
7
+ //
8
+
9
+ #import <XCTest/XCTest.h>
10
+ #import "MAURSQLiteLocationDAO.h"
11
+
12
+ @interface SQLiteLocationDAOTest : XCTestCase
13
+
14
+ @end
15
+
16
+ @implementation SQLiteLocationDAOTest
17
+
18
+ - (void)setUp {
19
+ [super setUp];
20
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
21
+ [locationDAO clearDatabase];
22
+ }
23
+
24
+ - (void)tearDown {
25
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
26
+ [super tearDown];
27
+ }
28
+
29
+ - (void)testPersistLocation {
30
+ // This is an example of a functional test case.
31
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
32
+
33
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
34
+ MAURLocation *location = [[MAURLocation alloc] init];
35
+
36
+ location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577];
37
+ location.accuracy = [NSNumber numberWithDouble:5];
38
+ location.speed = [NSNumber numberWithDouble:31.67];
39
+ location.heading = [NSNumber numberWithDouble:298.83];
40
+ location.altitude = [NSNumber numberWithDouble:940];
41
+ location.latitude = [NSNumber numberWithDouble:37.35439853];
42
+ location.longitude = [NSNumber numberWithDouble:-122.1100721];
43
+ location.provider = @"TEST";
44
+ location.locationProvider = [NSNumber numberWithInt:-1];
45
+
46
+ NSNumber *locationId = [locationDAO persistLocation:location];
47
+
48
+ NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
49
+ MAURLocation *result = [locations firstObject];
50
+
51
+ XCTAssertTrue([locationId isEqualToNumber:[NSNumber numberWithInt:1]], @"LocationId is %lu expecting 1",(unsigned long)locationId);
52
+ XCTAssertEqual([locations count], 1, @"Number of stored location is %lu expecting 1", (unsigned long)[locations count]);
53
+ XCTAssertTrue([result.locationId isEqualToNumber:[NSNumber numberWithInt:1]], @"LocationId is %lu expecting 1",(unsigned long)result.locationId);
54
+ XCTAssertTrue([result.time isEqualToDate:[NSDate dateWithTimeIntervalSince1970:1465511097774.577]], "Location time is %@ expecting %@", result.time, [NSDate dateWithTimeIntervalSince1970:1465511097774.577]);
55
+ XCTAssertTrue([result.accuracy isEqualToNumber:[NSNumber numberWithDouble:5]], "Location accuracy is %@ expecting %@", result.accuracy, [NSNumber numberWithDouble:5]);
56
+ XCTAssertTrue([result.speed isEqualToNumber:[NSNumber numberWithDouble:31.67]], "Location speed is %@ expecting %@", result.speed, [NSNumber numberWithDouble:31.67]);
57
+ XCTAssertTrue([result.heading isEqualToNumber:[NSNumber numberWithDouble:298.83]], "Location heading is %@ expecting %@", result.heading, [NSNumber numberWithDouble:298.83]);
58
+ XCTAssertTrue([result.altitude isEqualToNumber:[NSNumber numberWithDouble:940]], "Location altitude is %@ expecting %@", result.altitude, [NSNumber numberWithDouble:940]);
59
+ XCTAssertTrue([result.latitude isEqualToNumber:[NSNumber numberWithDouble:37.35439853]], "Location latitude is %@ expecting %@", result.latitude, [NSNumber numberWithDouble:37.35439853]);
60
+ XCTAssertTrue([result.longitude isEqualToNumber:[NSNumber numberWithDouble:-122.1100721]], "Location longitude is %@ expecting %@", result.longitude, [NSNumber numberWithDouble:-122.1100721]);
61
+ XCTAssertTrue([result.provider isEqualToString:@"TEST"], @"Location provider is expected to be TEST");
62
+ XCTAssertTrue([result.locationProvider isEqualToNumber:[NSNumber numberWithInt:-1]], "Location service_provider is %@ expecting %@", result.locationProvider, [NSNumber numberWithInt:-1]);
63
+ }
64
+
65
+ - (void)testDeleteLocation {
66
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
67
+ MAURLocation *location = [[MAURLocation alloc] init];
68
+
69
+ location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577];
70
+ location.accuracy = [NSNumber numberWithDouble:5];
71
+ location.speed = [NSNumber numberWithDouble:31.67];
72
+ location.heading = [NSNumber numberWithDouble:298.83];
73
+ location.altitude = [NSNumber numberWithDouble:940];
74
+ location.latitude = [NSNumber numberWithDouble:37.35439853];
75
+ location.longitude = [NSNumber numberWithDouble:-122.1100721];
76
+ location.provider = @"TEST";
77
+ location.locationProvider = [NSNumber numberWithInt:-1];
78
+
79
+ NSNumber *locationId1 = [locationDAO persistLocation:location];
80
+ NSNumber *locationId2 = [locationDAO persistLocation:location];
81
+
82
+ NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
83
+ XCTAssertEqual([locations count], 2, @"Number of stored location is %lu expecting 2", (unsigned long)[locations count]);
84
+
85
+ [locationDAO deleteLocation:locationId1 error:nil];
86
+ locations = [locationDAO getValidLocations];
87
+ MAURLocation *result = [locations firstObject];
88
+
89
+ XCTAssertEqual([locations count], 1, @"Number of stored location is %lu expecting 1", (unsigned long)[locations count]);
90
+ XCTAssertTrue([result.locationId isEqualToNumber:locationId2], "LocationId is %@ expecting %@", result.locationId, locationId2);
91
+ }
92
+
93
+ - (void)testDeleteAllLocations {
94
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
95
+ MAURLocation *location = [[MAURLocation alloc] init];
96
+
97
+ location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577];
98
+ location.accuracy = [NSNumber numberWithDouble:5];
99
+ location.speed = [NSNumber numberWithDouble:31.67];
100
+ location.heading = [NSNumber numberWithDouble:298.83];
101
+ location.altitude = [NSNumber numberWithDouble:940];
102
+ location.latitude = [NSNumber numberWithDouble:37.35439853];
103
+ location.longitude = [NSNumber numberWithDouble:-122.1100721];
104
+ location.provider = @"TEST";
105
+ location.locationProvider = [NSNumber numberWithInt:-1];
106
+
107
+ [locationDAO persistLocation:location];
108
+ [locationDAO persistLocation:location];
109
+ [locationDAO persistLocation:location];
110
+ [locationDAO persistLocation:location];
111
+ [locationDAO persistLocation:location];
112
+ [locationDAO persistLocation:location];
113
+ [locationDAO persistLocation:location];
114
+
115
+ NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
116
+ XCTAssertEqual([locations count], 7, @"Number of stored location is %lu expecting 7", (unsigned long)[locations count]);
117
+
118
+ [locationDAO deleteAllLocations:nil];
119
+ locations = [locationDAO getValidLocations];
120
+
121
+ XCTAssertEqual([locations count], 0, @"Number of stored location is %lu expecting 0", (unsigned long)[locations count]);
122
+ }
123
+
124
+ - (void)testGetAllLocations {
125
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
126
+ MAURLocation *location;
127
+
128
+ for (int i = 0; i < 10; i++) {
129
+ location = [[MAURLocation alloc] init];
130
+ location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577+i];
131
+ location.accuracy = [NSNumber numberWithDouble:5+i];
132
+ location.speed = [NSNumber numberWithDouble:31.67+i];
133
+ location.heading = [NSNumber numberWithDouble:298.83+i];
134
+ location.altitude = [NSNumber numberWithDouble:940+i];
135
+ location.latitude = [NSNumber numberWithDouble:37.35439853+i];
136
+ location.longitude = [NSNumber numberWithDouble:-122.1100721+i];
137
+ location.provider = @"TEST";
138
+ location.locationProvider = [NSNumber numberWithInt:-1];
139
+
140
+ [locationDAO persistLocation:location];
141
+ }
142
+
143
+ NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
144
+ XCTAssertEqual([locations count], 10, @"Number of stored location is %lu expecting 10", (unsigned long)[locations count]);
145
+
146
+ for (int i = 0; i < 10; i++) {
147
+ MAURLocation *result = [locations objectAtIndex:i];
148
+ XCTAssertEqual([result.locationId intValue], i+1, "LocationId is %d expecting %d", [result.locationId intValue], i+1);
149
+ XCTAssertTrue([result.time isEqualToDate:[NSDate dateWithTimeIntervalSince1970:1465511097774.577+i]], "Location time is %@ expecting %@", result.time, [NSDate dateWithTimeIntervalSince1970:1465511097774.577+i]);
150
+ XCTAssertTrue([result.accuracy isEqualToNumber:[NSNumber numberWithDouble:5+i]], "Location accuracy is %@ expecting %@", result.accuracy, [NSNumber numberWithDouble:5+i]);
151
+ XCTAssertTrue([result.speed isEqualToNumber:[NSNumber numberWithDouble:31.67+i]], "Location speed is %@ expecting %@", result.speed, [NSNumber numberWithDouble:31.67+i]);
152
+ XCTAssertTrue([result.heading isEqualToNumber:[NSNumber numberWithDouble:298.83+i]], "Location heading is %@ expecting %@", result.heading, [NSNumber numberWithDouble:298.83+i]);
153
+ XCTAssertTrue([result.altitude isEqualToNumber:[NSNumber numberWithDouble:940+i]], "Location altitude is %@ expecting %@", result.altitude, [NSNumber numberWithDouble:940+i]);
154
+ XCTAssertTrue([result.latitude isEqualToNumber:[NSNumber numberWithDouble:37.35439853+i]], "Location latitude is %@ expecting %@", result.latitude, [NSNumber numberWithDouble:37.35439853+i]);
155
+ XCTAssertTrue([result.longitude isEqualToNumber:[NSNumber numberWithDouble:-122.1100721+i]], "Location longitude is %@ expecting %@", result.longitude, [NSNumber numberWithDouble:-122.1100721+i]);
156
+ XCTAssertTrue([result.provider isEqualToString:@"TEST"], @"Location provider is expected to be TEST");
157
+ XCTAssertTrue([result.locationProvider isEqualToNumber:[NSNumber numberWithInt:-1]], "Location service_provider is %@ expecting %@", result.locationProvider, [NSNumber numberWithInt:-1]);
158
+ }
159
+ }
160
+
161
+ - (void)testGetValidLocations {
162
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
163
+ MAURLocation *location;
164
+
165
+ for (int i = 0; i < 10; i++) {
166
+ location = [[MAURLocation alloc] init];
167
+ location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577+i];
168
+ location.accuracy = [NSNumber numberWithDouble:5+i];
169
+ location.speed = [NSNumber numberWithDouble:31.67+i];
170
+ location.heading = [NSNumber numberWithDouble:298.83+i];
171
+ location.altitude = [NSNumber numberWithDouble:940+i];
172
+ location.latitude = [NSNumber numberWithDouble:37.35439853+i];
173
+ location.longitude = [NSNumber numberWithDouble:-122.1100721+i];
174
+ location.provider = @"TEST";
175
+ location.locationProvider = [NSNumber numberWithInt:-1];
176
+ location.isValid = (i % 2) == 0;
177
+
178
+ [locationDAO persistLocation:location];
179
+ }
180
+
181
+ NSArray<MAURLocation*> *validLocations = [locationDAO getValidLocations];
182
+ XCTAssertEqual([validLocations count], 5, @"Number of valid location is %lu expecting 5", (unsigned long)[validLocations count]);
183
+
184
+ NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
185
+ XCTAssertEqual([locations count], 10, @"Number of stored location is %lu expecting 10", (unsigned long)[locations count]);
186
+
187
+ for (int i = 0; i < 10; i++) {
188
+ MAURLocation *result = [locations objectAtIndex:i];
189
+ if ((i % 2) == 0) {
190
+ XCTAssertTrue(result.isValid);
191
+ } else {
192
+ XCTAssertFalse(result.isValid);
193
+ }
194
+ }
195
+ }
196
+
197
+ - (void)testPersistLocationWithZeroRowLimit {
198
+ int maxRows = 0;
199
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
200
+
201
+ for (int i = 0; i < maxRows * 2; i++) {
202
+ [locationDAO persistLocation:nil limitRows:maxRows];
203
+ }
204
+
205
+ NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
206
+ XCTAssertEqual([locations count], maxRows, @"Number of stored location is %lu expecting 0", (unsigned long)[locations count]);
207
+ }
208
+
209
+ - (void)testPersistLocationWithRowLimit {
210
+ int maxRows = 100;
211
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
212
+
213
+ NSNumber *locationId = nil;
214
+ for (int i = 1; i <= maxRows * 2; i++) {
215
+ locationId = [locationDAO persistLocation:nil limitRows:maxRows];
216
+ XCTAssertTrue([locationId isEqualToNumber:[NSNumber numberWithInt:i > 100 ? i - 100 : i]], @"LocationId is %@ expecting %i", locationId, i);
217
+ }
218
+
219
+ NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
220
+ XCTAssertEqual([locations count], maxRows, @"Number of stored location is %lu expecting 100", (unsigned long)[locations count]);
221
+ }
222
+
223
+ - (void)testPersistLocationWithRowLimitWhenMaxRowsReduced {
224
+ NSInteger maxRowsRun[2] = {100, 10};
225
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
226
+
227
+ for (int i = 0; i < sizeof(maxRowsRun) / sizeof(NSInteger); i++) {
228
+ NSInteger maxRows = maxRowsRun[i];
229
+ for (int i = 0; i < maxRows * 2; i++) {
230
+ [locationDAO persistLocation:nil limitRows:maxRows];
231
+ }
232
+ NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
233
+ XCTAssertEqual([locations count], maxRows, @"Number of stored location is %lu expecting %ld", (unsigned long)[locations count], (long)maxRows);
234
+ }
235
+
236
+ NSNumber *locationId = [locationDAO persistLocation:nil];
237
+ XCTAssertTrue([locationId isEqualToNumber:[NSNumber numberWithInt:101]], @"Expecting primary key id to be 101 actual %@", locationId);
238
+ }
239
+
240
+ @end
@@ -0,0 +1,84 @@
1
+ //
2
+ // BackgroundGeolocationTest.m
3
+ // BackgroundGeolocationTests
4
+ //
5
+ // Created by Marian Hello on 10/06/16.
6
+ // Copyright © 2016 mauron85. All rights reserved.
7
+ //
8
+
9
+ #import <XCTest/XCTest.h>
10
+ #import "MAURSQLiteLocationDAO.h"
11
+
12
+ @interface PersistLocationInThread : NSObject
13
+ {
14
+
15
+ }
16
+ // class methods go here
17
+ - (void) noop;
18
+ - (void) persistLocation:(NSNumber *)value;
19
+ @end
20
+
21
+ @interface MAURSQLiteLocationDAOThreadTest : XCTestCase
22
+
23
+ @end
24
+
25
+ @implementation MAURSQLiteLocationDAOThreadTest
26
+
27
+ - (void)setUp {
28
+ [super setUp];
29
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
30
+ [locationDAO clearDatabase];
31
+ // Put setup code here. This method is called before the invocation of each test method in the class.
32
+ }
33
+
34
+ - (void)tearDown {
35
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
36
+ [super tearDown];
37
+ }
38
+
39
+ - (void)testGetAllLocationsMultiThread {
40
+ MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
41
+ long unsigned threadsCount = 100;
42
+
43
+ dispatch_queue_t queue = dispatch_queue_create("com.marianhello.SQLiteLocationDAOThreadTests", DISPATCH_QUEUE_CONCURRENT);
44
+ dispatch_group_t group = dispatch_group_create();
45
+
46
+ for (int i = 0; i < threadsCount; i++) {
47
+ dispatch_group_async(group, queue, ^{
48
+ MAURLocation *location = [[MAURLocation alloc] init];
49
+ location.time = [NSDate dateWithTimeIntervalSince1970:100+i];
50
+ location.accuracy = [NSNumber numberWithDouble:i];
51
+ location.speed = [NSNumber numberWithDouble:32+i];
52
+ location.heading = [NSNumber numberWithDouble:200+i];
53
+ location.altitude = [NSNumber numberWithDouble:940+i];
54
+ location.latitude = [NSNumber numberWithDouble:37+i];
55
+ location.longitude = [NSNumber numberWithDouble:-22+i];
56
+ location.provider = @"TEST";
57
+ location.locationProvider = [NSNumber numberWithInt:-1];
58
+
59
+ [locationDAO persistLocation:location];
60
+ });
61
+ }
62
+
63
+ dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
64
+
65
+ NSMutableArray *locations = [NSMutableArray arrayWithArray:[locationDAO getAllLocations]];
66
+ [locations sortUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"time" ascending:YES]]];
67
+
68
+ XCTAssertEqual([locations count], threadsCount, @"Number of stored location is %lu expecting %lu", (unsigned long)[locations count], threadsCount);
69
+
70
+ for (int i = 0; i < threadsCount; i++) {
71
+ MAURLocation *result = [locations objectAtIndex:i];
72
+ XCTAssertTrue([result.time isEqualToDate:[NSDate dateWithTimeIntervalSince1970:100+i]], "time is %@ expecting %@", result.time, [NSDate dateWithTimeIntervalSince1970:100+i]);
73
+ XCTAssertTrue([result.accuracy isEqualToNumber:[NSNumber numberWithDouble:i]], "accuracy is %@ expecting %@", result.accuracy, [NSNumber numberWithDouble:i]);
74
+ XCTAssertTrue([result.speed isEqualToNumber:[NSNumber numberWithDouble:32+i]], "speed is %@ expecting %@", result.speed, [NSNumber numberWithDouble:32+i]);
75
+ XCTAssertTrue([result.heading isEqualToNumber:[NSNumber numberWithDouble:200+i]], "heading is %@ expecting %@", result.heading, [NSNumber numberWithDouble:200+i]);
76
+ XCTAssertTrue([result.altitude isEqualToNumber:[NSNumber numberWithDouble:940+i]], "altitude is %@ expecting %@", result.altitude, [NSNumber numberWithDouble:940+i]);
77
+ XCTAssertTrue([result.latitude isEqualToNumber:[NSNumber numberWithDouble:37+i]], "latitude is %@ expecting %@", result.latitude, [NSNumber numberWithDouble:37+i]);
78
+ XCTAssertTrue([result.longitude isEqualToNumber:[NSNumber numberWithDouble:-22+i]], "longitude is %@ expecting %@", result.longitude, [NSNumber numberWithDouble:-22+i]);
79
+ XCTAssertTrue([result.provider isEqualToString:@"TEST"], @"provider is expected to be TEST");
80
+ XCTAssertTrue([result.locationProvider isEqualToNumber:[NSNumber numberWithInt:-1]], "service_provider is %@ expecting %@", result.locationProvider, [NSNumber numberWithInt:-1]);
81
+ }
82
+ }
83
+
84
+ @end