sproutcore 1.7.1.beta → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (445) hide show
  1. data/CHANGELOG +44 -0
  2. data/README.rdoc +20 -20
  3. data/VERSION.yml +3 -3
  4. data/lib/Buildfile +1 -1
  5. data/lib/buildtasks/build.rake +5 -0
  6. data/lib/buildtasks/manifest.rake +19 -1
  7. data/lib/frameworks/sproutcore/Buildfile +19 -17
  8. data/lib/frameworks/sproutcore/CHANGELOG.md +163 -29
  9. data/lib/frameworks/sproutcore/README.md +29 -8
  10. data/lib/frameworks/sproutcore/apps/statechart_routing/Buildfile +12 -0
  11. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/login_controller.js +11 -0
  12. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/main_controller.js +7 -0
  13. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/statechart_controller.js +17 -0
  14. data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +25 -0
  15. data/lib/frameworks/sproutcore/apps/statechart_routing/main.js +15 -0
  16. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/_theme.css +18 -0
  17. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/bar_page.js +14 -0
  18. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/foo_page.js +14 -0
  19. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/loading.rhtml +9 -0
  20. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +61 -0
  21. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/main_page.js +46 -0
  22. data/lib/frameworks/sproutcore/apps/statechart_routing/statechart.js +76 -0
  23. data/lib/frameworks/sproutcore/apps/statechart_routing/theme.js +27 -0
  24. data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
  25. data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
  26. data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
  27. data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
  28. data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
  29. data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
  30. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
  31. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +14 -1
  32. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +15 -15
  33. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +1 -1
  34. data/lib/frameworks/sproutcore/frameworks/animation/core.js +8 -5
  35. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +302 -70
  36. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +19 -14
  37. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +471 -149
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +3 -3
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +42 -0
  40. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +3 -2
  41. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
  42. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +1 -1
  43. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +3 -3
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
  46. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +63 -0
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +1 -1
  48. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +37 -2
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +28 -6
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +10 -3
  51. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +2 -2
  52. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +66 -2
  53. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
  54. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
  55. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +58 -57
  56. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
  57. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js.orig +445 -0
  58. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +51 -31
  59. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +5 -1
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +53 -69
  61. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
  62. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +98 -72
  63. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +37 -3
  64. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +7 -4
  65. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +21 -0
  66. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +7 -7
  67. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +23 -1
  68. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/browser.js +66 -0
  69. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/event.js +22 -0
  70. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +11 -11
  71. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +4 -4
  72. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +41 -0
  73. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
  74. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +8 -8
  75. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +17 -16
  76. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
  77. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
  78. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +15 -0
  79. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +5 -5
  80. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +50 -30
  81. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +46 -0
  82. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +1 -43
  83. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +8 -34
  84. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +3 -2
  85. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -1
  86. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +6 -5
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +22 -2
  88. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +2 -2
  89. data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +1 -1
  90. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +0 -2
  91. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +35 -0
  92. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +46 -19
  93. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -9
  94. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +2 -3
  95. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
  96. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -2
  97. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +294 -302
  98. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js.orig +1531 -0
  99. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +4 -2
  100. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +14 -11
  101. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/many_array.js +63 -0
  102. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
  103. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +4 -4
  104. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +50 -10
  105. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +4 -4
  106. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +3 -3
  107. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
  108. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +1 -1
  109. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
  110. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +114 -67
  111. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
  112. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
  113. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +54 -1
  114. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +29 -9
  115. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
  116. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
  117. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +1 -1
  118. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
  119. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
  120. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +37 -45
  121. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +127 -127
  122. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +16 -0
  123. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +42 -4
  124. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
  125. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -7
  126. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +8 -0
  127. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +2 -1
  128. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +1 -0
  129. data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
  130. data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
  131. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
  132. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
  133. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +1 -4
  134. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +19 -6
  135. data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +30 -1
  136. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
  137. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +24 -1
  138. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +121 -28
  139. data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +15 -15
  140. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
  141. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
  142. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +2 -2
  143. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +39 -15
  144. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +3 -3
  145. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +2 -2
  146. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +2 -2
  147. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +14 -6
  148. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +3 -3
  149. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +11 -11
  150. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -3
  151. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -51
  152. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +11 -16
  153. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +0 -2
  155. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
  156. data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +3 -3
  157. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +9 -9
  158. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +11 -11
  159. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
  160. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
  161. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +107 -81
  162. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +3 -3
  163. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +68 -60
  164. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +57 -12
  165. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +21 -19
  166. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -0
  167. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +2 -2
  168. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +32 -3
  169. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +12 -0
  170. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +12 -0
  171. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -8
  172. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +77 -132
  173. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +5 -6
  174. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +16 -15
  175. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +52 -52
  176. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -1
  177. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
  178. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +147 -147
  179. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +11 -2
  180. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
  181. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +5 -5
  182. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +22 -12
  183. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +13 -7
  184. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +2 -2
  185. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +462 -441
  186. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +48 -62
  187. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +22 -2
  188. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +150 -32
  189. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +104 -45
  190. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +42 -20
  191. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +24 -24
  192. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +148 -154
  193. data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +2 -2
  194. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +2 -2
  195. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +8 -7
  196. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -2
  197. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
  198. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/files.js +1 -1
  199. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +1 -1
  200. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/targets.js +1 -1
  201. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/view_configs.js +1 -1
  202. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/mixins/drop_down.js +1 -1
  203. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +1 -1
  204. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +1 -1
  205. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/web.js +1 -1
  206. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +2 -2
  207. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +2 -2
  208. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +1 -1
  209. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +2 -2
  210. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +3 -3
  211. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +1 -1
  212. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +21 -21
  213. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +1 -1
  214. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +59 -53
  215. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +2 -2
  216. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +1 -1
  217. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +6 -6
  218. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +2 -2
  219. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +2 -2
  220. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -10
  221. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +17 -6
  222. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +38 -14
  223. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +5 -13
  224. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +1 -1
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +5 -3
  226. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +19 -0
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +20 -2
  228. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +1 -1
  229. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +35 -12
  230. data/lib/frameworks/sproutcore/frameworks/formatters/README +6 -0
  231. data/lib/frameworks/sproutcore/frameworks/formatters/english.lproj/strings.js +174 -0
  232. data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +351 -0
  233. data/lib/frameworks/sproutcore/frameworks/formatters/tests/date_formatter.js +517 -0
  234. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +1 -1
  235. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +345 -138
  236. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +5 -3
  237. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +176 -42
  238. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
  239. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +137 -105
  240. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +2 -2
  241. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +2 -2
  242. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +16 -1
  243. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
  244. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +47 -47
  245. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -3
  246. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +1 -1
  247. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +28 -6
  248. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +1 -1
  249. data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +0 -5
  250. data/lib/frameworks/sproutcore/frameworks/foundation/resources/bootstrap.rhtml +34 -19
  251. data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +0 -2
  252. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +1 -5
  253. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +8 -9
  254. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -2
  255. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +179 -47
  256. data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +34 -1
  257. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
  258. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +26 -12
  259. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +7 -7
  260. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +12 -4
  261. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_metric_optimization.js +202 -0
  262. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +77 -8
  263. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +1 -0
  264. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +2 -2
  265. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +4 -3
  266. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +4 -2
  267. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +2 -2
  268. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +4 -2
  269. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +4 -2
  270. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +2 -2
  271. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -8
  272. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +163 -149
  273. data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
  274. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
  275. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
  276. data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
  277. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +3 -3
  278. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +16 -43
  279. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -3
  280. data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +67 -54
  281. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -38
  282. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +285 -242
  283. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +13 -13
  284. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +19 -22
  285. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +9 -3
  286. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +231 -186
  287. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +145 -143
  288. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +156 -154
  289. data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +5 -5
  290. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +3 -3
  291. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js.orig +540 -0
  292. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +2 -2
  293. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -8
  294. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +5 -5
  295. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +12 -0
  296. data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +2 -2
  297. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -1
  298. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +1 -1
  299. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +7 -7
  300. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +98 -32
  301. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +7 -2
  302. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +14 -3
  303. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +98 -13
  304. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +8 -14
  305. data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +1 -1
  306. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +2 -2
  307. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +23 -6
  308. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +69 -18
  309. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +57 -31
  310. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +189 -14
  311. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +82 -22
  312. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +20 -0
  313. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +125 -4
  314. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +1 -1
  315. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +2 -2
  316. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +37 -0
  317. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +2 -2
  318. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +16 -0
  319. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +75 -4
  320. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +41 -0
  321. data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart_delegate.js +113 -0
  322. data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +312 -0
  323. data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +18 -22
  324. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +508 -131
  325. data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +78 -0
  326. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +265 -44
  327. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +16 -0
  328. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +11 -3
  329. data/lib/frameworks/sproutcore/frameworks/statechart/tests/private/state_path_matcher.js +116 -0
  330. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/add_substate.js +108 -0
  331. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/with_concurrent.js +179 -0
  332. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/without_concurrent.js +74 -0
  333. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_state.js +141 -0
  334. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_substate.js +340 -0
  335. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/route_triggered.js +161 -0
  336. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/try_to_handle_event.js +288 -0
  337. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +5 -33
  338. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +213 -0
  339. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +212 -0
  340. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +8 -0
  341. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{state/namespacing.js → statechart/methods/get_state.js} +3 -41
  342. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/{invoke_state_method.js → methods/invoke_state_method.js} +1 -1
  343. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{event_handling/advanced → statechart}/respond_to_event.js +1 -1
  344. data/lib/frameworks/sproutcore/frameworks/statechart/tests/system/state_route_handler_context/methods/retry.js +64 -0
  345. data/lib/frameworks/sproutcore/frameworks/table/core.js +2 -0
  346. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/controls/button.js +0 -1
  347. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars.js +29 -5
  348. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/bind.js +4 -3
  349. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/collection.js +0 -0
  350. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/localization.js +0 -0
  351. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/view.js +0 -0
  352. data/lib/frameworks/sproutcore/frameworks/{handlebars → template_view}/handlebars.js +493 -357
  353. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/checkbox_support.js +0 -0
  354. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/text_field_support.js +13 -2
  355. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/panes/template.js +0 -0
  356. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/controls/button.js +0 -0
  357. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/checkbox_support.js +0 -0
  358. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/text_field_support.js +0 -0
  359. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/panes/template.js +0 -0
  360. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/collection.js +39 -14
  361. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/core.js +0 -0
  362. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/handlebars.js +57 -6
  363. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/bindable_span.js +21 -6
  364. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template.js +9 -3
  365. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template_collection.js +55 -26
  366. data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
  367. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +122 -122
  368. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -2
  369. data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +4 -4
  370. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +1 -1
  371. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +0 -1
  372. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +4 -4
  373. data/lib/frameworks/sproutcore/lib/index.rhtml +55 -32
  374. data/lib/frameworks/sproutcore/license.js +2 -4
  375. data/lib/frameworks/sproutcore/themes/ace/resources/body.css +5 -1
  376. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +2 -2
  377. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +21 -13
  378. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +17 -10
  379. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +4 -3
  380. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +20 -12
  381. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +16 -8
  382. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/jumbo/button.css +17 -0
  383. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/small/button.css +17 -0
  384. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +2 -2
  385. data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +2 -2
  386. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +5 -3
  387. data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +1 -1
  388. data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/toolbar.css +1 -1
  389. data/lib/gen/app/USAGE +17 -4
  390. data/lib/gen/language/Buildfile +4 -4
  391. data/lib/gen/language/USAGE +4 -4
  392. data/lib/gen/page/templates/pages/@target_name@/Buildfile +7 -7
  393. data/lib/gen/{html_app → statechart_app}/Buildfile +0 -0
  394. data/lib/gen/{html_app → statechart_app}/README +0 -0
  395. data/lib/gen/statechart_app/USAGE +21 -0
  396. data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +9 -0
  397. data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +24 -0
  398. data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +26 -0
  399. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/_theme.css +18 -0
  400. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
  401. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +21 -0
  402. data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +8 -0
  403. data/lib/gen/statechart_app/templates/apps/@target_name@/states/ready_state.js +12 -0
  404. data/lib/gen/statechart_app/templates/apps/@target_name@/theme.js +24 -0
  405. data/lib/sproutcore/builders.rb +1 -0
  406. data/lib/sproutcore/builders/base.rb +19 -1
  407. data/lib/sproutcore/builders/chance_file.rb +6 -1
  408. data/lib/sproutcore/builders/handlebars.rb +1 -9
  409. data/lib/sproutcore/builders/javascript.rb +1 -10
  410. data/lib/sproutcore/builders/json.rb +25 -0
  411. data/lib/sproutcore/builders/less.rb +1 -1
  412. data/lib/sproutcore/builders/sass.rb +1 -1
  413. data/lib/sproutcore/builders/stylesheet.rb +1 -9
  414. data/lib/sproutcore/helpers/html5_manifest.rb +1 -1
  415. data/lib/sproutcore/helpers/static_helper.rb +42 -0
  416. data/lib/sproutcore/rack/proxy.rb +21 -3
  417. data/lib/sproutcore/rack/service.rb +3 -2
  418. data/lib/sproutcore/tools.rb +18 -25
  419. data/lib/sproutcore/tools/gen.rb +10 -3
  420. data/lib/sproutcore/tools/init.rb +11 -10
  421. data/spec/buildtasks/manifest/prepare_build_tasks/json_spec.rb +62 -0
  422. data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -1
  423. data/spec/fixtures/builder_tests/apps/json_test/sc_static.json +2 -0
  424. data/spec/lib/builders/json_spec.rb +53 -0
  425. data/sproutcore.gemspec +2 -2
  426. data/vendor/chance/lib/chance/parser.rb +1 -1
  427. metadata +222 -177
  428. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
  429. data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
  430. data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
  431. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +0 -69
  432. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
  433. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
  434. data/lib/frameworks/sproutcore/frameworks/mini/license.js +0 -30
  435. data/lib/gen/html_app/USAGE +0 -15
  436. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +0 -11
  437. data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
  438. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -6
  439. data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +0 -1
  440. data/lib/gen/html_project/Buildfile +0 -45
  441. data/lib/gen/html_project/INIT +0 -3
  442. data/lib/gen/html_project/README +0 -1
  443. data/lib/gen/html_project/USAGE +0 -2
  444. data/lib/gen/html_project/templates/@filename@/Buildfile +0 -5
  445. data/lib/gen/html_project/templates/@filename@/README +0 -4
