sproutcore 1.5.0.pre.3 → 1.5.0.pre.4

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 (308) hide show
  1. data/.rspec +1 -0
  2. data/CHANGELOG +42 -0
  3. data/README.txt +25 -0
  4. data/VERSION.yml +1 -1
  5. data/bin/sc-build +1 -1
  6. data/bin/sc-build-number +1 -1
  7. data/bin/sc-docs +1 -1
  8. data/bin/sc-gen +1 -1
  9. data/bin/sc-init +1 -1
  10. data/bin/sc-manifest +1 -1
  11. data/bin/sc-server +1 -1
  12. data/bin/sproutcore +1 -1
  13. data/lib/buildtasks/build.rake +5 -0
  14. data/lib/buildtasks/manifest.rake +20 -1
  15. data/lib/frameworks/sproutcore/Buildfile +12 -9
  16. data/lib/frameworks/sproutcore/CHANGELOG.md +48 -0
  17. data/lib/frameworks/sproutcore/apps/greenhouse/README +2 -9
  18. data/lib/frameworks/sproutcore/apps/greenhouse/TODO +11 -27
  19. data/lib/frameworks/sproutcore/apps/greenhouse/controllers/library.js +3 -10
  20. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/main-page.css +4 -31
  21. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/dialogs.js +5 -4
  22. data/lib/frameworks/sproutcore/apps/greenhouse/models/dir.js +3 -3
  23. data/lib/frameworks/sproutcore/apps/greenhouse/models/file.js +2 -2
  24. data/lib/frameworks/sproutcore/apps/greenhouse/states/main.js +31 -14
  25. data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +2 -1
  26. data/lib/frameworks/sproutcore/apps/greenhouse/states/ready.js +27 -1
  27. data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/list_item.js +1 -0
  28. data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/plist_item.js +20 -0
  29. data/lib/frameworks/sproutcore/apps/greenhouse/theme.js +25 -0
  30. data/lib/frameworks/sproutcore/apps/greenhouse/views/plist_item.js +161 -24
  31. data/lib/frameworks/sproutcore/apps/greenhouse/views/tear_off_picker.js +1 -1
  32. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +37 -25
  33. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +135 -26
  34. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/array.js +0 -0
  35. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/controller.js +0 -0
  36. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/controllers/object.js +1 -1
  37. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/core.js +0 -0
  38. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/object.js +0 -0
  39. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/ext/run_loop.js +1 -0
  40. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/delegate_support.js +0 -0
  41. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/responder_context.js +0 -0
  42. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/selection_support.js +0 -0
  43. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/mixins/string.js +0 -0
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +68 -0
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +108 -0
  46. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/main.js +2 -2
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +27 -0
  48. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/panes/pane.js +215 -505
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +24 -0
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +11 -0
  51. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/observable_protocol.js +0 -0
  52. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/protocols/sparse_array_delegate.js +0 -0
  53. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/core.css +0 -0
  54. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/resources/view.css +0 -0
  55. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/application.js +0 -0
  56. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/browser.js +1 -0
  57. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/builder.js +0 -0
  58. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/core_query.js +1 -1
  59. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/cursor.js +0 -0
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +210 -0
  61. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/event.js +5 -5
  62. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/json.js +0 -0
  63. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/locale.js +0 -0
  64. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/page.js +0 -0
  65. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/platform.js +31 -5
  66. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/ready.js +1 -1
  67. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/render_context.js +0 -0
  68. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/responder.js +0 -0
  69. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/root_responder.js +83 -110
  70. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/selection_set.js +7 -4
  71. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/sparse_array.js +0 -0
  72. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/theme.js +0 -0
  73. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/timer.js +0 -0
  74. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/system/utils/rect.js +0 -0
  75. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +151 -0
  76. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/array_case.js +0 -0
  77. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/enum_case.js +0 -0
  78. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/null_case.js +0 -0
  79. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/selection_support.js +26 -0
  80. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/array/single_case.js +0 -0
  81. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/empty_case.js +0 -0
  82. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/multiple_case.js +0 -0
  83. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_case.js +0 -0
  84. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/controllers/object/single_enumerable_case.js +0 -0
  85. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/responder_context.js +0 -0
  86. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/mixins/string.js +0 -0
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +14 -0
  88. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/builder.js +0 -0
  89. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/core_query/within.js +0 -0
  90. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/json.js +0 -0
  91. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/locale.js +0 -0
  92. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/begin.js +0 -0
  93. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/element.js +0 -0
  94. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/end.js +0 -0
  95. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/get.js +0 -0
  96. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_attr.js +0 -0
  97. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_basic.js +0 -0
  98. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_className.js +0 -0
  99. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/helpers_style.js +0 -0
  100. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/init.js +0 -0
  101. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/join.js +0 -0
  102. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/push_text.js +0 -0
  103. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/tag.js +0 -0
  104. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/render_context/update.js +0 -0
  105. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeKeyPane.js +0 -0
  106. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMainPane.js +0 -0
  107. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/makeMenuPane.js +0 -0
  108. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/root_responder.js +0 -0
  109. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/root_responder/targetForAction.js +0 -0
  110. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/add.js +0 -0
  111. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/copy.js +0 -0
  112. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/indexSetForSource.js +0 -0
  113. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/isEqual.js +0 -0
  114. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/selection_set/remove.js +0 -0
  115. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/sparse_array.js +0 -0
  116. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/theme.js +0 -0
  117. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invalidate.js +0 -0
  118. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/invokeLater.js +0 -0
  119. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/isPaused.js +0 -0
  120. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/performAction.js +0 -0
  121. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/timer/schedule.js +0 -0
  122. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/normalizeURL.js +0 -0
  123. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +268 -0
  124. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/system/utils/rect.js +0 -0
  125. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +43 -0
  126. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/append_remove.js +107 -18
  127. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +20 -0
  128. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/firstResponder.js +0 -0
  129. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/keyPane.js +0 -0
  130. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/layout.js +0 -0
  131. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/pane/sendEvent.js +0 -0
  132. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/checkbox_support.js +32 -0
  133. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/text_field_support.js +73 -0
  134. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/collection.js +65 -0
  135. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/core.js +67 -0
  136. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/handlebars.js +295 -0
  137. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/animation.js +19 -18
  138. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build.js +0 -0
  139. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/build_children.js +0 -0
  140. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/clippingFrame.js +0 -0
  141. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertFrames.js +0 -0
  142. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/convertLayouts.js +0 -0
  143. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createChildViews.js +18 -15
  144. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/createLayer.js +0 -0
  145. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/destroyLayer.js +0 -0
  146. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/didAppendToDocument.js +11 -8
  147. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/findLayerInParentLayer.js +0 -0
  148. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/init.js +0 -0
  149. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/insertBefore.js +0 -0
  150. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisible.js +28 -0
  151. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/isVisibleInWindow.js +0 -0
  152. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +22 -0
  153. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layer.js +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/layoutChildViews.js +0 -0
  155. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +180 -0
  156. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +640 -0
  157. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/parentViewDidChange.js +0 -0
  158. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/prepareContext.js +0 -0
  159. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/removeChild.js +0 -0
  160. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +125 -0
  161. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/render_delegate_support.js +0 -0
  162. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/replaceChild.js +0 -0
  163. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +21 -0
  164. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/theme.js +0 -0
  165. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayer.js +0 -0
  166. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/updateLayerLocation.js +0 -0
  167. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/view.js +0 -0
  168. data/lib/frameworks/sproutcore/frameworks/{amber → core_foundation}/tests/views/view/viewDidResize.js +0 -0
  169. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/checkbox_support.js +20 -0
  170. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +99 -0
  171. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/text_field_support.js +35 -0
  172. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template.js +77 -0
  173. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +187 -0
  174. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/base.js +1 -0
  175. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +41 -0
  176. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +57 -0
  177. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +223 -0
  178. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +1150 -0
  179. data/lib/frameworks/sproutcore/frameworks/{amber/views → core_foundation/views/view}/layout_style.js +93 -1
  180. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +489 -0
  181. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +362 -0
  182. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/touch.js +67 -0
  183. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +113 -0
  184. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +1280 -0
  185. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +27 -53
  186. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +13 -19
  187. data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +1 -0
  188. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +183 -71
  189. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -2
  190. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +26 -46
  191. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +25 -4
  192. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +139 -21
  193. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +6 -1
  194. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/cyclical_relationship.js +1 -1
  195. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/{parentless.js → data_store.js} +62 -16
  196. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +51 -17
  197. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +36 -10
  198. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +11 -11
  199. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +8 -8
  200. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +2 -2
  201. data/lib/frameworks/sproutcore/frameworks/{foundation/english.lproj → datetime/resources}/strings.js +1 -0
  202. data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/system/datetime.js +5 -37
  203. data/lib/frameworks/sproutcore/frameworks/{foundation → datetime}/tests/system/datetime.js +1 -0
  204. data/lib/frameworks/sproutcore/frameworks/debug/core.js +1 -1
  205. data/lib/frameworks/sproutcore/frameworks/designer/controllers/designs.js +1 -2
  206. data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +3 -3
  207. data/lib/frameworks/sproutcore/frameworks/designer/designers/view_designer.js +3 -3
  208. data/lib/frameworks/sproutcore/frameworks/designer/views/designer_drop_target.js +9 -3
  209. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +71 -70
  210. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +10 -2
  211. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -19
  212. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +33 -14
  213. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +25 -0
  214. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +1 -1
  215. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +25 -103
  216. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +102 -92
  217. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +22 -25
  218. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +38 -25
  219. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +1 -1
  220. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +1 -1
  221. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +42 -22
  222. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +513 -230
  223. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +0 -2
  224. data/lib/frameworks/sproutcore/frameworks/experimental/README.md +23 -0
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/README.md +11 -0
  226. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +215 -0
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +67 -0
  228. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +34 -0
  229. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/polymorphic_single_attribute.js +183 -0
  230. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +23 -0
  231. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphic/single.js +124 -0
  232. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -2
  233. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +151 -0
  234. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +27 -17
  235. data/lib/frameworks/sproutcore/frameworks/foundation/system/image_queue.js +6 -3
  236. data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +163 -0
  237. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +6 -3
  238. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +1 -0
  239. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +44 -0
  240. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +200 -167
  241. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +1 -1
  242. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +52 -137
  243. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +7 -11
  244. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions.js +138 -0
  245. data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1338 -0
  246. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +32 -26
  247. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +162 -3
  248. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +10 -5
  249. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +123 -3
  250. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +12 -5
  251. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +50 -13
  252. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +163 -333
  253. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +58 -8
  254. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +2 -0
  255. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +9 -6
  256. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +15 -1
  257. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +2 -0
  258. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +31 -0
  259. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +18 -0
  260. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +31 -143
  261. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/concatenated_properties.js +71 -0
  262. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +177 -0
  263. data/lib/frameworks/sproutcore/frameworks/table/views/table.js +5 -4
  264. data/lib/frameworks/sproutcore/frameworks/table/views/table_header.js +5 -3
  265. data/lib/frameworks/sproutcore/themes/ace/resources/button/button.js +8 -2
  266. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +2 -3
  267. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +1 -1
  268. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +1 -1
  269. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +1 -1
  270. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +1 -1
  271. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +2 -2
  272. data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +62 -62
  273. data/lib/gen/html_app/Buildfile +36 -0
  274. data/lib/gen/html_app/README +1 -0
  275. data/lib/gen/html_app/USAGE +15 -0
  276. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +14 -0
  277. data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
  278. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -0
  279. data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +1 -0
  280. data/lib/gen/html_project/Buildfile +45 -0
  281. data/lib/gen/html_project/INIT +3 -0
  282. data/lib/gen/html_project/README +1 -0
  283. data/lib/gen/html_project/USAGE +2 -0
  284. data/lib/gen/html_project/templates/@filename@/Buildfile +8 -0
  285. data/lib/gen/html_project/templates/@filename@/README +7 -0
  286. data/lib/sproutcore/builders/handlebars.rb +30 -0
  287. data/lib/sproutcore/builders.rb +1 -1
  288. data/lib/sproutcore/helpers/static_helper.rb +3 -3
  289. data/lib/sproutcore/tools/init.rb +25 -9
  290. data/spec/buildtasks/manifest/prepare_build_tasks/handlebars_spec.rb +39 -0
  291. data/spec/fixtures/builder_tests/apps/handlebars_test/template.handlebars +5 -0
  292. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/templates/demo.handlebars +4 -0
  293. data/spec/lib/builders/handlebars_spec.rb +29 -0
  294. data/vendor/chance/lib/chance/imagers/data_url.rb +20 -7
  295. data/vendor/chance/lib/chance/instance.rb +4 -1
  296. data/vendor/chance/lib/chance/parser.rb +31 -31
  297. data/vendor/chance/lib/chance/slicing.rb +38 -8
  298. metadata +195 -225
  299. data/lib/frameworks/sproutcore/frameworks/amber/system/device.js +0 -143
  300. data/lib/frameworks/sproutcore/frameworks/amber/system/utils.js +0 -174
  301. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/main_pane.js +0 -31
  302. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/pane/sendTouchEvent.js +0 -267
  303. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutDidChange.js +0 -149
  304. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/layoutStyle.js +0 -602
  305. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/render.js +0 -115
  306. data/lib/frameworks/sproutcore/frameworks/amber/views/base.js +0 -1
  307. data/lib/frameworks/sproutcore/frameworks/amber/views/view.js +0 -4003
  308. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +0 -105
