rhoconnect-client 5.5.0

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 (270) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +9 -0
  3. data/CREDITS +0 -0
  4. data/LICENSE +9 -0
  5. data/README.md +47 -0
  6. data/ext/rhoconnect-client/RhoConnectClient.rb +190 -0
  7. data/ext/rhoconnect-client/ext/RhoConnectClient.xml +726 -0
  8. data/ext/rhoconnect-client/ext/build +26 -0
  9. data/ext/rhoconnect-client/ext/build.bat +30 -0
  10. data/ext/rhoconnect-client/ext/platform/android/ext_java.files +1 -0
  11. data/ext/rhoconnect-client/ext/platform/android/ext_native.files +14 -0
  12. data/ext/rhoconnect-client/ext/platform/android/src/com/rhoconnectclient/RhoconnectClient.java +1 -0
  13. data/ext/rhoconnect-client/ext/platform/iphone/.gitignore +1 -0
  14. data/ext/rhoconnect-client/ext/platform/iphone/Rakefile +74 -0
  15. data/ext/rhoconnect-client/ext/platform/iphone/RhoconnectClient.xcodeproj/project.pbxproj +390 -0
  16. data/ext/rhoconnect-client/ext/platform/iphone/RhoconnectClient_Prefix.pch +7 -0
  17. data/ext/rhoconnect-client/ext/platform/iphone/impl/readme.txt +7 -0
  18. data/ext/rhoconnect-client/ext/platform/qt/Rakefile +35 -0
  19. data/ext/rhoconnect-client/ext/platform/qt/rhoconnect-client.pro +88 -0
  20. data/ext/rhoconnect-client/ext/platform/wm/Rhoconnect-client.sln +36 -0
  21. data/ext/rhoconnect-client/ext/platform/wm/Rhoconnect-client.vcproj +774 -0
  22. data/ext/rhoconnect-client/ext/platform/wm/Rhoconnect-client.vsprops +15 -0
  23. data/ext/rhoconnect-client/ext/platform/wm/src/rhoconnectclient_wm.cpp +40 -0
  24. data/ext/rhoconnect-client/ext/platform/wm/src/rhoconnectclient_wm.h +2 -0
  25. data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.props +22 -0
  26. data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.sln +32 -0
  27. data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.vcxproj +220 -0
  28. data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.vcxproj.filters +103 -0
  29. data/ext/rhoconnect-client/ext/shared/RhoConnectClientImpl.cpp +273 -0
  30. data/ext/rhoconnect-client/ext/shared/RhoConnectClientImpl.h +60 -0
  31. data/ext/rhoconnect-client/ext/shared/RhoConnectClientSingletonImpl.h +53 -0
  32. data/ext/rhoconnect-client/ext/shared/initRhoconnectClient.cpp +207 -0
  33. data/ext/rhoconnect-client/ext/shared/rhoconnectclient.c +18 -0
  34. data/ext/rhoconnect-client/ext/shared/sync/ClientRegister.cpp +398 -0
  35. data/ext/rhoconnect-client/ext/shared/sync/ClientRegister.h +147 -0
  36. data/ext/rhoconnect-client/ext/shared/sync/ISyncProtocol.h +91 -0
  37. data/ext/rhoconnect-client/ext/shared/sync/SyncEngine.cpp +1245 -0
  38. data/ext/rhoconnect-client/ext/shared/sync/SyncEngine.h +213 -0
  39. data/ext/rhoconnect-client/ext/shared/sync/SyncNotify.cpp +737 -0
  40. data/ext/rhoconnect-client/ext/shared/sync/SyncNotify.h +209 -0
  41. data/ext/rhoconnect-client/ext/shared/sync/SyncProtocol_3.h +220 -0
  42. data/ext/rhoconnect-client/ext/shared/sync/SyncProtocol_4.h +259 -0
  43. data/ext/rhoconnect-client/ext/shared/sync/SyncSource.cpp +1694 -0
  44. data/ext/rhoconnect-client/ext/shared/sync/SyncSource.h +212 -0
  45. data/ext/rhoconnect-client/ext/shared/sync/SyncThread.cpp +583 -0
  46. data/ext/rhoconnect-client/ext/shared/sync/SyncThread.h +250 -0
  47. data/ext/rhoconnect-client/ext.yml +12 -0
  48. data/lib/build/run_rhoconnect_spec.rb +135 -0
  49. data/lib/rhoconnect-client.rb +3 -0
  50. data/platform/shared/RhoConnectClient/RhoConnectClient.cpp +1673 -0
  51. data/platform/shared/RhoConnectClient/RhoConnectClient.h +181 -0
  52. data/platform/shared/RhoConnectClient/RhoError.h +77 -0
  53. data/rhoconnect-client/C++/Tests/RhoConnectClientTest.cpp +830 -0
  54. data/rhoconnect-client/C++/Tests/win32/.gitignore +3 -0
  55. data/rhoconnect-client/C++/Tests/win32/RhoConnectClient.sln +65 -0
  56. data/rhoconnect-client/C++/Tests/win32/RhoConnectClient.vcproj +634 -0
  57. data/rhoconnect-client/C++/Tests/win32/RhoConnectClientTest/RhoConnectClientTest.vcproj +222 -0
  58. data/rhoconnect-client/C++/Tests/win32/RhoConnectClientTest/stdafx.h +65 -0
  59. data/rhoconnect-client/C++/Tests/win32/stdafx.h +65 -0
  60. data/rhoconnect-client/CHANGELOG +18 -0
  61. data/rhoconnect-client/Java/Android/build/android.rake +387 -0
  62. data/rhoconnect-client/Java/Android/build/android_sdk.rb +582 -0
  63. data/rhoconnect-client/Java/Android/build/libcurl_build.files +73 -0
  64. data/rhoconnect-client/Java/Android/build/libjson_build.files +9 -0
  65. data/rhoconnect-client/Java/Android/build/librhocommon_build.files +14 -0
  66. data/rhoconnect-client/Java/Android/build/librhodb_build.files +5 -0
  67. data/rhoconnect-client/Java/Android/build/librhoimpl_build.files +13 -0
  68. data/rhoconnect-client/Java/Android/build/librholog_build.files +4 -0
  69. data/rhoconnect-client/Java/Android/build/libsqlite_build.files +1 -0
  70. data/rhoconnect-client/Java/Android/build/libsync_build.files +7 -0
  71. data/rhoconnect-client/Java/Android/build/libunzip_build.files +1 -0
  72. data/rhoconnect-client/Java/Android/build/rhoconnectclient_build.files +3 -0
  73. data/rhoconnect-client/Java/Android/build/rhoimpljava_build.files +21 -0
  74. data/rhoconnect-client/Java/Android/src/com/rhomobile/rhodes/Capabilities.java +63 -0
  75. data/rhoconnect-client/Java/Android/src/com/rhomobile/rhodes/MemoryInfoCollector.java +79 -0
  76. data/rhoconnect-client/Java/Android/src/com/rhomobile/rhodes/util/ContextFactory.java +63 -0
  77. data/rhoconnect-client/Java/Android/test/.classpath +9 -0
  78. data/rhoconnect-client/Java/Android/test/.project +33 -0
  79. data/rhoconnect-client/Java/Android/test/AndroidManifest.xml +14 -0
  80. data/rhoconnect-client/Java/Android/test/assets/apps/androidtest.png +0 -0
  81. data/rhoconnect-client/Java/Android/test/assets/apps/rhoconfig.txt +19 -0
  82. data/rhoconnect-client/Java/Android/test/assets/apps/rhoconfig.txt.timestamp +1 -0
  83. data/rhoconnect-client/Java/Android/test/assets/db/syncdb.schema +44 -0
  84. data/rhoconnect-client/Java/Android/test/assets/db/syncdb.triggers +10 -0
  85. data/rhoconnect-client/Java/Android/test/assets/db/syncdb_java.triggers +21 -0
  86. data/rhoconnect-client/Java/Android/test/assets/rho.dat +9 -0
  87. data/rhoconnect-client/Java/Android/test/proguard.cfg +36 -0
  88. data/rhoconnect-client/Java/Android/test/project.properties +11 -0
  89. data/rhoconnect-client/Java/Android/test/res/drawable-hdpi/icon.png +0 -0
  90. data/rhoconnect-client/Java/Android/test/res/drawable-ldpi/icon.png +0 -0
  91. data/rhoconnect-client/Java/Android/test/res/drawable-mdpi/icon.png +0 -0
  92. data/rhoconnect-client/Java/Android/test/res/layout/main.xml +12 -0
  93. data/rhoconnect-client/Java/Android/test/res/values/strings.xml +5 -0
  94. data/rhoconnect-client/Java/Android/test/rhoimpl.jar +0 -0
  95. data/rhoconnect-client/Java/Android/test/src/com/rhomobile/rhoconnect_client_test/TestRhoConnectClient.java +343 -0
  96. data/rhoconnect-client/Java/Android/test/src/com/rhomobile/rhoconnect_client_test/TestRhoConnectClientBlobs.java +219 -0
  97. data/rhoconnect-client/Java/RhoConnect/.classpath +6 -0
  98. data/rhoconnect-client/Java/RhoConnect/.project +93 -0
  99. data/rhoconnect-client/Java/RhoConnect/assets/apps/rhoconfig.txt +19 -0
  100. data/rhoconnect-client/Java/RhoConnect/assets/apps/rhoconfig.txt.timestamp +1 -0
  101. data/rhoconnect-client/Java/RhoConnect/assets/db/syncdb.schema +44 -0
  102. data/rhoconnect-client/Java/RhoConnect/assets/db/syncdb.triggers +10 -0
  103. data/rhoconnect-client/Java/RhoConnect/assets/db/syncdb_java.triggers +21 -0
  104. data/rhoconnect-client/Java/RhoConnect/assets/rho.dat +8 -0
  105. data/rhoconnect-client/Java/RhoConnect/jni/include/RhoConnectJniNotify.h +61 -0
  106. data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectClient.h +181 -0
  107. data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectNotify.h +13 -0
  108. data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectNotify_IDelegate.h +13 -0
  109. data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectObjectNotify.h +13 -0
  110. data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectObjectNotify_IDelegate.h +13 -0
  111. data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhomModel.h +103 -0
  112. data/rhoconnect-client/Java/RhoConnect/jni/include/rhojava.inc +76 -0
  113. data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectJniClient.cpp +401 -0
  114. data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectJniModel.cpp +332 -0
  115. data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectJniNotify.cpp +223 -0
  116. data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectUtil.cpp +82 -0
  117. data/rhoconnect-client/Java/RhoConnect/jni/src/RhodesApp.cpp +114 -0
  118. data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhoConnectClient.java +108 -0
  119. data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhoConnectNotify.java +78 -0
  120. data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhoConnectObjectNotify.java +71 -0
  121. data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhomModel.java +195 -0
  122. data/rhoconnect-client/JavaScript/.classpath +10 -0
  123. data/rhoconnect-client/JavaScript/.gitignore +4 -0
  124. data/rhoconnect-client/JavaScript/.project +17 -0
  125. data/rhoconnect-client/JavaScript/README.textile +1 -0
  126. data/rhoconnect-client/JavaScript/build.xml +185 -0
  127. data/rhoconnect-client/JavaScript/doc/fsm-sample.js +44 -0
  128. data/rhoconnect-client/JavaScript/doc/fsm-sample.png +0 -0
  129. data/rhoconnect-client/JavaScript/src/RhoSyncJS.gwt.xml +21 -0
  130. data/rhoconnect-client/JavaScript/stubs/RhoSyncStubsJS.gwt.xml +21 -0
  131. data/rhoconnect-client/JavaScript/stubs/com/rho/Capabilities.java +7 -0
  132. data/rhoconnect-client/JavaScript/stubs/com/rho/IRhoRubyHelper.java +7 -0
  133. data/rhoconnect-client/JavaScript/stubs/com/rho/Mutex.java +5 -0
  134. data/rhoconnect-client/JavaScript/stubs/com/rho/RhoAppAdapter.java +39 -0
  135. data/rhoconnect-client/JavaScript/stubs/com/rho/RhoClassFactory.java +29 -0
  136. data/rhoconnect-client/JavaScript/stubs/com/rho/RhoConf.java +100 -0
  137. data/rhoconnect-client/JavaScript/stubs/com/rho/RhoEmptyLogger.java +7 -0
  138. data/rhoconnect-client/JavaScript/stubs/com/rho/RhoEmptyProfiler.java +5 -0
  139. data/rhoconnect-client/JavaScript/stubs/com/rho/RhoLogger.java +32 -0
  140. data/rhoconnect-client/JavaScript/stubs/com/rho/RhoProfiler.java +27 -0
  141. data/rhoconnect-client/JavaScript/stubs/com/rho/RhodesApp.java +25 -0
  142. data/rhoconnect-client/JavaScript/stubs/com/rho/TimeInterval.java +22 -0
  143. data/rhoconnect-client/JavaScript/stubs/com/rho/Tokenizer.java +23 -0
  144. data/rhoconnect-client/JavaScript/stubs/com/rho/db/DBAdapter.java +174 -0
  145. data/rhoconnect-client/JavaScript/stubs/com/rho/db/DBAttrManager.java +15 -0
  146. data/rhoconnect-client/JavaScript/stubs/com/rho/db/DBException.java +5 -0
  147. data/rhoconnect-client/JavaScript/stubs/com/rho/db/IDBResult.java +27 -0
  148. data/rhoconnect-client/JavaScript/stubs/com/rho/file/IFileAccess.java +7 -0
  149. data/rhoconnect-client/JavaScript/stubs/com/rho/file/SimpleFile.java +15 -0
  150. data/rhoconnect-client/JavaScript/stubs/com/rho/net/IHttpConnection.java +22 -0
  151. data/rhoconnect-client/JavaScript/stubs/com/rho/net/NetRequest.java +324 -0
  152. data/rhoconnect-client/JavaScript/stubs/com/rho/net/NetResponse.java +51 -0
  153. data/rhoconnect-client/JavaScript/stubs/com/rho/net/URI.java +64 -0
  154. data/rhoconnect-client/JavaScript/stubs/com/rho/sync/ClientRegister.java +15 -0
  155. data/rhoconnect-client/JavaScript/stubs/com/rho/sync/JSONArrayIterator.java +37 -0
  156. data/rhoconnect-client/JavaScript/stubs/com/rho/sync/JSONEntry.java +48 -0
  157. data/rhoconnect-client/JavaScript/stubs/com/rho/sync/JSONStructIterator.java +41 -0
  158. data/rhoconnect-client/JavaScript/stubs/com/rho/sync/SyncNotify.java +98 -0
  159. data/rhoconnect-client/JavaScript/stubs/com/rho/sync/SyncThread.java +92 -0
  160. data/rhoconnect-client/JavaScript/war/WEB-INF/lib/gwt-servlet-deps.jar +0 -0
  161. data/rhoconnect-client/JavaScript/war/WEB-INF/lib/gwt-servlet.jar +0 -0
  162. data/rhoconnect-client/JavaScript/war/js/fsm-sample.js +54 -0
  163. data/rhoconnect-client/JavaScript/war/js/rhosync-api.js +237 -0
  164. data/rhoconnect-client/JavaScript/war/js/rhosync-fsm.js +307 -0
  165. data/rhoconnect-client/JavaScript/war/rhosyncjs/4C71D69C9BBC9E6F05C6BA49B01BCBC1.cache.html +3122 -0
  166. data/rhoconnect-client/JavaScript/war/rhosyncjs/5146F4FFF34511C8BB2661E920B49E3A.cache.html +3254 -0
  167. data/rhoconnect-client/JavaScript/war/rhosyncjs/5248C67481D9D27AD0703D15CDBD2A1C.cache.html +3147 -0
  168. data/rhoconnect-client/JavaScript/war/rhosyncjs/EE1DC2692C9C32367B53A39E2358AF23.cache.html +3195 -0
  169. data/rhoconnect-client/JavaScript/war/rhosyncjs/clear.cache.gif +0 -0
  170. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/corner.png +0 -0
  171. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/corner_ie6.png +0 -0
  172. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/hborder.png +0 -0
  173. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/hborder_ie6.png +0 -0
  174. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/corner_dialog_topleft.png +0 -0
  175. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/corner_dialog_topright.png +0 -0
  176. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/hborder_blue_shadow.png +0 -0
  177. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/hborder_gray_shadow.png +0 -0
  178. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/vborder_blue_shadow.png +0 -0
  179. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/vborder_gray_shadow.png +0 -0
  180. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/splitPanelThumb.png +0 -0
  181. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/vborder.png +0 -0
  182. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/vborder_ie6.png +0 -0
  183. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/standard.css +1144 -0
  184. data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/standard_rtl.css +1145 -0
  185. data/rhoconnect-client/JavaScript/war/rhosyncjs/hosted.html +350 -0
  186. data/rhoconnect-client/JavaScript/war/rhosyncjs/rhosyncjs.nocache.js +314 -0
  187. data/rhoconnect-client/JavaScript/war/test/SpecRunner.html +35 -0
  188. data/rhoconnect-client/JavaScript/war/test/dbtest.html +38 -0
  189. data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/MIT.LICENSE +20 -0
  190. data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/jasmine-html.js +188 -0
  191. data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/jasmine.css +166 -0
  192. data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/jasmine.js +2421 -0
  193. data/rhoconnect-client/JavaScript/war/test/spec/SpecHelper.js +7 -0
  194. data/rhoconnect-client/JavaScript/war/test/spec/SyncApiSpec.js +573 -0
  195. data/rhoconnect-client/JavaScript/war/test/spec/samples/PlayerSpec.js +58 -0
  196. data/rhoconnect-client/JavaScript/war/test/worker-test.js +17 -0
  197. data/rhoconnect-client/LICENSE +41 -0
  198. data/rhoconnect-client/ObjectiveC/RhoConnectClient.h +118 -0
  199. data/rhoconnect-client/ObjectiveC/RhoConnectClient.m +641 -0
  200. data/rhoconnect-client/ObjectiveC/RhoConnectClient.xcodeproj/project.pbxproj +1434 -0
  201. data/rhoconnect-client/ObjectiveC/RhoConnectNotify.h +83 -0
  202. data/rhoconnect-client/ObjectiveC/RhoConnectNotify.m +181 -0
  203. data/rhoconnect-client/ObjectiveC/RhoConnectObjectNotify.h +65 -0
  204. data/rhoconnect-client/ObjectiveC/RhoConnectObjectNotify.m +73 -0
  205. data/rhoconnect-client/ObjectiveC/RhomModel.h +101 -0
  206. data/rhoconnect-client/ObjectiveC/RhomModel.m +320 -0
  207. data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/MainWindow.xib +198 -0
  208. data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTest-Info.plist +30 -0
  209. data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTest.xcodeproj/project.pbxproj +373 -0
  210. data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTestAppDelegate.h +58 -0
  211. data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTestAppDelegate.m +84 -0
  212. data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTest_Prefix.pch +8 -0
  213. data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/invalid_import_db.zip +0 -0
  214. data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/main.m +1096 -0
  215. data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/test.png +0 -0
  216. data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/test2.png +0 -0
  217. data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/valid_import_db.zip +0 -0
  218. data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsAppDelegate.h +62 -0
  219. data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsAppDelegate.m +35 -0
  220. data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsViewController.h +78 -0
  221. data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsViewController.m +549 -0
  222. data/rhoconnect-client/ObjectiveC/Tests/ptests/MainWindow.xib +227 -0
  223. data/rhoconnect-client/ObjectiveC/Tests/ptests/main.m +17 -0
  224. data/rhoconnect-client/ObjectiveC/Tests/ptests/ptests-Info.plist +30 -0
  225. data/rhoconnect-client/ObjectiveC/Tests/ptests/ptests.xcodeproj/project.pbxproj +363 -0
  226. data/rhoconnect-client/ObjectiveC/Tests/ptests/ptestsViewController.xib +641 -0
  227. data/rhoconnect-client/ObjectiveC/Tests/ptests/ptests_Prefix.pch +8 -0
  228. data/rhoconnect-client/README.textile +23 -0
  229. data/rhoconnect-client/Rakefile +20 -0
  230. data/rhoconnect-client/Samples/Java/android_store/.classpath +8 -0
  231. data/rhoconnect-client/Samples/Java/android_store/.project +33 -0
  232. data/rhoconnect-client/Samples/Java/android_store/AndroidManifest.xml +24 -0
  233. data/rhoconnect-client/Samples/Java/android_store/assets/apps/rhoconfig.txt +19 -0
  234. data/rhoconnect-client/Samples/Java/android_store/assets/apps/rhoconfig.txt.timestamp +1 -0
  235. data/rhoconnect-client/Samples/Java/android_store/assets/db/syncdb.schema +44 -0
  236. data/rhoconnect-client/Samples/Java/android_store/assets/db/syncdb.triggers +10 -0
  237. data/rhoconnect-client/Samples/Java/android_store/assets/db/syncdb_java.triggers +21 -0
  238. data/rhoconnect-client/Samples/Java/android_store/assets/rho.dat +8 -0
  239. data/rhoconnect-client/Samples/Java/android_store/default.properties +11 -0
  240. data/rhoconnect-client/Samples/Java/android_store/project.properties +14 -0
  241. data/rhoconnect-client/Samples/Java/android_store/res/drawable-hdpi/icon.png +0 -0
  242. data/rhoconnect-client/Samples/Java/android_store/res/drawable-ldpi/icon.png +0 -0
  243. data/rhoconnect-client/Samples/Java/android_store/res/drawable-mdpi/icon.png +0 -0
  244. data/rhoconnect-client/Samples/Java/android_store/res/layout/main.xml +12 -0
  245. data/rhoconnect-client/Samples/Java/android_store/res/values/strings.xml +5 -0
  246. data/rhoconnect-client/Samples/Java/android_store/rhoimpl.jar +0 -0
  247. data/rhoconnect-client/Samples/Java/android_store/src/com/rhomobile/android_store/StoreActivity.java +68 -0
  248. data/rhoconnect-client/Samples/Java/android_store/src/com/rhomobile/android_store/StoreApplication.java +15 -0
  249. data/rhoconnect-client/Samples/ObjectiveC/store/Classes/LoginViewController.h +70 -0
  250. data/rhoconnect-client/Samples/ObjectiveC/store/Classes/LoginViewController.m +94 -0
  251. data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RhoConnectEngine.h +82 -0
  252. data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RhoConnectEngine.m +119 -0
  253. data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RootViewController.h +63 -0
  254. data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RootViewController.m +314 -0
  255. data/rhoconnect-client/Samples/ObjectiveC/store/Classes/WaitLoginController.h +65 -0
  256. data/rhoconnect-client/Samples/ObjectiveC/store/Classes/WaitLoginController.m +110 -0
  257. data/rhoconnect-client/Samples/ObjectiveC/store/Classes/storeAppDelegate.h +61 -0
  258. data/rhoconnect-client/Samples/ObjectiveC/store/Classes/storeAppDelegate.m +171 -0
  259. data/rhoconnect-client/Samples/ObjectiveC/store/LoginViewController.xib +779 -0
  260. data/rhoconnect-client/Samples/ObjectiveC/store/MainWindow.xib +580 -0
  261. data/rhoconnect-client/Samples/ObjectiveC/store/RootViewController.xib +384 -0
  262. data/rhoconnect-client/Samples/ObjectiveC/store/WaitLoginController.xib +557 -0
  263. data/rhoconnect-client/Samples/ObjectiveC/store/icon.png +0 -0
  264. data/rhoconnect-client/Samples/ObjectiveC/store/main.m +22 -0
  265. data/rhoconnect-client/Samples/ObjectiveC/store/store-Info.plist +30 -0
  266. data/rhoconnect-client/Samples/ObjectiveC/store/store.xcodeproj/project.pbxproj +367 -0
  267. data/rhoconnect-client/Samples/ObjectiveC/store/store_Prefix.pch +14 -0
  268. data/rhoconnect-client/build.yml +3 -0
  269. data/rhoconnect-client/version +1 -0
  270. metadata +314 -0