@@ -103,7 +103,7 @@ CoreTest.equiv = function () {
103
103
  "regexp": function (b, a) {
104
104
  return hoozit(b) === "regexp" &&
105
105
  a.source === b.source && // the regex itself
106
- a.global === b.global && // and its modifers (gmi) ...
106
+ a.global === b.global && // and its modifiers (gmi) ...
107
107
  a.ignoreCase === b.ignoreCase &&
108
108
  a.multiline === b.multiline;
109
109
  },
@@ -13,46 +13,46 @@ var QUNIT_BREAK_ON_TEST_FAIL = false;
13
13
 
14
14
  A test plan contains a set of functions that will be executed in order. The
15
15
  results will be recorded into a results hash as well as calling a delegate.
16
-
16
+
17
17
  When you define tests and modules, you are adding to the active test plan.
18
18
  The test plan is then run when the page has finished loading.
19
-
19
+
20
20
  Normally you will not need to work with a test plan directly, though if you
21
21
  are writing a test runner application that needs to monitor test progress
22
22
  you may write a delegate to talk to the test plan.
23
23
 
24
24
  The CoreTest.Plan.fn hash contains functions that will be made global via
25
- wrapper methods. The methods must accept a Plan object as their first
25
+ wrapper methods. The methods must accept a Plan object as their first
26
26
  parameter.
27
-
28
- ## Results
29
-
30
- The results hash contains a summary of the results of running the test
27
+
28
+ ## Results
29
+
30
+ The results hash contains a summary of the results of running the test
31
31
  plan. It includes the following properties:
32
-
32
+
33
33
  - *assertions* -- the total number of assertions
34
34
  - *tests* -- the total number of tests
35
35
  - *passed* -- number of assertions that passed
36
36
  - *failed* -- number of assertions that failed
37
37
  - *errors* -- number of assertions with errors
38
38
  - *warnings* -- number of assertions with warnings
39
-
39
+
40
40
  You can also consult the log property, which contains an array of hashes -
41
41
  one for each assertion - with the following properties:
42
-
42
+
43
43
  - *module* -- module descriptions
44
44
  - *test* -- test description
45
45
  - *message* -- assertion description
46
46
  - *result* -- CoreTest.OK, CoreTest.FAILED, CoreTest.ERROR, CoreTest.WARN
47
-
47
+
48
48
  @since SproutCore 1.0
49
49
  */
50
50
  CoreTest.Plan = {
51
-
51
+
52
52
  /**
53
- Define a new test plan instance. Optionally pass attributes to apply
53
+ Define a new test plan instance. Optionally pass attributes to apply
54
54
  to the new plan object. Usually you will call this without arguments.
55
-
55
+
56
56
  @param {Hash} attrs plan arguments
57
57
  @returns {CoreTest.Plan} new instance/subclass
58
58
  */
@@ -66,38 +66,38 @@ CoreTest.Plan = {
66
66
  },
67
67
 
68
68
  // ..........................................................
69
- // RUNNING
70
- //
71
-
69
+ // RUNNING
70
+ //
71
+
72
72
  /** @private - array of functions to execute in order. */
73
73
  queue: [],
74
74
 
75
75
  /**
76
76
  If true then the test plan is currently running and items in the queue
77
77
  will execute in order.
78
-
78
+
79
79
  @type {Boolean}
80
80
  */
81
81
  isRunning: false,
82
82
 
83
83
  /**
84
84
  Primitive used to add callbacks to the test plan queue. Usually you will
85
- not want to call this method directly but instead use the module() or
85
+ not want to call this method directly but instead use the module() or
86
86
  test() methods.
87
-
87
+
88
88
  @returns {CoreTest.Plan} receiver
89
89
  */
90
90
  synchronize: function synchronize(callback) {
91
91
  this.queue.push(callback);
92
- if (this.isRunning) this.process(); // run queue
92
+ if (this.isRunning) this.process(); // run queue
93
93
  return this;
94
94
  },
95
-
95
+
96
96
  /**
97
97
  Processes items in the queue as long as isRunning remained true. When
98
98
  no further items are left in the queue, calls finish(). Usually you will
99
99
  not call this method directly. Instead call run().
100
-
100
+
101
101
  @returns {CoreTest.Plan} receiver
102
102
  */
103
103
  process: function process() {
@@ -106,35 +106,35 @@ CoreTest.Plan = {
106
106
  }
107
107
  return this ;
108
108
  },
109
-
109
+
110
110
  /**
111
- Begins running the test plan after a slight delay to avoid interupting
112
- any current callbacks.
113
-
111
+ Begins running the test plan after a slight delay to avoid interrupting
112
+ any current callbacks.
113
+
114
114
  @returns {CoreTest.Plan} receiver
115
115
  */
116
116
  start: function() {
117
117
  var plan = this ;
118
118
  setTimeout(function() {
119
119
  if (plan.timeout) clearTimeout(plan.timeout);
120
- plan.timeout = null;
120
+ plan.timeout = null;
121
121
  plan.isRunning = true;
122
122
  plan.process();
123
123
  }, 13);
124
124
  return this ;
125
125
  },
126
-
126
+
127
127
  /**
128
128
  Stops the test plan from running any further. If you pass a timeout,
129
- it will raise an exception if the test plan does not begin executing
130
- with the alotted timeout.
131
-
129
+ it will raise an exception if the test plan does not begin executing
130
+ with the allotted timeout.
131
+
132
132
  @param {Number} timeout optional timeout in msec
133
133
  @returns {CoreTest.Plan} receiver
134
134
  */
135
135
  stop: function(timeout) {
136
136
  this.isRunning = false ;
137
-
137
+
138
138
  if (this.timeout) clearTimeout(this.timeout);
139
139
  if (timeout) {
140
140
  var plan = this;
@@ -144,7 +144,7 @@ CoreTest.Plan = {
144
144
  } else this.timeout = null ;
145
145
  return this ;
146
146
  },
147
-
147
+
148
148
  /**
149
149
  Force the test plan to take a break. Avoids slow script warnings. This
150
150
  is called automatically after each test completes.
@@ -153,15 +153,15 @@ CoreTest.Plan = {
153
153
  if (this.isRunning) {
154
154
  var del = this.delegate;
155
155
  if (del && del.planDidPause) del.planDidPause(this);
156
-
156
+
157
157
  this.isRunning = false ;
158
158
  this.start();
159
159
  }
160
160
  return this ;
161
161
  },
162
-
162
+
163
163
  /**
164
- Initiates running the tests for the first time. This will add an item
164
+ Initiates running the tests for the first time. This will add an item
165
165
  to the queue to call finish() on the plan when the run completes.
166
166
 
167
167
  @returns {CoreTest.Plan} receiver
@@ -169,7 +169,7 @@ CoreTest.Plan = {
169
169
  run: function() {
170
170
  this.isRunning = true;
171
171
  this.prepare();
172
-
172
+
173
173
  // initialize new results
174
174
  this.results = {
175
175
  start: new Date().getTime(),
@@ -186,14 +186,14 @@ CoreTest.Plan = {
186
186
 
187
187
  // add item to queue to finish running the test plan when finished.
188
188
  this.begin().synchronize(this.finish).process();
189
-
189
+
190
190
  return this ;
191
191
  },
192
192
 
193
193
  /**
194
194
  Called when the test plan begins running. This method will notify the
195
195
  delegate. You will not normally call this method directly.
196
-
196
+
197
197
  @returns {CoreTest.Plan} receiver
198
198
  */
199
199
  begin: function() {
@@ -201,7 +201,7 @@ CoreTest.Plan = {
201
201
  if (del && del.planDidBegin) del.planDidBegin(this);
202
202
  return this ;
203
203
  },
204
-
204
+
205
205
  /**
206
206
  When the test plan finishes running, this method will be called to notify
207
207
  the delegate that the plan as finished.
@@ -211,10 +211,10 @@ CoreTest.Plan = {
211
211
  finish: function() {
212
212
  var r = this.results,
213
213
  del = this.delegate;
214
-
214
+
215
215
  r.finish = new Date().getTime();
216
216
  r.runtime = r.finish - r.start;
217
-
217
+
218
218
  if (del && del.planDidFinish) del.planDidFinish(this, r);
219
219
  return this ;
220
220
  },
@@ -229,25 +229,25 @@ CoreTest.Plan = {
229
229
  if (typeof SC !== 'undefined' && SC.filename) {
230
230
  desc = SC.filename.replace(/^.+?\/current\/tests\//,'') + '\n' + desc;
231
231
  }
232
-
232
+
233
233
  this.currentModule = desc;
234
234
 
235
235
  if (!lifecycle) lifecycle = {};
236
236
  this.setup(lifecycle.setup).teardown(lifecycle.teardown);
237
-
237
+
238
238
  return this ;
239
239
  },
240
-
240
+
241
241
  /**
242
242
  Sets the current setup method.
243
-
243
+
244
244
  @returns {CoreTest.Plan} receiver
245
245
  */
246
246
  setup: function(func) {
247
247
  this.currentSetup = func || CoreTest.K;
248
248
  return this;
249
249
  },
250
-
250
+
251
251
  /**
252
252
  Sets the current teardown method
253
253
 
@@ -257,14 +257,14 @@ CoreTest.Plan = {
257
257
  this.currentTeardown = func || CoreTest.K ;
258
258
  return this;
259
259
  },
260
-
260
+
261
261
  now: function() { return new Date().getTime(); },
262
-
262
+
263
263
  /**
264
264
  Generates a unit test, adding it to the test plan.
265
265
  */
266
266
  test: function test(desc, func) {
267
-
267
+
268
268
  if (!this.enabled(this.currentModule, desc)) return this; // skip
269
269
 
270
270
  // base prototype describing test
@@ -274,14 +274,14 @@ CoreTest.Plan = {
274
274
  expected: 0,
275
275
  assertions: []
276
276
  };
277
-
277
+
278
278
  var msg;
279
279
  var name = desc ;
280
280
  if (this.currentModule) name = this.currentModule + " module: " + name;
281
-
281
+
282
282
  var setup = this.currentSetup || CoreTest.K;
283
283
  var teardown = this.currentTeardown || CoreTest.K;
284
-
284
+
285
285
  // add setup to queue
286
286
  this.synchronize(function() {
287
287
 
@@ -291,7 +291,7 @@ CoreTest.Plan = {
291
291
  mainEl = null;
292
292
 
293
293
  this.working = working;
294
-
294
+
295
295
  try {
296
296
  working.total_begin = working.setup_begin = this.now();
297
297
  setup.call(this);
@@ -301,7 +301,7 @@ CoreTest.Plan = {
301
301
  this.error("Setup exception on " + name + ": " + msg);
302
302
  }
303
303
  });
304
-
304
+
305
305
  // now actually invoke test
306
306
  this.synchronize(function() {
307
307
  if (!func) {
@@ -318,7 +318,7 @@ CoreTest.Plan = {
318
318
  }
319
319
  }
320
320
  });
321
-
321
+
322
322
  // cleanup
323
323
  this.synchronize(function() {
324
324
  try {
@@ -330,10 +330,10 @@ CoreTest.Plan = {
330
330
  this.error("Teardown exception on " + name + ": " + msg);
331
331
  }
332
332
  });
333
-
333
+
334
334
  // finally, reset and report result
335
335
  this.synchronize(function() {
336
-
336
+
337
337
  if (this.reset) {
338
338
  try {
339
339
  this.working.reset_begin = this.now();
@@ -344,16 +344,16 @@ CoreTest.Plan = {
344
344
  this.error("Reset exception on " + name + ": " + msg) ;
345
345
  }
346
346
  }
347
-
347
+
348
348
  // check for expected assertions
349
349
  var w = this.working,
350
350
  exp = w.expected,
351
351
  len = w.assertions.length;
352
-
352
+
353
353
  if (exp && exp !== len) {
354
354
  this.fail("Expected " + exp + " assertions, but " + len + " were run");
355
355
  }
356
-
356
+
357
357
  // finally, record result
358
358
  this.working = null;
359
359
  this.record(w.module, w.test, w.assertions, w);
@@ -367,7 +367,7 @@ CoreTest.Plan = {
367
367
  this.pauseTime = now ;
368
368
  }
369
369
  }
370
-
370
+
371
371
  });
372
372
  },
373
373
 
@@ -385,9 +385,9 @@ CoreTest.Plan = {
385
385
  }
386
386
  begin = null;
387
387
  },
388
-
388
+
389
389
  /**
390
- Converts the passed string into HTML and then appends it to the main body
390
+ Converts the passed string into HTML and then appends it to the main body
391
391
  element. This is a useful way to automatically load fixture HTML into the
392
392
  main page.
393
393
  */
@@ -400,10 +400,10 @@ CoreTest.Plan = {
400
400
  // now append new content
401
401
  html.each(function() { body.appendChild(this); });
402
402
  },
403
-
403
+
404
404
  /**
405
405
  Records the results of a test. This will add the results to the log
406
- and notify the delegate. The passed assertions array should contain
406
+ and notify the delegate. The passed assertions array should contain
407
407
  hashes with the result and message.
408
408
  */
409
409
  record: function(module, test, assertions, timings) {
@@ -411,7 +411,7 @@ CoreTest.Plan = {
411
411
  len = assertions.length,
412
412
  del = this.delegate,
413
413
  idx, cur;
414
-
414
+
415
415
  r.tests++;
416
416
  for(idx=0;idx<len;idx++) {
417
417
  cur = assertions[idx];
@@ -422,15 +422,15 @@ CoreTest.Plan = {
422
422
  r[cur.result]++;
423
423
  r.assertions.push(cur);
424
424
  }
425
-
425
+
426
426
  if (del && del.planDidRecord) {
427
427
  del.planDidRecord(this, module, test, assertions, timings) ;
428
428
  }
429
-
429
+
430
430
  },
431
-
431
+
432
432
  /**
433
- Universal method can be called to reset the global state of the
433
+ Universal method can be called to reset the global state of the
434
434
  application for each test. The default implementation will reset any
435
435
  saved fixture.
436
436
  */
@@ -439,24 +439,24 @@ CoreTest.Plan = {
439
439
  var mainEl = document.getElementById('main');
440
440
  if (mainEl) mainEl.innerHTML = this.fixture;
441
441
  mainEl = null;
442
- }
442
+ }
443
443
  return this ;
444
444
  },
445
-
445
+
446
446
  /**
447
- Can be used to decide if a particular test should be enabled or not.
447
+ Can be used to decide if a particular test should be enabled or not.
448
448
  Current implementation allows a test to run.
449
-
449
+
450
450
  @returns {Boolean}
451
451
  */
452
452
  enabled: function(moduleName, testName) {
453
453
  return true;
454
454
  },
455
-
455
+
456
456
  // ..........................................................
457
457
  // MATCHERS
458
- //
459
-
458
+ //
459
+
460
460
  /**
461
461
  Called by a matcher to record that a test has passed. Requires a working
462
462
  test property.
@@ -480,7 +480,7 @@ CoreTest.Plan = {
480
480
  },
481
481
 
482
482
  /**
483
- Called by a matcher to record that a test issued a warning. Requires a
483
+ Called by a matcher to record that a test issued a warning. Requires a
484
484
  working test property.
485
485
  */
486
486
  warn: function(msg) {
@@ -491,22 +491,22 @@ CoreTest.Plan = {
491
491
  },
492
492
 
493
493
  /**
494
- Called by a matcher to record that a test had an error. Requires a
494
+ Called by a matcher to record that a test had an error. Requires a
495
495
  working test property.
496
496
  */
497
497
  error: function(msg, e) {
498
498
  var w = this.working ;
499
499
  if (!w) throw "error("+msg+") called outside of a working test";
500
-
500
+
501
501
  if(e && typeof console != "undefined" && console.error && console.warn ) {
502
502
  console.error(msg);
503
503
  console.error(e);
504
504
  }
505
-
505
+
506
506
  w.assertions.push({ message: msg, result: CoreTest.ERROR });
507
507
  return this ;
508
508
  },
509
-
509
+
510
510
  /**
511
511
  Any methods added to this hash will be made global just before the first
512
512
  test is run. You can add new methods to this hash to use them in unit
@@ -549,9 +549,9 @@ CoreTest.Plan = {
549
549
  /**
550
550
  Primitive performs a basic equality test on the passed values. Prints
551
551
  out both actual and expected values.
552
-
552
+
553
553
  Preferred to ok(actual === expected, message);
554
-
554
+
555
555
  @param {Object} actual tested object
556
556
  @param {Object} expected expected value
557
557
  @param {String} msg optional message
@@ -561,13 +561,13 @@ CoreTest.Plan = {
561
561
  if (msg === undefined) msg = null; // make sure ok logs properly
562
562
  return this.ok(actual == expected, actual, expected, msg);
563
563
  },
564
-
564
+
565
565
  /**
566
566
  Expects the passed function call to throw an exception of the given
567
567
  type. If you pass null or Error for the expected exception, this will
568
- pass if any error is received. If you pass a string, this will check
568
+ pass if any error is received. If you pass a string, this will check
569
569
  message property of the exception.
570
-
570
+
571
571
  @param {Function} callback the function to execute
572
572
  @param {Error} expected optional, the expected error
573
573
  @param {String} a description
@@ -575,13 +575,13 @@ CoreTest.Plan = {
575
575
  */
576
576
  should_throw: function should_throw(callback, expected, msg) {
577
577
  var actual = false ;
578
-
578
+
579
579
  try {
580
580
  callback();
581
581
  } catch(e) {
582
- actual = (typeof expected === "string") ? e.message : e;
582
+ actual = (typeof expected === "string") ? e.message : e;
583
583
  }
584
-
584
+
585
585
  if (expected===false) {
586
586
  ok(actual===false, CoreTest.fmt("%@ expected no exception, actual %@", msg, actual));
587
587
  } else if (expected===Error || expected===null || expected===true) {
@@ -590,9 +590,9 @@ CoreTest.Plan = {
590
590
  equals(actual, expected, msg);
591
591
  }
592
592
  },
593
-
593
+
594
594
  /**
595
- Specify the number of expected assertions to gaurantee that a failed
595
+ Specify the number of expected assertions to gaurantee that a failed
596
596
  test (no assertions are run at all) don't slip through
597
597
 
598
598
  @returns {CoreTest.Plan} receiver
@@ -600,13 +600,13 @@ CoreTest.Plan = {
600
600
  expect: function expect(asserts) {
601
601
  this.working.expected = asserts;
602
602
  },
603
-
603
+
604
604
  /**
605
605
  Verifies that two objects are actually the same. This method will do
606
606
  a deep compare instead of a simple equivalence test. You should use
607
- this instead of equals() when you expect the two object to be different
607
+ this instead of equals() when you expect the two object to be different
608
608
  instances but to have the same content.
609
-
609
+
610
610
  @param {Object} value tested object
611
611
  @param {Object} actual expected value
612
612
  @param {String} msg optional message
@@ -616,66 +616,66 @@ CoreTest.Plan = {
616
616
  if (msg === undefined) msg = null ; // make sure ok logs properly
617
617
  return this.ok(CoreTest.equiv(actual, expected), actual, expected, msg);
618
618
  },
619
-
619
+
620
620
  /**
621
- Stops the current tests from running. An optional timeout will
621
+ Stops the current tests from running. An optional timeout will
622
622
  automatically fail the test if it does not restart within the specified
623
623
  period of time.
624
-
624
+
625
625
  @param {Number} timeout timeout in msec
626
626
  @returns {CoreTest.Plan} receiver
627
627
  */
628
628
  stop: function(timeout) {
629
629
  return this.stop(timeout);
630
630
  },
631
-
631
+
632
632
  /**
633
633
  Restarts tests running. Use this to begin tests after you stop tests.
634
-
634
+
635
635
  @returns {CoreTest.Plan} receiver
636
636
  */
637
637
  start: function() {
638
638
  return this.start();
639
639
  },
640
-
641
- reset: function() {
642
- return this.reset();
640
+
641
+ reset: function() {
642
+ return this.reset();
643
643
  }
644
-
644
+
645
645
  },
646
-
646
+
647
647
  /**
648
648
  Exports the comparison functions into the global namespace. This will
649
- allow you to call these methods from within testing functions. This
649
+ allow you to call these methods from within testing functions. This
650
650
  method is called automatically just before the first test is run.
651
-
651
+
652
652
  @returns {CoreTest.Plan} receiver
653
653
  */
654
654
  prepare: function() {
655
655
  var fn = this.fn,
656
656
  plan = this,
657
657
  key, func;
658
-
658
+
659
659
  for(key in fn) {
660
660
  if (!fn.hasOwnProperty(key)) continue ;
661
661
  func = fn[key];
662
662
  if (typeof func !== "function") continue ;
663
663
  window[key] = this._bind(func);
664
- if (!plan[key]) plan[key] = func;
664
+ if (!plan[key]) plan[key] = func;
665
665
  }
666
666
  return this ;
667
667
  },
668
-
668
+
669
669
  _bind: function(func) {
670
670
  var plan = this;
671
671
  return function() { return func.apply(plan, arguments); };
672
672
  }
673
-
673
+
674
674
  };
675
675
 
676
676
  // ..........................................................
677
677
  // EXPORT BASIC API
678
- //
678
+ //
679
679
 
680
680
  CoreTest.defaultPlan = function defaultPlan() {
681
681
  var plan = CoreTest.plan;
@@ -689,20 +689,20 @@ CoreTest.defaultPlan = function defaultPlan() {
689
689
  // create a module. If this is the first time, create the test plan and
690
690
  // runner. This will cause the test to run on page load
691
691
  window.module = function(desc, l) {
692
- CoreTest.defaultPlan().module(desc, l);
693
- };
692
+ CoreTest.defaultPlan().module(desc, l);
693
+ };
694
694
 
695
695
  // create a test. If this is the first time, create the test plan and
696
696
  // runner. This will cause the test to run on page load
697
697
  window.test = function(desc, func) {
698
- CoreTest.defaultPlan().test(desc, func);
699
- };
698
+ CoreTest.defaultPlan().test(desc, func);
699
+ };
700
700
 
701
701
  // reset htmlbody for unit testing
702
702
  window.clearHtmlbody = function() {
703
- CoreTest.defaultPlan().clearHtmlbody();
704
- };
703
+ CoreTest.defaultPlan().clearHtmlbody();
704
+ };
705
705
 
706
706
  window.htmlbody = function(string) {
707
- CoreTest.defaultPlan().htmlbody(string);
708
- };
707
+ CoreTest.defaultPlan().htmlbody(string);
708
+ };