@@ -22,6 +22,34 @@ SC.BENCHMARK_OBJECTS = NO;
22
22
  // definition because SC.Object is copied frequently and we want to keep the
23
23
  // number of class methods to a minimum.
24
24
 
25
+ SC._detect_base = function _detect_base(func, parent, name) {
26
+ return function invoke_superclass_method() {
27
+ var base = parent[name], args;
28
+
29
+ if (!base) {
30
+ throw new Error("No '" + name + "' method was found on the superclass");
31
+ }
32
+
33
+ // NOTE: It is possible to cache the base, so that the first
34
+ // call to sc_super will avoid doing the lookup again. However,
35
+ // since the cost of the extra method dispatch is low and is
36
+ // only incurred on sc_super, but also creates another possible
37
+ // weird edge-case (when a class is enhanced after first used),
38
+ // we'll leave it off for now unless profiling demonstrates that
39
+ // it's a hotspot.
40
+ //if(base && func === base) { func.base = function() {}; }
41
+ //else { func.base = base; }
42
+
43
+ if(func.isEnhancement) {
44
+ args = Array.prototype.slice.call(arguments, 1);
45
+ } else {
46
+ args = arguments;
47
+ }
48
+
49
+ return base.apply(this, args);
50
+ };
51
+ };
52
+
25
53
  /** @private
26
54
  Augments a base object by copying the properties from the extended hash.
27
55
  In addition to simply copying properties, this method also performs a
@@ -36,8 +64,8 @@ SC.BENCHMARK_OBJECTS = NO;
36
64
  @param {Hash} extension
37
65
  @returns {Hash} base hash
38
66
  */
