@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,24 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>en</string>
7
+ <key>CFBundleExecutable</key>
8
+ <string>$(EXECUTABLE_NAME)</string>
9
+ <key>CFBundleIdentifier</key>
10
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11
+ <key>CFBundleInfoDictionaryVersion</key>
12
+ <string>6.0</string>
13
+ <key>CFBundleName</key>
14
+ <string>$(PRODUCT_NAME)</string>
15
+ <key>CFBundlePackageType</key>
16
+ <string>BNDL</string>
17
+ <key>CFBundleShortVersionString</key>
18
+ <string>1.0</string>
19
+ <key>CFBundleSignature</key>
20
+ <string>????</string>
21
+ <key>CFBundleVersion</key>
22
+ <string>1</string>
23
+ </dict>
24
+ </plist>
@@ -0,0 +1,185 @@
1
+ //
2
+ // MAURBackgroundLocationTest.m
3
+ // BackgroundGeolocationTests
4
+ //
5
+ // Created by Marian Hello on 12/06/16.
6
+ // Copyright © 2016 mauron85. All rights reserved.
7
+ //
8
+
9
+ #import <XCTest/XCTest.h>
10
+ #import "MAURLocation.h"
11
+
12
+ @interface MAURBackgroundLocationTest : XCTestCase
13
+
14
+ @end
15
+
16
+ @implementation MAURBackgroundLocationTest
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)testTimeToDictionary {
29
+ NSDateFormatter *RFC3339DateFormatter = [[NSDateFormatter alloc] init];
30
+ RFC3339DateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
31
+ RFC3339DateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ssZZZZZ";
32
+ RFC3339DateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
33
+ NSString *string = @"2016-01-01T00:00:00+01:00";
34
+
35
+ MAURLocation *bgloc1 = [[MAURLocation alloc] init];
36
+ bgloc1.time = [RFC3339DateFormatter dateFromString:string];
37
+
38
+ NSDictionary *data = [bgloc1 toDictionary];
39
+
40
+ XCTAssertEqual([[data objectForKey:@"time"] doubleValue], 1451602800000);
41
+ XCTAssertEqual([bgloc1.time timeIntervalSince1970] * 1000, 1451602800000);
42
+ }
43
+
44
+ - (void)testObjectCopying {
45
+ MAURLocation *bgloc1 = [[MAURLocation alloc] init];
46
+ bgloc1.latitude = [NSNumber numberWithDouble:12];
47
+ bgloc1.longitude = [NSNumber numberWithDouble:11];
48
+ bgloc1.radius = [NSNumber numberWithDouble:50];
49
+
50
+ MAURLocation *stationaryLocation = [bgloc1 copy];
51
+ // stationaryLocation.type = @"stationary";
52
+
53
+ XCTAssertTrue([bgloc1.radius isEqualToNumber:[NSNumber numberWithDouble:50]]);
54
+ // XCTAssertTrue([stationaryLocation.type isEqualToString:@"stationary"]);
55
+ }
56
+
57
+ - (void)testDistanceFromLocation {
58
+ // This is an example of a functional test case.
59
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
60
+ const double latitude1 = 49.1634594;
61
+ const double longitude1 = 20.273454;
62
+ const double latitude2 = 49.1260825;
63
+ const double longitude2 = 20.4350187;
64
+
65
+ MAURLocation *bgloc1 = [[MAURLocation alloc] init];
66
+ MAURLocation *bgloc2 = [[MAURLocation alloc] init];
67
+ bgloc1.latitude = [NSNumber numberWithDouble:latitude1];
68
+ bgloc1.longitude = [NSNumber numberWithDouble:longitude1];
69
+ bgloc2.latitude = [NSNumber numberWithDouble:latitude2];
70
+ bgloc2.longitude = [NSNumber numberWithDouble:longitude2];
71
+
72
+ CLLocation *location1 = [[CLLocation alloc]initWithLatitude:latitude1 longitude:longitude1];
73
+ CLLocation *location2 = [[CLLocation alloc]initWithLatitude:latitude2 longitude:longitude2];
74
+
75
+ double apple_dist = [location1 distanceFromLocation:location2];
76
+ double bgloc_dist = [bgloc1 distanceFromLocation:bgloc2];
77
+ XCTAssertEqualWithAccuracy(bgloc_dist, apple_dist, 20, "Our implementation of distance %f should equal Apple %f", bgloc_dist, apple_dist);
78
+ }
79
+
80
+ - (void)testLocationIsBeyond {
81
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
82
+ const double latitude1 = 49.134873;
83
+ const double longitude1 = 20.209260;
84
+ const double latitude2 = 49.14088;
85
+ const double longitude2 = 20.225382;
86
+
87
+ MAURLocation *bgloc1 = [[MAURLocation alloc] init];
88
+ MAURLocation *bgloc2 = [[MAURLocation alloc] init];
89
+ bgloc1.latitude = [NSNumber numberWithDouble:latitude1];
90
+ bgloc1.longitude = [NSNumber numberWithDouble:longitude1];
91
+ bgloc2.latitude = [NSNumber numberWithDouble:latitude2];
92
+ bgloc2.longitude = [NSNumber numberWithDouble:longitude2];
93
+
94
+ XCTAssertTrue([bgloc1 isBeyond:bgloc2 radius:100], "Expecting bgloc1 to not be beyond bgloc2 and radius 100m");
95
+ XCTAssertTrue([bgloc1 isBeyond:bgloc2 radius:1000], "Expecting bgloc1 to not be beyond bgloc2 and radius 1000m");
96
+ XCTAssertTrue(![bgloc1 isBeyond:bgloc2 radius:10000], "Expecting bgloc1 to be beyond bgloc2 and radius 10000m");
97
+ }
98
+
99
+ - (void)testIfSignificantlyNewerLocationIsBetter {
100
+ const double latitude1 = 49.134873;
101
+ const double longitude1 = 20.209260;
102
+ const double latitude2 = 49.14088;
103
+ const double longitude2 = 20.225382;
104
+ const int oldtime = 1451602800; //Fri Jan 01 2016 00:00:00 GMT+0100 (CET)
105
+ const int newtime = 1451610000; //Fri Jan 01 2016 00:02:00 GMT+0100 (CET)
106
+
107
+ MAURLocation *older = [[MAURLocation alloc] init];
108
+ MAURLocation *newer = [[MAURLocation alloc] init];
109
+ older.latitude = [NSNumber numberWithDouble:latitude1];
110
+ older.longitude = [NSNumber numberWithDouble:longitude1];
111
+ older.time = [[NSDate alloc]initWithTimeIntervalSince1970:oldtime];
112
+ newer.latitude = [NSNumber numberWithDouble:latitude2];
113
+ newer.longitude = [NSNumber numberWithDouble:longitude2];
114
+ newer.time = [[NSDate alloc]initWithTimeIntervalSince1970:newtime];
115
+
116
+ XCTAssertTrue([newer isBetterLocation:older]);
117
+ }
118
+
119
+ - (void)testIfLocationWithBetterAccuracyAndSameTimeIsBetter {
120
+ const double latitude1 = 49.134873;
121
+ const double longitude1 = 20.209260;
122
+ const double latitude2 = 49.14088;
123
+ const double longitude2 = 20.225382;
124
+ const double accuracy = 400;
125
+ const double betterAccuracy = 100;
126
+ const int time = 1451602800;
127
+
128
+ MAURLocation *lessAccurate = [[MAURLocation alloc] init];
129
+ MAURLocation *moreAccurate = [[MAURLocation alloc] init];
130
+ lessAccurate.latitude = [NSNumber numberWithDouble:latitude1];
131
+ lessAccurate.longitude = [NSNumber numberWithDouble:longitude1];
132
+ lessAccurate.time = [[NSDate alloc]initWithTimeIntervalSince1970:time];
133
+ lessAccurate.accuracy = [NSNumber numberWithDouble:accuracy];
134
+ moreAccurate.latitude = [NSNumber numberWithDouble:latitude2];
135
+ moreAccurate.longitude = [NSNumber numberWithDouble:longitude2];
136
+ moreAccurate.time = [[NSDate alloc]initWithTimeIntervalSince1970:time];
137
+ moreAccurate.accuracy = [NSNumber numberWithDouble:betterAccuracy];
138
+
139
+ XCTAssertTrue([moreAccurate isBetterLocation:lessAccurate]);
140
+ }
141
+
142
+ - (void)testIflLocationWithNilAccuracyIsInvalid
143
+ {
144
+ MAURLocation *loc = [[MAURLocation alloc] init];
145
+ XCTAssertFalse([loc hasAccuracy]);
146
+ }
147
+
148
+ - (void) testIfLocationWithZeroAccuracyIsInvalid
149
+ {
150
+ MAURLocation *loc = [[MAURLocation alloc] init];
151
+ loc.accuracy = [NSNumber numberWithInt:0];
152
+ XCTAssertTrue([loc hasAccuracy]);
153
+ }
154
+
155
+ - (void) testIfLocationWithAccuracyAboveZeroIsValid
156
+ {
157
+ MAURLocation *loc = [[MAURLocation alloc] init];
158
+ loc.accuracy = [NSNumber numberWithInt:10];
159
+ XCTAssertTrue([loc isValid]);
160
+ }
161
+
162
+ - (void)testIflLocationWithTimeMoreThenOneDayFromNowIsInvalid
163
+ {
164
+ MAURLocation *loc = [[MAURLocation alloc] init];
165
+ loc.accuracy = [[NSNumber alloc] initWithInt:1];
166
+ loc.time = [[[NSDate alloc] init] dateByAddingTimeInterval:186400];
167
+ XCTAssertTrue(![loc hasTime]);
168
+ }
169
+
170
+ - (void)testIflLocationWithTimeNowIsValid
171
+ {
172
+ MAURLocation *loc = [[MAURLocation alloc] init];
173
+ loc.accuracy = [[NSNumber alloc] initWithInt:1];
174
+ loc.time = [[NSDate alloc] init];
175
+ XCTAssertTrue([loc isValid]);
176
+ }
177
+
178
+ - (void)testPerformanceExample {
179
+ // This is an example of a performance test case.
180
+ [self measureBlock:^{
181
+ // Put the code you want to measure the time of here.
182
+ }];
183
+ }
184
+
185
+ @end
@@ -0,0 +1,161 @@
1
+ //
2
+ // MAURConfigTest.m
3
+ // BackgroundGeolocationTests
4
+ //
5
+ // Created by Marian Hello on 02/12/2017.
6
+ // Copyright © 2017 mauron85. All rights reserved.
7
+ //
8
+
9
+ #import <XCTest/XCTest.h>
10
+ #import "MAURConfig.h"
11
+
12
+ @interface MAURConfigTest : XCTestCase
13
+
14
+ @end
15
+
16
+ @implementation MAURConfigTest
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)testInit {
29
+ MAURConfig *config = [[MAURConfig alloc] init];
30
+
31
+ XCTAssertFalse([config hasStationaryRadius]);
32
+ XCTAssertFalse([config hasDistanceFilter]);
33
+ XCTAssertFalse([config hasDesiredAccuracy]);
34
+ XCTAssertFalse([config hasDebug]);
35
+ XCTAssertFalse([config hasActivityType]);
36
+ XCTAssertFalse([config hasActivitiesInterval]);
37
+ XCTAssertFalse([config hasStopOnTerminate]);
38
+ XCTAssertFalse([config hasUrl]);
39
+ XCTAssertFalse([config hasSyncUrl]);
40
+ XCTAssertFalse([config hasSyncThreshold]);
41
+ XCTAssertFalse([config hasHttpHeaders]);
42
+ XCTAssertFalse([config hasSaveBatteryOnBackground]);
43
+ XCTAssertFalse([config hasMaxLocations]);
44
+ XCTAssertFalse([config hasPauseLocationUpdates]);
45
+ XCTAssertFalse([config hasLocationProvider]);
46
+ }
47
+
48
+ - (void)testToDictionary {
49
+ MAURConfig *config = [[MAURConfig alloc] init];
50
+ NSDictionary *dict = [config toDictionary];
51
+
52
+ XCTAssertNil(dict[@"url"]);
53
+ XCTAssertNil(dict[@"syncUrl"]);
54
+ XCTAssertNil(dict[@"httpHeaders"]);
55
+ XCTAssertEqualObjects(dict[@"postTemplate"], [MAURConfig getDefaultTemplate]);
56
+ }
57
+
58
+ - (void)testBooleans {
59
+ MAURConfig *config = [[MAURConfig alloc] init];
60
+
61
+ config._debug = @YES;
62
+ XCTAssertTrue([config isDebugging]);
63
+
64
+ config._debug = @NO;
65
+ XCTAssertFalse([config isDebugging]);
66
+
67
+ }
68
+
69
+ - (void)testNullToDictionary {
70
+ MAURConfig *config = [[MAURConfig alloc] init];
71
+ config.url = (id)[NSNull null];
72
+ config.syncUrl = (id)[NSNull null];
73
+ config.httpHeaders = (id)[NSNull null];
74
+ config._template = (id)[NSNull null];
75
+
76
+ NSDictionary *dict = [config toDictionary];
77
+ XCTAssertEqualObjects(dict[@"url"], @"");
78
+ XCTAssertEqualObjects(dict[@"syncUrl"], @"");
79
+ XCTAssertEqualObjects(dict[@"httpHeaders"], @{});
80
+ XCTAssertEqualObjects(dict[@"postTemplate"], [MAURConfig getDefaultTemplate]);
81
+ }
82
+
83
+ - (void)testMerge {
84
+ MAURConfig *config1 = [[MAURConfig alloc] init];
85
+ config1.distanceFilter = [NSNumber numberWithInt:666];
86
+ MAURConfig *config2 = [[MAURConfig alloc] initWithDefaults];
87
+ config2.distanceFilter = [NSNumber numberWithInt:999];
88
+
89
+ MAURConfig *merger = [MAURConfig merge:config1 withConfig:config2];
90
+
91
+ XCTAssertEqual(merger.distanceFilter.intValue, 999);
92
+ XCTAssertEqualObjects(merger.activityType, @"OtherNavigation");
93
+ XCTAssertEqual(config1.distanceFilter.intValue, 666);
94
+ XCTAssertEqual(config2.distanceFilter.intValue, 999);
95
+ XCTAssertNotEqual(merger.distanceFilter, config1.distanceFilter);
96
+ XCTAssertEqual(merger.distanceFilter, config2.distanceFilter);
97
+ XCTAssertNotEqual(config1.distanceFilter, config2.distanceFilter);
98
+ }
99
+
100
+ - (void)testArrayTemplateToString {
101
+ MAURConfig *config = [[MAURConfig alloc] init];
102
+ config._template = @[@"latitude", @"longitude", @"custom"];
103
+
104
+ XCTAssertEqualObjects([config getTemplateAsString:nil], @"[\"latitude\",\"longitude\",\"custom\"]");
105
+ }
106
+
107
+ - (void)testDictionaryTemplateToString {
108
+ MAURConfig *config = [[MAURConfig alloc] init];
109
+ config._template = @{
110
+ @"lat": @"latitude",
111
+ @"lon": @"longitude",
112
+ @"foo": @"bar"
113
+ };
114
+
115
+ XCTAssertEqualObjects([config getTemplateAsString:nil], @"{\"lat\":\"latitude\",\"lon\":\"longitude\",\"foo\":\"bar\"}");
116
+ }
117
+
118
+ - (void)testMergeEmpty {
119
+ MAURConfig *config1 = [[MAURConfig alloc] init];
120
+ MAURConfig *config2 = [[MAURConfig alloc] init];
121
+
122
+ config1.url = @"url";
123
+ config1.syncUrl = @"syncurl";
124
+
125
+ config2.url = @"";
126
+ config2.syncUrl = @"";
127
+
128
+ MAURConfig *merger = [MAURConfig merge:config1 withConfig:config2];
129
+
130
+ XCTAssertEqualObjects(merger.url, @"");
131
+ XCTAssertEqualObjects(merger.syncUrl, @"");
132
+ }
133
+
134
+ - (void)testMergeNullFromDictionary {
135
+ MAURConfig *config1 = [[MAURConfig alloc] init];
136
+
137
+ config1.url = @"url";
138
+ config1.syncUrl = @"syncurl";
139
+ config1.httpHeaders = @{@"foo": @"bar"};
140
+ config1._template = @{@"lat": @"@latitude"};
141
+
142
+ NSDictionary *configProps = @{
143
+ @"url": [NSNull null],
144
+ @"syncUrl": [NSNull null],
145
+ @"httpHeaders": [NSNull null],
146
+ @"postTemplate": [NSNull null]
147
+ };
148
+ MAURConfig *config2 = [MAURConfig fromDictionary:configProps];
149
+
150
+ XCTAssertFalse([config2 hasValidUrl]);
151
+ XCTAssertFalse([config2 hasValidSyncUrl]);
152
+
153
+ MAURConfig *merger = [MAURConfig merge:config1 withConfig:config2];
154
+
155
+ XCTAssertEqualObjects(merger.url, @"");
156
+ XCTAssertEqualObjects(merger.syncUrl, @"");
157
+ XCTAssertEqualObjects(merger.httpHeaders, @{});
158
+ XCTAssertEqualObjects(merger._template, [MAURConfig getDefaultTemplate]);
159
+ }
160
+
161
+ @end
@@ -0,0 +1,102 @@
1
+ //
2
+ // MAURGeolocationOpenHelperTest.m
3
+ // BackgroundGeolocationTests
4
+ //
5
+ // Created by Marian Hello on 01/07/16.
6
+ // Copyright © 2016 mauron85. All rights reserved.
7
+ //
8
+
9
+ #import <XCTest/XCTest.h>
10
+ #import "MAURSQLiteOpenHelper.h"
11
+ #import "MAURLocationContract.h"
12
+ #import "MAURConfigurationContract.h"
13
+ #import "MAURGeolocationOpenHelper.h"
14
+
15
+
16
+ // Warning: This has to be last test in suite, because it unlinks db file
17
+ @interface xGeolocationOpenHelperTest : XCTestCase
18
+
19
+ @end
20
+
21
+ @implementation xGeolocationOpenHelperTest
22
+
23
+ - (void)setUp {
24
+ [super setUp];
25
+ MAURGeolocationOpenHelper *helper = [[MAURGeolocationOpenHelper alloc] init];
26
+ NSFileManager *fileManager = [NSFileManager defaultManager];
27
+ NSString *dbPath = [helper getDatabasePath];
28
+ [fileManager removeItemAtPath:dbPath error:nil];
29
+ }
30
+
31
+ - (void)tearDown {
32
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
33
+ [super tearDown];
34
+ }
35
+
36
+ - (void)testIfLocationTableIsCreated {
37
+ MAURGeolocationOpenHelper *helper = [[MAURGeolocationOpenHelper alloc] init];
38
+ FMDatabaseQueue *queue = [helper getWritableDatabase];
39
+
40
+ [queue inDatabase:^(FMDatabase *database) {
41
+ NSString *sql = [NSString stringWithFormat: @"SELECT count(name) FROM sqlite_master WHERE type='table' AND name='%@';", @LC_TABLE_NAME];
42
+ FMResultSet *rs = [database executeQuery:sql];
43
+ while([rs next]) {
44
+ XCTAssertEqual([rs intForColumnIndex:0], 1);
45
+ }
46
+ [rs close];
47
+ }];
48
+
49
+ [helper close];
50
+ }
51
+
52
+ - (void)testIfConfigurationTableIsCreated {
53
+ MAURGeolocationOpenHelper *helper = [[MAURGeolocationOpenHelper alloc] init];
54
+ FMDatabaseQueue *queue = [helper getWritableDatabase];
55
+
56
+ [queue inDatabase:^(FMDatabase *database) {
57
+ NSString *sql = [NSString stringWithFormat: @"SELECT count(name) FROM sqlite_master WHERE type='table' AND name='%@';", @CC_TABLE_NAME];
58
+ FMResultSet *rs = [database executeQuery:sql];
59
+ while([rs next]) {
60
+ XCTAssertEqual([rs intForColumnIndex:0], 1);
61
+ }
62
+ [rs close];
63
+ }];
64
+
65
+ [helper close];
66
+ }
67
+
68
+ - (void)testIfDbIsUpgradedFromVersion2ToVersion3 {
69
+ FMDatabaseQueue *queue;
70
+
71
+ MAURSQLiteOpenHelper *baseHelper = [[MAURSQLiteOpenHelper alloc] init:@"cordova_bg_geolocation.db" version:2];
72
+ [baseHelper getWritableDatabase];
73
+
74
+ queue = [baseHelper getWritableDatabase];
75
+ [queue inDatabase:^(FMDatabase *database) {
76
+ NSString *sql = [NSString stringWithFormat: @"SELECT count(name) FROM sqlite_master WHERE type='table' AND name='%@';", @CC_TABLE_NAME];
77
+ FMResultSet *rs = [database executeQuery:sql];
78
+ while([rs next]) {
79
+ XCTAssertEqual([rs intForColumnIndex:0], 0);
80
+ }
81
+ [rs close];
82
+ }];
83
+
84
+ MAURGeolocationOpenHelper *helper = [[MAURGeolocationOpenHelper alloc] init];
85
+ queue = [helper getWritableDatabase];
86
+
87
+ [queue inDatabase:^(FMDatabase *database) {
88
+ NSString *sql = [NSString stringWithFormat: @"SELECT count(name) FROM sqlite_master WHERE type='table' AND name='%@';", @CC_TABLE_NAME];
89
+ FMResultSet *rs = [database executeQuery:sql];
90
+ while([rs next]) {
91
+ XCTAssertEqual([rs intForColumnIndex:0], 1);
92
+ }
93
+ [rs close];
94
+ }];
95
+ }
96
+
97
+ - (void)testLocationTableSQLStatement {
98
+ NSString *sql = [MAURLocationContract createTableSQL];
99
+ XCTAssertEqualObjects(sql, @"CREATE TABLE IF NOT EXISTS location ( id INTEGER PRIMARY KEY AUTOINCREMENT , time REAL , accuracy REAL , speed REAL , bearing REAL , altitude REAL , latitude REAL , longitude REAL , provider TEXT , service_provider TEXT , valid INTEGER , recorded_at INTEGER );");
100
+ }
101
+
102
+ @end
@@ -0,0 +1,216 @@
1
+ //
2
+ // MAURLocationTest.m
3
+ // BackgroundGeolocationTests
4
+ //
5
+ // Created by Marian Hello on 06/12/2017.
6
+ // Copyright © 2017 mauron85. All rights reserved.
7
+ //
8
+
9
+ #import <XCTest/XCTest.h>
10
+ #import "MAURLocation.h"
11
+
12
+ @interface MAURLocationTest : XCTestCase
13
+
14
+ @end
15
+
16
+ @implementation MAURLocationTest
17
+
18
+ - (void)testLocationToArray {
19
+ MAURLocation *location = [[MAURLocation alloc] init];
20
+ location.locationId = [NSNumber numberWithInt:1];
21
+ location.time = [NSDate dateWithTimeIntervalSince1970:1000];
22
+ location.accuracy = [NSNumber numberWithInt:40];
23
+ location.altitudeAccuracy = [NSNumber numberWithInt:50];
24
+ location.speed = [NSNumber numberWithInt:60];
25
+ location.heading = [NSNumber numberWithInt:1];
26
+ location.altitude = [NSNumber numberWithInt:100];
27
+ location.latitude = [NSNumber numberWithInt:49];
28
+ location.longitude = [NSNumber numberWithInt:20];
29
+ location.provider = @"TEST";
30
+ location.locationProvider = [NSNumber numberWithInt:-1];
31
+ location.radius = [NSNumber numberWithInt:111];
32
+ location.isValid = @YES;
33
+ location.recordedAt = [NSDate dateWithTimeIntervalSince1970:2000];
34
+
35
+ NSArray *template = @[@"@time", @"@altitude", @"@longitude", @"@recordedAt", @"@accuracy", @"", @"custom", @"@heading", @"@speed", @"@provider", @"@id", @"@radius"];
36
+
37
+ NSArray *actual = [location toResultFromTemplate:template];
38
+ NSArray *expected = @[
39
+ [NSNumber numberWithDouble:([location.time timeIntervalSince1970] * 1000)],
40
+ location.altitude,
41
+ location.longitude,
42
+ [NSNumber numberWithDouble:([location.recordedAt timeIntervalSince1970] * 1000)],
43
+ location.accuracy,
44
+ @"",
45
+ @"custom",
46
+ location.heading,
47
+ location.speed,
48
+ location.provider,
49
+ location.locationId,
50
+ location.radius
51
+ ];
52
+
53
+ XCTAssertEqualObjects(actual, expected);
54
+ }
55
+
56
+ - (void)testLocationToDictionary {
57
+ MAURLocation *location = [[MAURLocation alloc] init];
58
+ location.locationId = [NSNumber numberWithInt:1];
59
+ location.time = [NSDate dateWithTimeIntervalSince1970:1000];
60
+ location.accuracy = [NSNumber numberWithInt:40];
61
+ location.altitudeAccuracy = [NSNumber numberWithInt:50];
62
+ location.speed = [NSNumber numberWithInt:60];
63
+ location.heading = [NSNumber numberWithInt:1];
64
+ location.altitude = [NSNumber numberWithInt:100];
65
+ location.latitude = [NSNumber numberWithInt:49];
66
+ location.longitude = [NSNumber numberWithInt:20];
67
+ location.provider = @"TEST";
68
+ location.locationProvider = [NSNumber numberWithInt:-1];
69
+ location.radius = [NSNumber numberWithInt:111];
70
+ location.isValid = @YES;
71
+ location.recordedAt = [NSDate dateWithTimeIntervalSince1970:2000];
72
+
73
+ NSDictionary *template = @{
74
+ @"id": @"@id",
75
+ @"t": @"@time",
76
+ @"acu": @"@accuracy",
77
+ @"aacu": @"@altitudeAccuracy",
78
+ @"s": @"@speed",
79
+ @"h": @"@heading",
80
+ @"alt": @"@altitude",
81
+ @"lat": @"@latitude",
82
+ @"lon": @"@longitude",
83
+ @"p": @"@provider",
84
+ @"lp": @"@locationProvider",
85
+ @"r": @"@radius",
86
+ @"rt": @"@recordedAt",
87
+ @"foo": @"bar",
88
+ @"at": @"@",
89
+ @"number": @12
90
+ };
91
+
92
+ NSDictionary *actual = [location toResultFromTemplate:template];
93
+ NSDictionary *expected = @{
94
+ @"id": location.locationId,
95
+ @"t": [NSNumber numberWithDouble:([location.time timeIntervalSince1970] * 1000)],
96
+ @"acu": location.accuracy,
97
+ @"aacu": location.altitudeAccuracy,
98
+ @"s": location.speed,
99
+ @"h": location.heading,
100
+ @"alt": location.altitude,
101
+ @"lat": location.latitude,
102
+ @"lon": location.longitude,
103
+ @"p": location.provider,
104
+ @"lp": location.locationProvider,
105
+ @"r": location.radius,
106
+ @"rt": [NSNumber numberWithDouble:([location.recordedAt timeIntervalSince1970] * 1000)],
107
+ @"foo": @"bar",
108
+ @"at": @"@",
109
+ @"number": @12
110
+ };
111
+
112
+ XCTAssertEqualObjects(actual, expected);
113
+ }
114
+
115
+ - (void)testNestedLocationTemplateToArray {
116
+ MAURLocation *location = [[MAURLocation alloc] init];
117
+ location.locationId = [NSNumber numberWithInt:1];
118
+ location.time = [NSDate dateWithTimeIntervalSince1970:1000];
119
+ location.accuracy = [NSNumber numberWithInt:40];
120
+ location.altitudeAccuracy = [NSNumber numberWithInt:50];
121
+ location.speed = [NSNumber numberWithInt:60];
122
+ location.heading = [NSNumber numberWithInt:1];
123
+ location.altitude = [NSNumber numberWithInt:100];
124
+ location.latitude = [NSNumber numberWithInt:49];
125
+ location.longitude = [NSNumber numberWithInt:20];
126
+ location.provider = @"TEST";
127
+ location.locationProvider = [NSNumber numberWithInt:-1];
128
+ location.radius = [NSNumber numberWithInt:111];
129
+ location.isValid = @YES;
130
+ location.recordedAt = [NSDate dateWithTimeIntervalSince1970:2000];
131
+
132
+ NSArray *template = @[@"@time", @{ @"lat": @"@latitude", @"lon": @"@longitude" }, @"@recordedAt", @"@accuracy", @"", @"custom", @"@heading", @"@speed", @"@provider", @"@id", @"@radius"];
133
+
134
+ NSArray *actual = [location toResultFromTemplate:template];
135
+ NSArray *expected = @[
136
+ [NSNumber numberWithDouble:([location.time timeIntervalSince1970] * 1000)],
137
+ @{
138
+ @"lat": location.latitude,
139
+ @"lon": location.longitude,
140
+ },
141
+ [NSNumber numberWithDouble:([location.recordedAt timeIntervalSince1970] * 1000)],
142
+ location.accuracy,
143
+ @"",
144
+ @"custom",
145
+ location.heading,
146
+ location.speed,
147
+ location.provider,
148
+ location.locationId,
149
+ location.radius
150
+ ];
151
+
152
+ XCTAssertEqualObjects(actual, expected);
153
+ }
154
+
155
+ - (void)testNestedLocationTemplateToDictionary {
156
+ MAURLocation *location = [[MAURLocation alloc] init];
157
+ location.locationId = [NSNumber numberWithInt:1];
158
+ location.time = [NSDate dateWithTimeIntervalSince1970:1000];
159
+ location.accuracy = [NSNumber numberWithInt:40];
160
+ location.altitudeAccuracy = [NSNumber numberWithInt:50];
161
+ location.speed = [NSNumber numberWithInt:60];
162
+ location.heading = [NSNumber numberWithInt:1];
163
+ location.altitude = [NSNumber numberWithInt:100];
164
+ location.latitude = [NSNumber numberWithInt:49];
165
+ location.longitude = [NSNumber numberWithInt:20];
166
+ location.provider = @"TEST";
167
+ location.locationProvider = [NSNumber numberWithInt:-1];
168
+ location.radius = [NSNumber numberWithInt:111];
169
+ location.isValid = @YES;
170
+ location.recordedAt = [NSDate dateWithTimeIntervalSince1970:2000];
171
+
172
+ NSDictionary *template = @{
173
+ @"data": @{
174
+ @"id": @"@id",
175
+ @"t": @"@time",
176
+ @"acu": @"@accuracy",
177
+ @"aacu": @"@altitudeAccuracy",
178
+ @"s": @"@speed",
179
+ @"h": @"@heading",
180
+ @"alt": @"@altitude",
181
+ @"lat": @"@latitude",
182
+ @"lon": @"@longitude",
183
+ @"p": @"@provider",
184
+ @"lp": @"@locationProvider",
185
+ @"r": @"@radius",
186
+ @"rt": @"@recordedAt",
187
+ @"foo": @"bar",
188
+ @"at": @"@",
189
+ @"number": @12
190
+ }};
191
+
192
+ NSDictionary *actual = [location toResultFromTemplate:template];
193
+ NSDictionary *expected = @{
194
+ @"data": @{
195
+ @"id": location.locationId,
196
+ @"t": [NSNumber numberWithDouble:([location.time timeIntervalSince1970] * 1000)],
197
+ @"acu": location.accuracy,
198
+ @"aacu": location.altitudeAccuracy,
199
+ @"s": location.speed,
200
+ @"h": location.heading,
201
+ @"alt": location.altitude,
202
+ @"lat": location.latitude,
203
+ @"lon": location.longitude,
204
+ @"p": location.provider,
205
+ @"lp": location.locationProvider,
206
+ @"r": location.radius,
207
+ @"rt": [NSNumber numberWithDouble:([location.recordedAt timeIntervalSince1970] * 1000)],
208
+ @"foo": @"bar",
209
+ @"at": @"@",
210
+ @"number": @12
211
+ }};
212
+
213
+ XCTAssertEqualObjects(actual, expected);
214
+ }
215
+
216
+ @end