sl4a_test.py

分手后的思念是犯贱 2022-12-05 12:25 266阅读 0赞
  1. import sys
  2. import time
  3. import types
  4. import androidhelper
  5. try:
  6. import gdata.docs.service
  7. except ImportError:
  8. gdata = None
  9. droid = androidhelper.Android()
  10. def event_loop():
  11. for i in range(10):
  12. time.sleep(1)
  13. droid.eventClearBuffer()
  14. time.sleep(1)
  15. e = droid.eventPoll(1)
  16. if e.result is not None:
  17. return True
  18. return False
  19. def test_imports():
  20. try:
  21. import termios
  22. import bs4 as BeautifulSoup
  23. import pyxmpp2 as xmpp
  24. from xml.dom import minidom
  25. except ImportError:
  26. return False
  27. return True
  28. def test_clipboard():
  29. previous = droid.getClipboard().result
  30. msg = 'Hello, world!'
  31. droid.setClipboard(msg)
  32. echo = droid.getClipboard().result
  33. droid.setClipboard(previous)
  34. return echo == msg
  35. def test_gdata():
  36. if gdata is None:
  37. return False
  38. # Create a client class which will make HTTP requests with Google Docs server.
  39. client = gdata.docs.service.DocsService()
  40. # Authenticate using your Google Docs email address and password.
  41. username = droid.dialogGetInput('Username').result
  42. password = droid.dialogGetPassword('Password', 'For ' + username).result
  43. try:
  44. client.ClientLogin(username, password)
  45. except:
  46. return False
  47. # Query the server for an Atom feed containing a list of your documents.
  48. documents_feed = client.GetDocumentListFeed()
  49. # Loop through the feed and extract each document entry.
  50. return bool(list(documents_feed.entry))
  51. def test_gps():
  52. droid.startLocating()
  53. try:
  54. return event_loop()
  55. finally:
  56. droid.stopLocating()
  57. def test_battery():
  58. droid.batteryStartMonitoring()
  59. time.sleep(1)
  60. try:
  61. return bool(droid.batteryGetStatus())
  62. finally:
  63. droid.batteryStopMonitoring()
  64. def test_sensors():
  65. # Accelerometer, once per second.
  66. droid.startSensingTimed(2, 1000)
  67. try:
  68. return event_loop()
  69. finally:
  70. droid.stopSensing()
  71. def test_speak():
  72. result = droid.ttsSpeak('Hello, world!')
  73. return result.error is None
  74. def test_phone_state():
  75. droid.startTrackingPhoneState()
  76. try:
  77. return event_loop()
  78. finally:
  79. droid.stopTrackingPhoneState()
  80. def test_ringer_silent():
  81. result1 = droid.toggleRingerSilentMode()
  82. result2 = droid.toggleRingerSilentMode()
  83. return result1.error is None and result2.error is None
  84. def test_ringer_volume():
  85. get_result = droid.getRingerVolume()
  86. if get_result.error is not None:
  87. return False
  88. droid.setRingerVolume(0)
  89. set_result = droid.setRingerVolume(get_result.result)
  90. if set_result.error is not None:
  91. return False
  92. return True
  93. def test_get_last_known_location():
  94. result = droid.getLastKnownLocation()
  95. return result.error is None
  96. def test_geocode():
  97. result = droid.geocode(0.0, 0.0, 1)
  98. return result.error is None
  99. def test_make_toast():
  100. result = droid.makeToast('Hello, world!')
  101. return result.error is None
  102. def test_vibrate():
  103. result = droid.vibrate()
  104. return result.error is None
  105. def test_notify():
  106. result = droid.notify('Test Title', 'Hello, world!')
  107. return result.error is None
  108. def test_get_running_packages():
  109. result = droid.getRunningPackages()
  110. return result.error is None
  111. def test_alert_dialog():
  112. title = 'User Interface'
  113. message = 'Welcome to the SL4A integration test.'
  114. droid.dialogCreateAlert(title, message)
  115. droid.dialogSetPositiveButtonText('Continue')
  116. droid.dialogShow()
  117. response = droid.dialogGetResponse().result
  118. return response['which'] == 'positive'
  119. def test_alert_dialog_with_buttons():
  120. title = 'Alert'
  121. message = ('This alert box has 3 buttons and '
  122. 'will wait for you to press one.')
  123. droid.dialogCreateAlert(title, message)
  124. droid.dialogSetPositiveButtonText('Yes')
  125. droid.dialogSetNegativeButtonText('No')
  126. droid.dialogSetNeutralButtonText('Cancel')
  127. droid.dialogShow()
  128. response = droid.dialogGetResponse().result
  129. return response['which'] in ('positive', 'negative', 'neutral')
  130. def test_spinner_progress():
  131. title = 'Spinner'
  132. message = 'This is simple spinner progress.'
  133. droid.dialogCreateSpinnerProgress(title, message)
  134. droid.dialogShow()
  135. time.sleep(2)
  136. droid.dialogDismiss()
  137. return True
  138. def test_horizontal_progress():
  139. title = 'Horizontal'
  140. message = 'This is simple horizontal progress.'
  141. droid.dialogCreateHorizontalProgress(title, message, 50)
  142. droid.dialogShow()
  143. for x in range(0, 50):
  144. time.sleep(0.1)
  145. droid.dialogSetCurrentProgress(x)
  146. droid.dialogDismiss()
  147. return True
  148. def test_alert_dialog_with_list():
  149. title = 'Alert'
  150. droid.dialogCreateAlert(title)
  151. droid.dialogSetItems(['foo', 'bar', 'baz'])
  152. droid.dialogShow()
  153. response = droid.dialogGetResponse().result
  154. return True
  155. def test_alert_dialog_with_single_choice_list():
  156. title = 'Alert'
  157. droid.dialogCreateAlert(title)
  158. droid.dialogSetSingleChoiceItems(['foo', 'bar', 'baz'])
  159. droid.dialogSetPositiveButtonText('Yay!')
  160. droid.dialogShow()
  161. response = droid.dialogGetResponse().result
  162. return True
  163. def test_alert_dialog_with_multi_choice_list():
  164. title = 'Alert'
  165. droid.dialogCreateAlert(title)
  166. droid.dialogSetMultiChoiceItems(['foo', 'bar', 'baz'], [])
  167. droid.dialogSetPositiveButtonText('Yay!')
  168. droid.dialogShow()
  169. response = droid.dialogGetResponse().result
  170. return True
  171. def test_wifi():
  172. result1 = droid.toggleWifiState()
  173. result2 = droid.toggleWifiState()
  174. droid.toggleWifiState(True) # Make sure wifi ends up ON, as it interferes with other tests
  175. return result1.error is None and result2.error is None
  176. if __name__ == '__main__':
  177. for name, value in list(globals().items()):
  178. if name.startswith('test_') and isinstance(value, types.FunctionType):
  179. print('Running %s...' % name, end=' ')
  180. sys.stdout.flush()
  181. if value():
  182. print(' PASS')
  183. else:
  184. print(' FAIL')

发表评论

表情:
评论列表 (有 0 条评论,266人围观)

还没有评论,来说两句吧...

相关阅读