39
- SC._object_extend = function _object_extend(base, ext) {
40
- if (!ext) throw "SC.Object.extend expects a non-null value. Did you forget to 'sc_require' something? Or were you passing a Protocol to extend() as if it were a mixin?";
67
+ SC._object_extend = function _object_extend(base, ext, proto) {
68
+ if (!ext) { throw "SC.Object.extend expects a non-null value. Did you forget to 'sc_require' something? Or were you passing a Protocol to extend() as if it were a mixin?"; }
41
69
 
42
70
  // set _kvo_cloned for later use
43
71
  base._kvo_cloned = null;
@@ -105,7 +133,8 @@ SC._object_extend = function _object_extend(base, ext) {
105
133
  // add super to funcs. Be sure not to set the base of a func to
106
134
  // itself to avoid infinite loops.
107
135
  if (!value.superclass && (value !== (cur=base[key]))) {
108
- value.superclass = value.base = cur || K;
136
+ value.superclass = cur || K;
137
+ value.base = proto ? SC._detect_base(value, proto, key) : cur || K;
109
138
  }
110
139
 
111
140
  // handle regular observers
@@ -147,6 +176,10 @@ SC._object_extend = function _object_extend(base, ext) {
147
176
  }
148
177
  outlets[outlets.length] = key ;
149
178
  }
179
+
180
+ if (value.isEnhancement) {
181
+ value = SC._enhance(base[key], value);
182
+ }
150
183
  }
151
184
 
152
185
  // copy property
@@ -176,6 +209,16 @@ SC._object_extend = function _object_extend(base, ext) {
176
209
  return base ;
177
210
  } ;
178
211
 
212
+ SC._enhance = function(originalFunction, enhancement) {
213
+ return function() {
214
+ var args = Array.prototype.slice.call(arguments, 0);
215
+ var self = this;
216
+
217
+ args.unshift(function() { return originalFunction.apply(self, arguments); });
218
+ return enhancement.apply(this, args);
219
+ };
220
+ }
221
+
179
222
  /** @class
180
223
 
181
224
  Root object for the SproutCore framework. SC.Object is the root class for
@@ -202,7 +245,10 @@ SC._object_extend = function _object_extend(base, ext) {
202
245
  @extends SC.Observable
203
246
  @since SproutCore 1.0
204
247
  */
205
- SC.Object = function(props) { return this._object_init(props); };
248
+ SC.Object = function(props) {
249
+ this.__sc_super__ = SC.Object.prototype;
250
+ return this._object_init(props);
251
+ };
206
252
 
207
253
  SC.mixin(SC.Object, /** @scope SC.Object */ {
208
254
 
@@ -256,7 +302,10 @@ SC.mixin(SC.Object, /** @scope SC.Object */ {
256
302
 
257
303
  // build a new constructor and copy class methods. Do this before
258
304
  // adding any other properties so they are not overwritten by the copy.
259
- var prop, ret = function(props) { return this._object_init(props); } ;
305
+ var prop, ret = function(props) {
306
+ this.__sc_super__ = ret.prototype;
307
+ return this._object_init(props);
308
+ } ;
260
309
  for(prop in this) {
261
310
  if (!this.hasOwnProperty(prop)) continue ;
262
311
  ret[prop] = this[prop];
@@ -267,6 +316,7 @@ SC.mixin(SC.Object, /** @scope SC.Object */ {
267
316
 
268
317
  // now setup superclass, guid
269
318
  ret.superclass = this ;
319
+ ret.__sc_super__ = this.prototype;
270
320
  SC.generateGuid(ret, "sc"); // setup guid
271
321
 
272
322
  ret.subclasses = SC.Set.create();
@@ -275,7 +325,7 @@ SC.mixin(SC.Object, /** @scope SC.Object */ {
275
325
  // setup new prototype and add properties to it
276
326
  var base = (ret.prototype = SC.beget(this.prototype));
277
327
  var idx, len = arguments.length;
278
- for(idx=0;idx<len;idx++) SC._object_extend(base, arguments[idx]) ;
328
+ for(idx=0;idx<len;idx++) { SC._object_extend(base, arguments[idx], ret.__sc_super__) ; }
279
329
  base.constructor = ret; // save constructor
280
330
 
281
331
  if (bench) SC.Benchmark.end('SC.Object.extend') ;
@@ -283,7 +333,7 @@ SC.mixin(SC.Object, /** @scope SC.Object */ {
283
333
  },
284
334
 
285
335
  reopen: function(props) {
286
- return SC._object_extend(this.prototype, props);
336
+ return SC._object_extend(this.prototype, props, this.__sc_super__);
287
337
  },
288
338
 
289
339
  /**
@@ -436,7 +486,7 @@ SC.Object.prototype = {
436
486
  _object_init: function(extensions) {
437
487
  // apply any new properties
438
488
  var idx, len = (extensions) ? extensions.length : 0;
439
- for(idx=0;idx<len;idx++) SC._object_extend(this, extensions[idx]) ;
489
+ for(idx=0;idx<len;idx++) { SC._object_extend(this, extensions[idx], this.__sc_super__) ; }
440
490
  SC.generateGuid(this, "sc") ; // add guid
441
491
  this.init() ; // call real init
442
492
 
@@ -306,3 +306,5 @@ SC.run = function(callback, target, forceNested) {
306
306
  if(forceNested || !alreadyRunning) SC.RunLoop.end();
307
307
  }
308
308
  };
309
+
310
+ SC.RunLoop.currentRunLoop = SC.RunLoop.create();
@@ -50,11 +50,10 @@ test("SC.isArray" ,function(){
50
50
  var numarray = [1,2,3],
51
51
  number = 23,
52
52
  strarray = ["Hello", "Hi"],
53
- string = "Hello";
53
+ string = "Hello",
54
54
  object = {},
55
55
  length = {length: 12},
56
- fn = function() {},
57
- nodelist = document.getElementsByTagName("body")
56
+ fn = function() {};
58
57
 
59
58
  equals( SC.isArray(numarray), true, "[1,2,3]" );
60
59
  equals( SC.isArray(number), false, "23" );
@@ -62,7 +61,11 @@ test("SC.isArray" ,function(){
62
61
  equals( SC.isArray(string), false, '"Hello"' );
63
62
  equals( SC.isArray(object), false, "{}" );
64
63
  equals( SC.isArray(length), true, "{length: 12}" );
65
- equals( SC.isArray(window), false, "window" )
66
- equals( SC.isArray(fn), false, "function() {}" )
67
- equals( SC.isArray(nodelist), true, "NodeList" )
64
+ equals( SC.isArray(window), false, "window" );
65
+ equals( SC.isArray(fn), false, "function() {}" );
66
+
67
+ if (window.document) {
68
+ var nodelist = document.getElementsByTagName("body")
69
+ equals( SC.isArray(nodelist), true, "NodeList" );
70
+ }
68
71
  });
@@ -27,4 +27,18 @@ test("should return an array for the object passed ",function(){
27
27
  equals(SC.isArray(ret),true) ;
28
28
  ret = SC.makeArray(arrayA);
29
29
  equals(SC.isArray(ret),true) ;
30
- });
30
+ });
31
+
32
+ test("isArray should return true for empty arguments", function() {
33
+ var func = function(foo, bar) {
34
+ ok(SC.isArray(arguments), "arguments is an array");
35
+ };
36
+ func();
37
+ });
38
+
39
+ test("SC.$A should return an empty array if passed an empty arguments object", function() {
40
+ var func = function(foo, bar) {
41
+ equals(SC.$A(arguments).length, 0, "returns an empty array");
42
+ };
43
+ func();
44
+ });
@@ -11,6 +11,8 @@
11
11
  // BUILT-IN ARRAY
12
12
  //
13
13
 
14
+ sc_require('debug/test_suites/array/base');
15
+
14
16
  SC.ArraySuite.generate("built-in Array");
15
17
 
16
18
  // ..........................................................
@@ -0,0 +1,31 @@
1
+ module("chained observers");
2
+
3
+ test("chained observers on enumerable properties are triggered when any item changes", function() {
4
+ var momma = SC.Object.create({
5
+ children: [ SC.Object.create({ name: "Bartholomew" }), SC.Object.create({ name: "Agnes" }), SC.Object.create({ name: "Dan" }) ]
6
+ });
7
+
8
+ var family = SC.Object.create({
9
+ momma: momma
10
+ });
11
+
12
+ var observerFiredCount = 0;
13
+ family.addObserver('momma.children.@each.name', this, function() {
14
+ observerFiredCount++;
15
+ });
16
+
17
+ SC.run(function() { family.getPath('momma.children').objectAt(0).set('name', 'Teddy'); });
18
+
19
+ equals(observerFiredCount, 1, "observer fired after changing a child item's name");
20
+
21
+ //observerFiredCount = 0;
22
+ //SC.run(function() { family.getPath('momma.children').pushObject(SC.Object.create({ name: "Nancy" })); });
23
+
24
+ //equals(observerFiredCount, 1, "observer fired after adding a new item");
25
+
26
+ //observerFiredCount = 0;
27
+ //SC.run(function() { family.getPath('momma.children').objectAt(3).set('name', "Herbert"); });
28
+
29
+ //equals(observerFiredCount, 1, "observer fired after changing property on new object");
30
+ });
31
+
@@ -427,6 +427,24 @@ test('setting one of two computed properties that depend on a third property sho
427
427
  equals(object.get('isOn'), NO, 'object.isOn should be NO');
428
428
  });
429
429
 
430
+ test("dependent keys should be able to be specified as property paths", function() {
431
+ var depObj = SC.Object.create({
432
+ menu: SC.Object.create({
433
+ price: 5
434
+ }),
435
+
436
+ menuPrice: function() {
437
+ return this.getPath('menu.price');
438
+ }.property('menu.price').cacheable()
439
+ });
440
+
441
+ equals(depObj.get('menuPrice'), 5, "precond - initial value returns 5");
442
+
443
+ depObj.setPath('menu.price', 6);
444
+
445
+ equals(depObj.get('menuPrice'), 6, "cache is properly invalidated after nested property changes");
446
+ });
447
+
430
448
  // ..........................................................
431
449
  // OBSERVABLE OBJECTS
432
450
  //
@@ -9,169 +9,57 @@
9
9
  // ie. setting the actual console.log = null means setting up
10
10
  // and tearing down no longer work properly.
11
11
 
12
- function testConsole() {
13
- return {
14
- log: function() { return true; },
15
- alert: function() { return true; },
16
- debug: function() { return true; },
17
- dir: function() { return true; },
18
- dirxml: function() { return true; },
19
- error: function() { return true; },
20
- group: function() { return true; },
21
- groupEnd: function() { return true; },
22
- info: function() { return true; },
23
- profile: function() { return true; },
24
- profileEnd: function() { return true; },
25
- time: function() { return true; },
26
- timeEnd: function() { return true; },
27
- trace: function() { return true; },
28
- warn: function() { return true; }
29
- };
30
- }
31
-
32
- module("SC.Logger", {
33
- setup: function() {
34
- SC.Logger.set('reporter', testConsole());
35
-
36
- SC.Logger.debugEnabled = true;
37
- SC.Logger.format = true;
38
- SC.Logger.fallBackOnLog = true;
39
- SC.Logger.fallBackOnAlert = false;
40
- },
41
- teardown: function() {
42
- }
43
- });
44
-
45
- test("exists", function() {
46
- equals(SC.Logger.get('exists'), true, "Reporter does exist check");
47
-
48
- SC.Logger.set('reporter', null);
49
- equals(SC.Logger.get('exists'), false, "Reporter does not exist check");
50
- });
51
-
52
- test("log", function() {
53
- equals(SC.Logger.log("test"), true, "Function is defined" );
54
-
55
- var reporter = SC.Logger.get('reporter');
56
- reporter.log = null;
57
- equals(SC.Logger.log("test"), false, "Function is null");
58
-
59
- SC.Logger.fallBackOnAlert = true;
60
- equals(SC.Logger.log("test"), true, "Function is null -- fallBackOnAlert true");
61
- });
62
-
63
- test("debug", function() {
64
- equals(SC.Logger.debug("Debug"), true, "Function is defined");
65
-
66
- SC.Logger.get('reporter').debug = null;
67
- equals(SC.Logger.debug("Debug"), true, "Function is null -- fallBackOnLog true");
68
-
69
- SC.Logger.fallBackOnLog = false;
70
- equals(SC.Logger.debug("Debug"), false, "Function is null -- fallBackOnLog false");
71
- });
72
-
73
- test("dir", function() {
74
- equals(SC.Logger.dir({test:"string"}), true, "Function is defined");
75
-
76
- SC.Logger.get('reporter').dir = null;
77
- equals(SC.Logger.dir({test:"string"}), true, "Function is null -- fallBackOnLog true");
78
-
79
- SC.Logger.fallBackOnLog = false;
80
- equals(SC.Logger.dir({test:"string"}), false, "Function is null -- fallBackOnLog false");
81
- });
12
+ module("SC.Logger");
82
13
 
83
- test("dirxml", function() {
84
- equals(SC.Logger.dirxml("<here id='2'>is some XML</here>"), true, "Function is defined");
14
+ test("addReporter", function() {
15
+ var reporter = {
16
+ log: function() { SC.Logger.set('hasBeenCalled', YES); }
17
+ };
85
18
 
86
- SC.Logger.get('reporter').dirxml = null;
87
- equals(SC.Logger.dirxml("<here id='2'>is some XML</here>"), true, "Function is null -- fallBackOnLog true");
19
+ SC.Logger.set('hasBeenCalled', NO);
20
+ SC.Logger.addReporter(reporter);
21
+ SC.Logger.log();
88
22
 
89
- SC.Logger.fallBackOnLog = false;
90
- equals(SC.Logger.dirxml("<here id='2'>is some XML</here>"), false, "Function is null -- fallBackOnLog false");
23
+ ok(SC.Logger.get('reporters').indexOf(reporter) > -1, "Reporter was added to reporters array");
24
+ ok(SC.Logger.get('hasBeenCalled'), "Function as called when invoked on SC.Logger");
25
+ delete SC.Logger.hasBeenCalled;
91
26
  });
92
27
 
93
- test("error", function() {
94
- equals(SC.Logger.error("Error"), true, "Function is defined");
28
+ test("clearReporters", function() {
29
+ var reporter = {
30
+ log: function() { SC.Logger.set('hasBeenCalled', YES); }
31
+ };
95
32
 
96
- SC.Logger.get('reporter').error = null;
97
- equals(SC.Logger.error("Error"), true, "Function is null -- fallBackOnLog true");
98
-
99
- SC.Logger.fallBackOnLog = false;
100
- equals(SC.Logger.error("Error"), false, "Function is null -- fallBackOnLog false");
101
- });
102
-
103
- test("group", function() {
104
- equals(SC.Logger.group("mygroup"), true, "Function is defined");
33
+ SC.Logger.set('hasBeenCalled', NO);
34
+ SC.Logger.addReporter(reporter);
105
35
 
106
- SC.Logger.get('reporter').group = null;
107
- equals(SC.Logger.group("mygroup"), false, "Function is null");
108
- });
109
-
110
- test("groupEnd", function() {
111
- equals(SC.Logger.groupEnd("mygroup"), true, "Function is defined");
36
+ ok(SC.Logger.get('reporters').indexOf(reporter) > -1, "precond - Reporter was added to reporters array");
112
37
 
113
- SC.Logger.get('reporter').groupEnd = null;
114
- equals(SC.Logger.groupEnd("mygroup"), false, "Function is null");
115
- });
116
-
117
- test("info", function() {
118
- equals(SC.Logger.info("Info"), true, "Function is defined");
38
+ SC.Logger.clearReporters(YES);
119
39
 
120
- SC.Logger.get('reporter').info = null;
121
- equals(SC.Logger.info("Info"), true, "Function is null -- fallBackOnLog true");
122
-
123
- SC.Logger.fallBackOnLog = false;
124
- equals(SC.Logger.info("Info"), false, "Function is null -- fallBackOnLog false");
40
+ ok(SC.Logger.get('reporters').indexOf(reporter) === -1, "Reporter was removed from reporters array");
125
41
  });
126
42
 
127
- test("profile", function() {
128
- equals(SC.Logger.profile(), true, "Function is defined");
129
-
130
- SC.Logger.get('reporter').profile = null;
131
- equals(SC.Logger.profile(), false, "Function is null");
43
+ test("log", function() {
44
+ equals(SC.Logger.log("test"), SC.Logger, "Function is defined and returns SC.Logger");
132
45
  });
133
46
 
134
- test("profileEnd", function() {
135
- equals(SC.Logger.profileEnd(), true, "Function is defined");
136
-
137
- SC.Logger.get('reporter').profileEnd = null;
138
- equals(SC.Logger.profileEnd(), false, "Function is null");
47
+ test("debug", function() {
48
+ ok(SC.Logger.debug("Debug"), SC.Logger, "Function is defined and returns SC.Logger");
139
49
  });
140
50
 
141
- test("time", function() {
142
- equals(SC.Logger.time('mytime'), true, "Function is defined");
143
-
144
- SC.Logger.get('reporter').time = null;
145
- equals(SC.Logger.time('mytime'), false, "Function is null");
51
+ test("dir", function() {
52
+ equals(SC.Logger.dir({test:"string"}), SC.Logger, "Function is defined and returns SC.Logger");
146
53
  });
147
54
 
148
- test("timeEnd", function() {
149
- equals(SC.Logger.timeEnd('mytime'), true, "Function is defined");
150
-
151
- SC.Logger.get('reporter').timeEnd = null;
152
- equals(SC.Logger.timeEnd('mytime'), false, "Function is null");
55
+ test("error", function() {
56
+ equals(SC.Logger.error("Error"), SC.Logger, "Function is defined and returns SC.Logger");
153
57
  });
154
58
 
155
- test("trace", function() {
156
- equals(SC.Logger.trace(), true, "Function is defined");
157
-
158
- SC.Logger.get('reporter').trace = null;
159
- equals(SC.Logger.trace(), false, "Function is null");
59
+ test("info", function() {
60
+ equals(SC.Logger.info("Info"), SC.Logger, "Function is defined and returns SC.Logger");
160
61
  });
161
62
 
162
63
  test("warn", function() {
163
- equals(SC.Logger.warn("Warn"), true, "Function is defined");
164
-
165
- SC.Logger.get('reporter').warn = null;
166
- equals(SC.Logger.warn("Warn"), true, "Function is null -- fallBackOnLog true");
167
-
168
- SC.Logger.fallBackOnLog = false;
169
- equals(SC.Logger.warn("Warn"), false, "Function is null -- fallBackOnLog false");
170
- });
171
-
172
- test("_argumentsToString", function() {
173
- equals(SC.Logger._argumentsToString.apply(SC.Logger, ["test", "test2"]), "test" + SC.LOGGER_LOG_DELIMITER + "test2", "Formatting using default delimiter");
174
-
175
- SC.LOGGER_LOG_DELIMITER = "|";
176
- equals(SC.Logger._argumentsToString.apply(SC.Logger, ["test", "test2"]), "test|test2", "Formatting using custom delimiter");
64
+ equals(SC.Logger.warn("Warn"), SC.Logger, "Function is defined and returns SC.Logger");
177
65
  });
@@ -0,0 +1,71 @@
1
+ (function(){
2
+
3
+ var klass;
4
+
5
+ module("SC.Object Concatenated Properties", {
6
+ setup: function(){
7
+ klass = SC.Object.extend({
8
+ concatenatedProperties: ['values'],
9
+ values: ['a', 'b', 'c']
10
+ });
11
+ }
12
+ });
13
+
14
+ test("concatenates instances", function() {
15
+ var obj = klass.create({
16
+ values: ['d', 'e', 'f']
17
+ });
18
+
19
+ var values = obj.get('values'),
20
+ expected = ['a', 'b', 'c', 'd', 'e', 'f'];
21
+ ok(values.isEqual(expected), "should concatenate values property (expected: %@, got: %@)".fmt(expected, values));
22
+ });
23
+
24
+ test("concatenates subclasses", function() {
25
+ var subKlass = klass.extend({
26
+ values: ['d', 'e', 'f']
27
+ });
28
+ var obj = subKlass.create();
29
+
30
+ var values = obj.get('values'),
31
+ expected = ['a', 'b', 'c', 'd', 'e', 'f'];
32
+ ok(values.isEqual(expected), "should concatenate values property (expected: %@, got: %@)".fmt(expected, values));
33
+ });
34
+
35
+ test("concatenates reopen", function() {
36
+ klass.reopen({
37
+ values: ['d', 'e', 'f']
38
+ });
39
+ var obj = klass.create();
40
+
41
+ var values = obj.get('values'),
42
+ expected = ['a', 'b', 'c', 'd', 'e', 'f'];
43
+ ok(values.isEqual(expected), "should concatenate values property (expected: %@, got: %@)".fmt(expected, values));
44
+ });
45
+
46
+ test("concatenates mixin", function() {
47
+ var mixin = {
48
+ values: ['d', 'e']
49
+ };
50
+ var subKlass = klass.extend(mixin, {
51
+ values: ['f']
52
+ });
53
+ var obj = subKlass.create();
54
+
55
+ var values = obj.get('values'),
56
+ expected = ['a', 'b', 'c', 'd', 'e', 'f'];
57
+ ok(values.isEqual(expected), "should concatenate values property (expected: %@, got: %@)".fmt(expected, values));
58
+ });
59
+
60
+ test("concatenates reopen, subclass, and instance", function() {
61
+ klass.reopen({ values: ['d'] });
62
+ var subKlass = klass.extend({ values: ['e'] });
63
+ var obj = subKlass.create({ values: ['f'] });
64
+
65
+ var values = obj.get('values'),
66
+ expected = ['a', 'b', 'c', 'd', 'e', 'f'];
67
+ ok(values.isEqual(expected), "should concatenate values property (expected: %@, got: %@)".fmt(expected, values));
68
+ });
69
+
70
+
71
+ })();