@@ -0,0 +1,7 @@
1
+ beforeEach(function() {
2
+ this.addMatchers({
3
+ toBeSet: function() {
4
+ return (undefined != this.actual && null != this.actual);
5
+ }
6
+ })
7
+ });
@@ -0,0 +1,573 @@
1
+ // Rhodes js sync client API test spec
2
+
3
+ describe("Sync client API", function() {
4
+
5
+ it("have namespaces defined", function() {
6
+ expect(Rhomobile).toBeSet();
7
+ expect(Rhomobile.event).toBeSet();
8
+ expect(Rhomobile.internal).toBeSet();
9
+ expect(Rhomobile.sync).toBeSet();
10
+ expect(Rhomobile.db).toBeSet();
11
+ expect(Rhomobile.fsm).toBeSet();
12
+ });
13
+
14
+ it("loadModules is defined", function() {
15
+ expect(Rhomobile.loadModules).toBeSet();
16
+ });
17
+
18
+ describe("Rhomobile.fsm.Machine", function() {
19
+ var api = Rhomobile.fsm;
20
+
21
+ var fsmName = 'sample Machine';
22
+ var fsmInst = null;
23
+
24
+ beforeEach(function(){
25
+ fsmInst = new api.Machine(fsmName);
26
+ });
27
+
28
+ it("is defined", function() {
29
+ expect(api.Machine).toBeSet();
30
+ });
31
+
32
+ it("is able to construct an instance", function() {
33
+ expect(api.define).toBeSet();
34
+ var fsmInst2 = api.define('another '+fsmName);
35
+ expect(fsmInst2.name).not.toEqual(fsmName);
36
+ expect(fsmInst.name).toEqual(fsmName);
37
+ });
38
+
39
+ it("is able to obtain definition", function() {
40
+ var def1 = jasmine.createSpy('Machine1 definition');
41
+ var def2 = jasmine.createSpy('Machine2 definition');
42
+ // states can be defined after creation
43
+ fsmInst.define(def1);
44
+ // or while creating the instance
45
+ var fsmInst2 = api.define('another '+fsmName, def2);
46
+ expect(def1).toHaveBeenCalledWith(fsmInst);
47
+ expect(def2).toHaveBeenCalledWith(fsmInst2);
48
+ });
49
+
50
+ it("prohibits to define the same status twice", function() {
51
+ var stateName1 = 'sample input';
52
+ var stateName2 = stateName1;
53
+
54
+ fsmInst.state(stateName1);
55
+
56
+ var exceptionHappens = false;
57
+ try {
58
+ fsmInst.state(stateName2);
59
+ } catch(ex) {
60
+ jasmine.log('Exception thrown: '+ex);
61
+ exceptionHappens = true;
62
+ }
63
+ expect(exceptionHappens).toEqual(true);
64
+ });
65
+
66
+ it("is able to have states", function() {
67
+ var stName1 = 'sample state';
68
+ var stName2 = 'another '+stName1;
69
+
70
+ expect(fsmInst.state).toBeSet();
71
+ fsmInst.state(stName1);
72
+ fsmInst.state(stName2);
73
+
74
+ expect(fsmInst.states).toBeSet();
75
+ expect(fsmInst.states[stName1].name).toEqual(stName1);
76
+ expect(fsmInst.states[stName2].name).toEqual(stName2);
77
+ });
78
+
79
+ it("is able to have current state", function() {
80
+ var stName1 = 'sample state';
81
+ var stName2 = 'another '+stName1;
82
+
83
+ // if no states has been defined yet,
84
+ // then first one becomes current state
85
+ var st1 = fsmInst.state(stName1);
86
+ var st2 = fsmInst.state(stName2);
87
+ expect(fsmInst.currentState).toBeSet();
88
+ expect(fsmInst.currentState).toEqual(st1);
89
+ });
90
+
91
+ it("is able to have initial state", function() {
92
+ var stName1 = 'sample state';
93
+ var stName2 = 'another '+stName1;
94
+
95
+ // if no states has been defined yet,
96
+ // then first one becomes initial state
97
+ var st1 = fsmInst.state(stName1);
98
+ var st2 = fsmInst.state(stName2);
99
+ expect(fsmInst.initialState).toBeSet();
100
+ expect(fsmInst.initialState).toEqual(st1);
101
+
102
+ // and then we can change it to any defined
103
+ expect(fsmInst.withInitialState).toBeSet();
104
+ fsmInst.withInitialState(stName2);
105
+ // it changes
106
+ expect(fsmInst.initialState).toEqual(st2);
107
+ // but current state doesn't
108
+ expect(fsmInst.currentState).toEqual(st1);
109
+ });
110
+
111
+ it("is able to be reset", function() {
112
+ var stName1 = 'sample state';
113
+ var stName2 = 'another '+stName1;
114
+
115
+ var st1 = fsmInst.state(stName1);
116
+ var st2 = fsmInst.state(stName2);
117
+
118
+ // first defined state becomes current one
119
+ expect(fsmInst.currentState).toEqual(st1);
120
+
121
+ // define initial state explicitly
122
+ fsmInst.withInitialState(stName2);
123
+
124
+ // reset to initial state
125
+ expect(fsmInst.reset).toBeSet();
126
+ fsmInst.reset();
127
+ expect(fsmInst.currentState).toEqual(st2);
128
+
129
+ // reset to any state
130
+ fsmInst.resetTo(stName1);
131
+ // it changes
132
+ expect(fsmInst.currentState).toEqual(st1);
133
+ // but initial state still the same
134
+ expect(fsmInst.initialState).toEqual(st2);
135
+ });
136
+
137
+ it("is able to receive an input", function() {
138
+ expect(fsmInst.inputWith).toBeSet();
139
+ var inputSpy = spyOn(fsmInst, 'inputWith');
140
+ fsmInst.inputWith('button pressed', 5);
141
+ expect(inputSpy).toHaveBeenCalledWith('button pressed', 5);
142
+ });
143
+
144
+ it("can change state on appropriate input applied", function() {
145
+
146
+ var lampSwitchFsm = api.define('Lamp switch FSM', function(fsm){
147
+ fsm.state('Light is OFF')
148
+ .on('turn switch on').transitsTo('Light is ON');
149
+ fsm.state('Light is ON')
150
+ .on('turn switch off').transitsTo('Light is OFF');
151
+ });
152
+
153
+ expect(lampSwitchFsm).toBeSet();
154
+ expect(lampSwitchFsm.currentState.name).toEqual('Light is OFF');
155
+
156
+ lampSwitchFsm.inputWith('turn switch off');
157
+ expect(lampSwitchFsm.currentState.name).toEqual('Light is OFF');
158
+
159
+ lampSwitchFsm.inputWith('turn switch on');
160
+ expect(lampSwitchFsm.currentState.name).toEqual('Light is ON');
161
+
162
+ lampSwitchFsm.inputWith('turn switch on');
163
+ expect(lampSwitchFsm.currentState.name).toEqual('Light is ON');
164
+
165
+ lampSwitchFsm.inputWith('turn switch off');
166
+ expect(lampSwitchFsm.currentState.name).toEqual('Light is OFF');
167
+ });
168
+
169
+ it("can handle states with immediate transition", function() {
170
+
171
+ var lampSwitchFsm = api.define('Lamp switch FSM', function(fsm){
172
+ expect(fsm.state('some fake intact state w/o transitions').immediateTransitsTo).toBeSet();
173
+
174
+ fsm.state('Light is OFF')
175
+ .on('turn switch on').transitsTo('ON click sound produced');
176
+ fsm.state('ON click sound produced')
177
+ .immediateTransitsTo('Light is ON');
178
+ fsm.state('Light is ON')
179
+ .on('turn switch off').transitsTo('OFF click sound produced');
180
+ fsm.state('OFF click sound produced')
181
+ .immediateTransitsTo('Light is OFF');
182
+ }).withInitialState('Light is OFF').reset();
183
+
184
+ expect(lampSwitchFsm).toBeSet();
185
+ expect(lampSwitchFsm.currentState.name).toEqual('Light is OFF');
186
+
187
+ lampSwitchFsm.inputWith('turn switch off');
188
+ expect(lampSwitchFsm.currentState.name).toEqual('Light is OFF');
189
+
190
+ lampSwitchFsm.inputWith('turn switch on');
191
+ expect(lampSwitchFsm.currentState.name).toEqual('Light is ON');
192
+
193
+ lampSwitchFsm.inputWith('turn switch on');
194
+ expect(lampSwitchFsm.currentState.name).toEqual('Light is ON');
195
+
196
+ lampSwitchFsm.inputWith('turn switch off');
197
+ expect(lampSwitchFsm.currentState.name).toEqual('Light is OFF');
198
+ });
199
+
200
+ it("can be rendered as a graph in a DOT notation", function() {
201
+
202
+ var lampSwitchFsm = api.define('Lamp switch FSM', function(fsm){
203
+ expect(fsm.state('some fake intact state w/o transitions').immediateTransitsTo).toBeSet();
204
+
205
+ fsm.state('Light is OFF')
206
+ .on('turn switch on').transitsTo('ON click sound produced');
207
+ fsm.state('ON click sound produced')
208
+ .immediateTransitsTo('Light is ON');
209
+ fsm.state('Light is ON')
210
+ .on('turn switch off').transitsTo('OFF click sound produced');
211
+ fsm.state('OFF click sound produced')
212
+ .immediateTransitsTo('Light is OFF');
213
+ }).withInitialState('Light is OFF').reset();
214
+
215
+ var dot = lampSwitchFsm.renderAsDot();
216
+ expect(dot).toBeSet();
217
+ expect(dot.length).toBeSet();
218
+ expect(dot.length).toBeGreaterThan("graph".length);
219
+ jasmine.log(dot);
220
+ });
221
+
222
+ });
223
+
224
+ describe("Rhomobile.fsm.State", function() {
225
+ var api = Rhomobile.fsm;
226
+
227
+ var fsmName = 'sample Machine';
228
+ var fsmInst = null;
229
+
230
+ var stateName = 'sample State';
231
+ var stateInst = null;
232
+
233
+ beforeEach(function(){
234
+ fsmInst = api.define(fsmName);
235
+ stateInst = fsmInst.state(stateName);
236
+ });
237
+
238
+ it("is defined", function() {
239
+ expect(api.State).toBeSet();
240
+ });
241
+
242
+ it("is able to construct an instance", function() {
243
+ var stateInst2 = fsmInst.state('another '+stateName);
244
+ expect(stateInst2.name).not.toEqual(stateName);
245
+ expect(stateInst.name).toEqual(stateName);
246
+ });
247
+
248
+ it("is able to receive an input from Machine", function() {
249
+ expect(stateInst.inputWith).toBeSet();
250
+ var inputSpy = spyOn(stateInst, 'inputWith');
251
+ fsmInst.inputWith('button pressed', 5);
252
+ expect(inputSpy).toHaveBeenCalledWith('button pressed', 5);
253
+ });
254
+
255
+ it("is able to have inputs defined", function() {
256
+ var inputName1 = 'sample input';
257
+ var inputName2 = 'another '+inputName1;
258
+
259
+ expect(stateInst.on).toBeSet();
260
+ stateInst.on(inputName1);
261
+ stateInst.on(inputName2);
262
+
263
+ expect(stateInst.inputs).toBeSet();
264
+ expect(stateInst.inputs[inputName1].name).toEqual(inputName1);
265
+ expect(stateInst.inputs[inputName2].name).toEqual(inputName2);
266
+ });
267
+
268
+ it("prohibits to define the same input twice", function() {
269
+ var inputName1 = 'sample input';
270
+ var inputName2 = inputName1;
271
+
272
+ stateInst.on(inputName1);
273
+
274
+ var exceptionHappens = false;
275
+ try {
276
+ stateInst.on(inputName2);
277
+ } catch(ex) {
278
+ jasmine.log('Exception thrown: '+ex);
279
+ exceptionHappens = true;
280
+ }
281
+ expect(exceptionHappens).toEqual(true);
282
+ });
283
+
284
+ it("can fire actions properly", function() {
285
+
286
+ var unknownInput = 'unknown input';
287
+ var knownInput = 'well known input w/o transition follows';
288
+ var turnOnInput = 'turn switch on';
289
+ var turnOffInput = 'turn switch off';
290
+
291
+ var stateOn = 'Light is ON';
292
+ var stateOff = 'Light is OFF';
293
+
294
+ var spyOnEntry = jasmine.createSpy('spy on entry action');
295
+ var spyOnExit = jasmine.createSpy('spy on exit action');
296
+ var spyOnInput = jasmine.createSpy('spy on input action');
297
+ var spyOnTransit = jasmine.createSpy('spy on transition action');
298
+
299
+ var lampSwitchFsm = api.define('Lamp switch FSM', function(fsm){
300
+
301
+ fsm.state('Light is OFF')
302
+ .on(turnOnInput).transitsTo(stateOn)
303
+ .withEntryAction('entry action1', spyOnEntry)
304
+ .withExitAction('exit action1', spyOnExit)
305
+ .withActionOnInput(knownInput, 'input action1', spyOnInput)
306
+ .withActionOnTransitTo(stateOff, 'transit action1', spyOnTransit)
307
+ .withActionOnTransitTo(stateOn, 'transit action1', spyOnTransit)
308
+ ;
309
+
310
+ fsm.state('Light is ON')
311
+ .on(turnOffInput).transitsTo(stateOff)
312
+ .withEntryAction('entry action2', spyOnEntry)
313
+ .withExitAction('exit action2', spyOnExit)
314
+ .withActionOnInput(knownInput, 'input action3', spyOnInput)
315
+ .withActionOnTransitTo(stateOn, 'transit action2', spyOnTransit)
316
+ .withActionOnTransitTo(stateOff, 'transit action2', spyOnTransit)
317
+ ;
318
+ });
319
+
320
+ var cntEntry = 0;
321
+ var cntExit = 0;
322
+ var cntInput = 0;
323
+ var cntTrans = 0;
324
+
325
+ var reportCounts = function(logMsg) {
326
+ jasmine.log(logMsg);
327
+ jasmine.log('-- entry'); expect(spyOnEntry.callCount).toEqual(cntEntry);
328
+ jasmine.log('-- exit'); expect(spyOnExit.callCount).toEqual(cntExit);
329
+ jasmine.log('-- input'); expect(spyOnInput.callCount).toEqual(cntInput);
330
+ jasmine.log('-- transition'); expect(spyOnTransit.callCount).toEqual(cntTrans);
331
+ };
332
+
333
+ reportCounts(stateOff+': initial state');
334
+
335
+ lampSwitchFsm.inputWith(unknownInput);
336
+ // nothing should happen
337
+ reportCounts(stateOff+': '+unknownInput);
338
+
339
+ lampSwitchFsm.inputWith(knownInput, 123);
340
+ cntInput++;
341
+ // still at the same state, but action happens
342
+ reportCounts(stateOff+': '+knownInput);
343
+ expect(spyOnInput).toHaveBeenCalledWith(123);
344
+
345
+ lampSwitchFsm.inputWith(turnOffInput);
346
+ // nothing should happen
347
+ reportCounts(stateOff+': '+turnOffInput);
348
+
349
+ lampSwitchFsm.inputWith(turnOnInput);
350
+ // three more actions should be performed:
351
+ // exit current state, transition to the new one, and entry to the new state
352
+ cntEntry++;
353
+ cntTrans++;
354
+ cntExit++;
355
+ reportCounts(stateOff+': '+turnOnInput);
356
+
357
+ lampSwitchFsm.inputWith(unknownInput);
358
+ // no changes should happen
359
+ reportCounts(stateOn+': '+unknownInput);
360
+
361
+ lampSwitchFsm.inputWith(knownInput, 123);
362
+ // still at the same state, but action happens
363
+ cntInput++;
364
+ reportCounts(stateOn+': '+knownInput);
365
+ expect(spyOnInput).toHaveBeenCalledWith(123);
366
+
367
+ lampSwitchFsm.inputWith(turnOnInput);
368
+ // nothing should happen
369
+ reportCounts(stateOn+': '+turnOnInput);
370
+
371
+ lampSwitchFsm.inputWith(turnOffInput);
372
+ // three more actions should be performed:
373
+ // exit current state, transition to the new one, and entry to the new state
374
+ cntEntry++;
375
+ cntTrans++;
376
+ cntExit++;
377
+ reportCounts(stateOn+': '+turnOffInput);
378
+ });
379
+ });
380
+
381
+ describe("Rhomobile.fsm.Input", function() {
382
+ var api = Rhomobile.fsm;
383
+
384
+ var fsmName = 'sample Machine';
385
+ var fsmInst = null;
386
+
387
+ var stateName = 'sample State';
388
+ var stateInst = null;
389
+
390
+ var inputName = 'sample Input';
391
+ var inputInst = null;
392
+
393
+ beforeEach(function(){
394
+ fsmInst = api.define(fsmName);
395
+ stateInst = fsmInst.state(stateName);
396
+ inputInst = stateInst.on(inputName);
397
+ });
398
+
399
+ it("is defined", function() {
400
+ expect(api.Input).toBeSet();
401
+ });
402
+
403
+ it("is able to construct an instance", function() {
404
+ var inputInst2 = stateInst.on('another '+inputName);
405
+ expect(inputInst2.name).not.toEqual(inputName);
406
+ expect(inputInst.name).toEqual(inputName);
407
+ });
408
+
409
+ it("is able to have transition defined", function() {
410
+ var transName1 = 'sample sample transition';
411
+
412
+ expect(inputInst.transitsTo).toBeSet();
413
+
414
+ var stateCheck = inputInst.transitsTo(transName1);
415
+ // state should be returned
416
+ expect(stateCheck).toEqual(stateInst);
417
+
418
+ expect(inputInst.transition).toBeSet();
419
+ expect(inputInst.transition).toEqual(transName1);
420
+ });
421
+
422
+ });
423
+
424
+ describe("Rhomobile.data.Model", function() {
425
+ var api = Rhomobile.data;
426
+
427
+ it("is defined", function() {
428
+ expect(api.Model).toBeSet();
429
+ });
430
+
431
+ it("is able to construct an instance", function() {
432
+ var name = "sampleModel";
433
+ var inst1 = new api.Model(name);
434
+ var inst2 = new api.Model('another '+name);
435
+ expect(inst2.name).not.toEqual(name);
436
+ expect(inst1.name).toEqual(name);
437
+ });
438
+
439
+ });
440
+
441
+ describe("Rhomobile.Config", function() {
442
+ var api = Rhomobile;
443
+
444
+ var models = [
445
+ new Rhomobile.data.Model("Customer", {
446
+ // options
447
+ 'enable': ['sync'],
448
+ 'set': {'sync_priority': 1, 'schema_version': '1.0'}
449
+ }, {
450
+ // properties
451
+ 'address': 'string',
452
+ 'created_at': 'string',
453
+ 'city': 'string',
454
+ 'email': 'string',
455
+ 'first': 'string',
456
+ 'last': 'string',
457
+ 'updated_at': 'string',
458
+ 'lat': 'string',
459
+ 'long': 'string',
460
+ 'phone': 'string',
461
+ 'state': 'string',
462
+ 'zip': 'string',
463
+
464
+ 'SurveySectionID': 'string',
465
+ 'SurveyID': 'string',
466
+ 'CallID': 'string',
467
+ 'SurveyResultID': 'string'
468
+ }),
469
+
470
+ new Rhomobile.data.Model("Product", {
471
+ // options
472
+ 'enable': ['sync', 'pass_through'],
473
+ 'set': {'sync_priority': 2, 'schema_version': '1.0'},
474
+ 'belongs_to': [{'quantity': 'Customer_s'}, {'sku': 'Customer_s'}]
475
+ }, {
476
+ // properties
477
+ 'brand': 'string',
478
+ 'created_at': 'string',
479
+ 'name': 'string',
480
+ 'price': 'string',
481
+ 'quantity': 'string',
482
+ 'sku': 'string',
483
+ 'updated_at': 'string'
484
+ })
485
+ ];
486
+
487
+ it("is defined", function() {
488
+ expect(api.Config).toBeSet();
489
+ });
490
+
491
+ it("is able to add a source", function() {
492
+ expect(api.Config.addSource).toBeSet();
493
+ });
494
+ });
495
+
496
+ describe("Rhomobile.db.DbStorage", function() {
497
+ var api = Rhomobile.db;
498
+
499
+ var dbName = "sampleSyncDb";
500
+
501
+ it("is defined", function() {
502
+ expect(api.DbStorage).toBeSet();
503
+ });
504
+
505
+ it("is able to construct an instance", function() {
506
+ var inst1 = new api.DbStorage(dbName);
507
+ var inst2 = new api.DbStorage('another '+dbName);
508
+ expect(inst2.dbName).not.toEqual(dbName);
509
+ expect(inst1.dbName).toEqual(dbName);
510
+ });
511
+
512
+ it("is able to open database", function() {
513
+ var inst = new api.DbStorage(dbName);
514
+ var errHdlr = jasmine.createSpy('for error');
515
+ expect(inst.open).toBeSet();
516
+ inst.open(function(db){}, errHdlr);
517
+ expect(errHdlr).not.toHaveBeenCalled();
518
+ });
519
+
520
+ it("is able to perform a query", function() {
521
+ var inst = new api.DbStorage(dbName);
522
+ var errHdlr = jasmine.createSpy('for error');
523
+ expect(inst.open).toBeSet();
524
+ inst.open("SELECT name FROM sqlite_master WHERE type='table'", errHdlr);
525
+ expect(errHdlr).not.toHaveBeenCalled();
526
+ });
527
+
528
+ it("is able to initialized", function() {
529
+ var inst = new api.DbStorage(dbName);
530
+ var errHdlr = jasmine.createSpy('for error');
531
+ expect(inst.initSchema).toBeSet();
532
+ inst.initSchema(errHdlr);
533
+ expect(errHdlr).not.toHaveBeenCalled();
534
+ var names = inst.getAllTableNames(true, errHdlr);
535
+ expect(errHdlr).not.toHaveBeenCalled();
536
+ // expect(names).toBeSet();
537
+ // expect(names.length).toEqual(4+1);
538
+ // expect(names).toContain('sources');
539
+ });
540
+
541
+ });
542
+
543
+ describe("Rhomobile.sync.SyncThread", function() {
544
+ var api = Rhomobile.sync;
545
+
546
+ var OK_LOGIN = "lars";
547
+ var OK_PASSWD = "larspass";
548
+ var WRONG_LOGIN = "not-lars";
549
+ var WRONG_PASSWD = "not-larspass";
550
+
551
+ it("is defined", function() {
552
+ expect(api.Thread).toBeSet();
553
+ });
554
+
555
+ /*
556
+ it("shouldn't login with wrong credentials", function() {
557
+ expect(api.Thread.login).toBeSet();
558
+ var result = api.Thread.login(WRONG_LOGIN, WRONG_PASSWD);
559
+ expect(result).not.toBeNull();
560
+ expect(result).toBeFalsy();
561
+ });
562
+
563
+ it("should login OK with proper credentials", function() {
564
+ expect(api.Thread.login).toBeSet();
565
+ var result = api.Thread.login(OK_LOGIN, OK_PASSWD);
566
+ expect(result).not.toBeNull();
567
+ expect(result).toBeTruthy();
568
+ });
569
+ */
570
+
571
+ });
572
+
573
+ });