sproutit-sproutcore 1.0.0.20090416161445 → 1.0.0.20090720093355

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 (754) hide show
  1. data/Buildfile +4 -2
  2. data/frameworks/sproutcore/Buildfile +3 -2
  3. data/frameworks/sproutcore/README +2 -1
  4. data/frameworks/sproutcore/apps/docs/core.js +27 -0
  5. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
  6. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
  7. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +14378 -0
  8. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
  9. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image11.png +0 -0
  10. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image13.png +0 -0
  11. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
  12. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image8.png +0 -0
  13. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -0
  14. data/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +9 -0
  15. data/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +22 -0
  16. data/frameworks/sproutcore/apps/{sc_jsdoc → docs}/english.lproj/strings.js +7 -7
  17. data/frameworks/sproutcore/apps/docs/main.js +30 -0
  18. data/frameworks/sproutcore/apps/tests/controllers/detail.js +16 -0
  19. data/frameworks/sproutcore/apps/tests/controllers/source.js +29 -0
  20. data/frameworks/sproutcore/apps/tests/controllers/target.js +26 -0
  21. data/frameworks/sproutcore/apps/tests/controllers/targets.js +65 -26
  22. data/frameworks/sproutcore/apps/tests/controllers/tests.js +14 -19
  23. data/frameworks/sproutcore/apps/tests/core.js +114 -16
  24. data/frameworks/sproutcore/apps/tests/data_source.js +96 -0
  25. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +22 -2
  26. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +168 -22
  27. data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +14 -5
  28. data/frameworks/sproutcore/apps/tests/fixtures/target.js +81 -37
  29. data/frameworks/sproutcore/apps/tests/fixtures/test.js +38 -37
  30. data/frameworks/sproutcore/apps/tests/main.js +9 -20
  31. data/frameworks/sproutcore/apps/tests/models/target.js +74 -31
  32. data/frameworks/sproutcore/apps/tests/models/test.js +30 -2
  33. data/frameworks/sproutcore/{frameworks/desktop/mixins/collection_item.js → apps/tests/states/no_targets.js} +16 -12
  34. data/frameworks/sproutcore/apps/tests/states/ready.js +56 -0
  35. data/frameworks/sproutcore/apps/tests/states/ready_detail.js +41 -0
  36. data/frameworks/sproutcore/apps/tests/states/ready_empty.js +48 -0
  37. data/frameworks/sproutcore/apps/tests/states/ready_list.js +41 -0
  38. data/frameworks/sproutcore/apps/tests/states/ready_loading.js +44 -0
  39. data/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +31 -0
  40. data/frameworks/sproutcore/apps/tests/states/start.js +39 -0
  41. data/frameworks/sproutcore/apps/tests/tests/controllers/{test.js → detail.js} +3 -3
  42. data/frameworks/sproutcore/apps/tests/tests/controllers/source.js +15 -0
  43. data/frameworks/sproutcore/apps/tests/tests/controllers/target.js +15 -0
  44. data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +3 -3
  45. data/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +15 -0
  46. data/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +26 -0
  47. data/frameworks/sproutcore/design/CollectionView State Charts.graffle +4848 -0
  48. data/frameworks/sproutcore/design/Design Charts.graffle +8788 -6375
  49. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Preview.pdf +0 -0
  50. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Thumbnail.tiff +0 -0
  51. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/data.plist +1452 -0
  52. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/image8.png +0 -0
  53. data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Preview.pdf +0 -0
  54. data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Thumbnail.tiff +0 -0
  55. data/frameworks/sproutcore/design/TestRunner Design.graffle/data.plist +24187 -0
  56. data/frameworks/sproutcore/design/TestRunner Design.graffle/image10.png +0 -0
  57. data/frameworks/sproutcore/design/TestRunner Design.graffle/image11.png +0 -0
  58. data/frameworks/sproutcore/design/TestRunner Design.graffle/image13.png +0 -0
  59. data/frameworks/sproutcore/design/TestRunner Design.graffle/image15.png +0 -0
  60. data/frameworks/sproutcore/design/TestRunner Design.graffle/image16.png +0 -0
  61. data/frameworks/sproutcore/design/TestRunner Design.graffle/image17.png +0 -0
  62. data/frameworks/sproutcore/design/TestRunner Design.graffle/image18.png +0 -0
  63. data/frameworks/sproutcore/design/TestRunner Design.graffle/image19.png +0 -0
  64. data/frameworks/sproutcore/design/TestRunner Design.graffle/image22.tiff +0 -0
  65. data/frameworks/sproutcore/design/TestRunner Design.graffle/image23.png +0 -0
  66. data/frameworks/sproutcore/design/TestRunner Design.graffle/image24.png +0 -0
  67. data/frameworks/sproutcore/design/TestRunner Design.graffle/image25.png +0 -0
  68. data/frameworks/sproutcore/design/TestRunner Design.graffle/image30.png +0 -0
  69. data/frameworks/sproutcore/design/TestRunner Design.graffle/image31.png +0 -0
  70. data/frameworks/sproutcore/design/TestRunner Design.graffle/image8.png +0 -0
  71. data/frameworks/sproutcore/design/TestRunner Design.graffle/image9.png +0 -0
  72. data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +2 -2
  73. data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +66 -49
  74. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +146 -31
  75. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures_with_queries.js +238 -0
  76. data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +27 -11
  77. data/frameworks/sproutcore/frameworks/datastore/models/record.js +163 -32
  78. data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +67 -5
  79. data/frameworks/sproutcore/frameworks/datastore/system/many_array.js +157 -0
  80. data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +202 -19
  81. data/frameworks/sproutcore/frameworks/datastore/system/query.js +929 -78
  82. data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +143 -5
  83. data/frameworks/sproutcore/frameworks/datastore/system/store.js +443 -125
  84. data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +38 -3
  85. data/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +94 -0
  86. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +30 -0
  87. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +238 -0
  88. data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +105 -16
  89. data/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +178 -0
  90. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +1 -1
  91. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +9 -8
  92. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +6 -6
  93. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +6 -6
  94. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +3 -3
  95. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +7 -7
  96. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +4 -4
  97. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +7 -7
  98. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +7 -7
  99. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare_records.js +126 -0
  100. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +165 -0
  101. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +82 -0
  102. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/find_all.js +362 -0
  103. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/parsing.js +170 -0
  104. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +43 -0
  105. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +60 -0
  106. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +67 -0
  107. data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +2 -13
  108. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +3 -4
  109. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +73 -0
  110. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +15 -0
  111. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +4 -2
  112. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +1 -1
  113. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +2 -2
  114. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +1 -1
  115. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +2 -2
  116. data/frameworks/sproutcore/frameworks/debug/core.js +60 -0
  117. data/frameworks/sproutcore/frameworks/deprecated/core.js +0 -2
  118. data/frameworks/sproutcore/frameworks/deprecated/server/server.js +0 -1
  119. data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +0 -2
  120. data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +0 -2
  121. data/frameworks/sproutcore/frameworks/deprecated/system/event.js +0 -2
  122. data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +0 -2
  123. data/frameworks/sproutcore/frameworks/deprecated/system/object.js +0 -2
  124. data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +0 -1
  125. data/frameworks/sproutcore/frameworks/deprecated/system/string.js +0 -2
  126. data/frameworks/sproutcore/frameworks/designer/coders/design.js +1 -2
  127. data/frameworks/sproutcore/frameworks/designer/coders/localization.js +1 -2
  128. data/frameworks/sproutcore/frameworks/designer/coders/object.js +1 -1
  129. data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +1 -1
  130. data/frameworks/sproutcore/frameworks/designer/ext/page.js +0 -2
  131. data/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -2
  132. data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +2 -3
  133. data/frameworks/sproutcore/frameworks/designer/views/designer.js +24 -8
  134. data/frameworks/sproutcore/frameworks/designer/views/label.js +1 -2
  135. data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +0 -2
  136. data/frameworks/sproutcore/frameworks/designer/views/tab.js +1 -2
  137. data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +2 -2
  138. data/frameworks/sproutcore/frameworks/desktop/english.lproj/drag.css +6 -0
  139. data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +63 -10
  140. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +5 -4
  141. data/frameworks/sproutcore/frameworks/desktop/english.lproj/modal.css +5 -0
  142. data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +1 -0
  143. data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +5 -0
  144. data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +1 -0
  145. data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +1 -1
  146. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +61 -0
  147. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +136 -79
  148. data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +55 -24
  149. data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +295 -147
  150. data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
  151. data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +1 -1
  152. data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +18 -20
  153. data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +2 -2
  154. data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +4 -4
  155. data/frameworks/sproutcore/frameworks/desktop/system/drag.js +337 -231
  156. data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +3 -3
  157. data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +1 -1
  158. data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +2 -2
  159. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +46 -1
  160. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +4 -2
  161. data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +5 -6
  162. data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +11 -11
  163. data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +11 -7
  164. data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +9 -9
  165. data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +19 -0
  166. data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +0 -1
  167. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +249 -0
  168. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +82 -0
  169. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +199 -0
  170. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +288 -0
  171. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +65 -0
  172. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +88 -0
  173. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +165 -0
  174. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +121 -0
  175. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +177 -0
  176. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +240 -0
  177. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +191 -0
  178. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +197 -39
  179. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +141 -0
  180. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +182 -0
  181. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +183 -0
  182. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +133 -0
  183. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +132 -0
  184. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +56 -0
  185. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +167 -0
  186. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +127 -0
  187. data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +30 -1
  188. data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +8 -8
  189. data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +9 -9
  190. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +45 -6
  191. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +2 -1
  192. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +17 -1
  193. data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +44 -29
  194. data/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +231 -0
  195. data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +1 -1
  196. data/frameworks/sproutcore/frameworks/desktop/views/button.js +15 -4
  197. data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +8 -1
  198. data/frameworks/sproutcore/frameworks/desktop/views/collection.js +1739 -1123
  199. data/frameworks/sproutcore/frameworks/desktop/views/form.js +0 -1
  200. data/frameworks/sproutcore/frameworks/desktop/views/grid.js +13 -11
  201. data/frameworks/sproutcore/frameworks/desktop/views/list.js +405 -571
  202. data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +211 -74
  203. data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +319 -169
  204. data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +57 -51
  205. data/frameworks/sproutcore/frameworks/desktop/views/progress.js +2 -2
  206. data/frameworks/sproutcore/frameworks/desktop/views/scene.js +150 -2
  207. data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +92 -50
  208. data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +86 -63
  209. data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +38 -22
  210. data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +51 -12
  211. data/frameworks/sproutcore/frameworks/desktop/views/slider.js +2 -0
  212. data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +17 -1087
  213. data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +3 -3
  214. data/frameworks/sproutcore/frameworks/desktop/views/split.js +35 -9
  215. data/frameworks/sproutcore/frameworks/desktop/views/stacked.js +101 -0
  216. data/frameworks/sproutcore/frameworks/desktop/views/tab.js +23 -22
  217. data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +1 -1
  218. data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +382 -363
  219. data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +7 -279
  220. data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +212 -310
  221. data/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +109 -0
  222. data/frameworks/sproutcore/frameworks/foundation/core.js +25 -0
  223. data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +30 -8
  224. data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +19 -4
  225. data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +219 -3
  226. data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +1 -0
  227. data/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +30 -0
  228. data/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +15 -0
  229. data/frameworks/sproutcore/frameworks/{desktop → foundation}/english.lproj/text_field.css +19 -3
  230. data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +6 -1
  231. data/frameworks/sproutcore/frameworks/foundation/license.js +19 -0
  232. data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +15 -7
  233. data/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +171 -0
  234. data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +5 -5
  235. data/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +462 -0
  236. data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +162 -84
  237. data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +33 -2
  238. data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +17 -3
  239. data/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +159 -0
  240. data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +49 -20
  241. data/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +887 -0
  242. data/frameworks/sproutcore/frameworks/foundation/system/application.js +36 -0
  243. data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +310 -62
  244. data/frameworks/sproutcore/frameworks/foundation/system/datetime.js +729 -0
  245. data/frameworks/sproutcore/frameworks/foundation/system/event.js +57 -21
  246. data/frameworks/sproutcore/frameworks/foundation/system/ready.js +11 -5
  247. data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +55 -16
  248. data/frameworks/sproutcore/frameworks/foundation/system/request.js +152 -27
  249. data/frameworks/sproutcore/frameworks/foundation/system/responder.js +120 -0
  250. data/frameworks/sproutcore/frameworks/foundation/system/responder_context.js +243 -0
  251. data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +29 -6
  252. data/frameworks/sproutcore/frameworks/foundation/system/routes.js +143 -102
  253. data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +9 -2
  254. data/frameworks/sproutcore/frameworks/foundation/system/utils.js +104 -9
  255. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +182 -0
  256. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +193 -0
  257. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +64 -0
  258. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/single_case.js +136 -0
  259. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/empty_case.js +82 -0
  260. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/multiple_case.js +111 -0
  261. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_case.js +193 -0
  262. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_enumerable_case.js +179 -0
  263. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +108 -0
  264. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +35 -0
  265. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +128 -0
  266. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +17 -0
  267. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +325 -0
  268. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +718 -0
  269. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +484 -0
  270. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +28 -28
  271. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +1 -1
  272. data/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +151 -0
  273. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +2 -2
  274. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +1 -1
  275. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +1 -1
  276. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +12 -12
  277. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +1 -1
  278. data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +52 -14
  279. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +27 -23
  280. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +1 -1
  281. data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +12 -10
  282. data/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +148 -0
  283. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +1 -1
  284. data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/methods.js +0 -0
  285. data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/ui.js +53 -1
  286. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +1 -0
  287. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +1 -1
  288. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +35 -0
  289. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +1 -1
  290. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisible.js +51 -0
  291. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +12 -1
  292. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +83 -3
  293. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +1 -1
  294. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +4 -0
  295. data/frameworks/sproutcore/frameworks/foundation/views/container.js +1 -1
  296. data/frameworks/sproutcore/frameworks/foundation/views/field.js +27 -16
  297. data/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -1
  298. data/frameworks/sproutcore/frameworks/foundation/views/label.js +16 -6
  299. data/frameworks/sproutcore/frameworks/{desktop → foundation}/views/text_field.js +39 -15
  300. data/frameworks/sproutcore/frameworks/foundation/views/view.js +328 -83
  301. data/frameworks/sproutcore/frameworks/runtime/README +1 -0
  302. data/frameworks/sproutcore/frameworks/runtime/core.js +110 -31
  303. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +238 -0
  304. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +33 -0
  305. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +121 -0
  306. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +34 -0
  307. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +50 -0
  308. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +46 -0
  309. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +371 -0
  310. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +100 -0
  311. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +49 -0
  312. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +94 -0
  313. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +50 -0
  314. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +47 -0
  315. data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +320 -110
  316. data/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +64 -0
  317. data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +44 -6
  318. data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +142 -77
  319. data/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +104 -0
  320. data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +298 -142
  321. data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +17 -11
  322. data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +55 -15
  323. data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +29 -5
  324. data/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +40 -0
  325. data/frameworks/sproutcore/frameworks/runtime/system/binding.js +39 -15
  326. data/frameworks/sproutcore/frameworks/runtime/system/index_set.js +1166 -0
  327. data/frameworks/sproutcore/frameworks/runtime/system/object.js +33 -15
  328. data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +201 -35
  329. data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +42 -15
  330. data/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +649 -0
  331. data/frameworks/sproutcore/frameworks/runtime/system/set.js +183 -54
  332. data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +20 -11
  333. data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +2 -2
  334. data/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +44 -0
  335. data/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +16 -0
  336. data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +1 -1
  337. data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +1 -1
  338. data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +5 -5
  339. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +57 -0
  340. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +21 -2
  341. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +249 -129
  342. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +11 -2
  343. data/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +55 -0
  344. data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +81 -6
  345. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +195 -0
  346. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +43 -0
  347. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +74 -0
  348. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +42 -0
  349. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +38 -0
  350. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +38 -0
  351. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +74 -0
  352. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +40 -0
  353. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +40 -0
  354. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +36 -0
  355. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +189 -0
  356. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +89 -0
  357. data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +1 -1
  358. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +59 -0
  359. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +75 -0
  360. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +117 -0
  361. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +110 -0
  362. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +65 -0
  363. data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +3 -3
  364. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/add.js +92 -0
  365. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +17 -0
  366. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +85 -0
  367. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/isEqual.js +60 -0
  368. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +87 -0
  369. data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +4 -25
  370. data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +39 -1
  371. data/frameworks/sproutcore/frameworks/testing/core.js +183 -0
  372. data/frameworks/sproutcore/frameworks/testing/english.lproj/runner.css +126 -0
  373. data/frameworks/sproutcore/frameworks/testing/extras.js +0 -26
  374. data/frameworks/sproutcore/frameworks/testing/qunit.js +33 -25
  375. data/frameworks/sproutcore/frameworks/testing/system/dump.js +205 -0
  376. data/frameworks/sproutcore/frameworks/testing/system/equiv.js +201 -0
  377. data/frameworks/sproutcore/frameworks/testing/system/plan.js +691 -0
  378. data/frameworks/sproutcore/frameworks/testing/system/runner.js +209 -0
  379. data/frameworks/sproutcore/frameworks/testing/system/suite.js +228 -0
  380. data/frameworks/sproutcore/frameworks/testing/utils.js +8 -1
  381. data/frameworks/sproutcore/lib/index.rhtml +4 -1
  382. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/10.png +0 -0
  383. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/100.png +0 -0
  384. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/102.png +0 -0
  385. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/110.png +0 -0
  386. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/120.png +0 -0
  387. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/127.png +0 -0
  388. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/18.png +0 -0
  389. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/19.png +0 -0
  390. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/2.png +0 -0
  391. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/24.png +0 -0
  392. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/26.png +0 -0
  393. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/27.png +0 -0
  394. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/28.png +0 -0
  395. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/29.png +0 -0
  396. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/30.png +0 -0
  397. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/31.png +0 -0
  398. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/33.png +0 -0
  399. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/37.png +0 -0
  400. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/41.png +0 -0
  401. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/99.png +0 -0
  402. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/10.png +0 -0
  403. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/100.png +0 -0
  404. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/102.png +0 -0
  405. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/110.png +0 -0
  406. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/120.png +0 -0
  407. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/127.png +0 -0
  408. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/18.png +0 -0
  409. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/19.png +0 -0
  410. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/2.png +0 -0
  411. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/24.png +0 -0
  412. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/26.png +0 -0
  413. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/27.png +0 -0
  414. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/28.png +0 -0
  415. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/29.png +0 -0
  416. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/30.png +0 -0
  417. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/31.png +0 -0
  418. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/33.png +0 -0
  419. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/37.png +0 -0
  420. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/41.png +0 -0
  421. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/99.png +0 -0
  422. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/10.png +0 -0
  423. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/100.png +0 -0
  424. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/102.png +0 -0
  425. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/110.png +0 -0
  426. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/120.png +0 -0
  427. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/127.png +0 -0
  428. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/18.png +0 -0
  429. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/19.png +0 -0
  430. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/2.png +0 -0
  431. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/24.png +0 -0
  432. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/26.png +0 -0
  433. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/27.png +0 -0
  434. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/28.png +0 -0
  435. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/29.png +0 -0
  436. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/30.png +0 -0
  437. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/31.png +0 -0
  438. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/33.png +0 -0
  439. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/37.png +0 -0
  440. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/41.png +0 -0
  441. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/99.png +0 -0
  442. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/10.png +0 -0
  443. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/18.png +0 -0
  444. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/19.png +0 -0
  445. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/2.png +0 -0
  446. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x-2.psd +0 -0
  447. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x.psd +0 -0
  448. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-sprite.psd +0 -0
  449. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-ysprite.psd +0 -0
  450. data/frameworks/sproutcore/themes/standard_theme/Source/shared-icons.psd +0 -0
  451. data/frameworks/sproutcore/themes/standard_theme/Source/sproutcore-logo.psd +0 -0
  452. data/frameworks/sproutcore/themes/standard_theme/Source/sticky-note.psd +0 -0
  453. data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +191 -193
  454. data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +11 -10
  455. data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +85 -4
  456. data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +15 -2
  457. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -0
  458. data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +0 -26
  459. data/frameworks/sproutcore/themes/standard_theme/english.lproj/list_item.css +30 -0
  460. data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +9 -6
  461. data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +20 -11
  462. data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +192 -54
  463. data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +56 -24
  464. data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +13 -7
  465. data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +1 -4
  466. data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -1
  467. data/lib/sproutcore/builders/minify.rb +2 -2
  468. data/lib/sproutcore/builders/test.rb +1 -1
  469. data/lib/sproutcore/buildfile.rb +1 -0
  470. data/lib/sproutcore/rack/dev.rb +1 -1
  471. data/lib/sproutcore/rack/filesystem.rb +265 -0
  472. data/lib/sproutcore/rack/proxy.rb +11 -3
  473. data/lib/sproutcore/rack/service.rb +11 -1
  474. data/lib/sproutcore/tools.rb +11 -1
  475. data/lib/sproutcore/tools/server.rb +6 -4
  476. data/vendor/jsdoc/README.txt +151 -0
  477. data/vendor/jsdoc/changes.txt +47 -0
  478. metadata +263 -308
  479. data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +0 -149
  480. data/frameworks/sproutcore/apps/sc_jsdoc/core.js +0 -16
  481. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +0 -17
  482. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +0 -99
  483. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
  484. data/frameworks/sproutcore/apps/sc_jsdoc/main.js +0 -27
  485. data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +0 -21
  486. data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +0 -209
  487. data/frameworks/sproutcore/apps/sc_qunit/core.js +0 -16
  488. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +0 -17
  489. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +0 -107
  490. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
  491. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +0 -15
  492. data/frameworks/sproutcore/apps/sc_qunit/main.js +0 -18
  493. data/frameworks/sproutcore/apps/sc_qunit/models/test.js +0 -24
  494. data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +0 -52
  495. data/frameworks/sproutcore/apps/tests/controllers/test.js +0 -20
  496. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
  497. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -83
  498. data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +0 -3
  499. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +0 -10
  500. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +0 -10
  501. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +0 -110
  502. data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +0 -156
  503. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +0 -118
  504. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +0 -268
  505. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +0 -433
  506. data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +0 -263
  507. data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +0 -25
  508. data/spec/buildtasks/manifest/spec_helper.rb +0 -35
  509. data/spec/buildtasks/target_spec.rb +0 -214
  510. data/spec/fixtures/builder_tests/Buildfile +0 -15
  511. data/spec/fixtures/builder_tests/apps/combine_test/a.js +0 -1
  512. data/spec/fixtures/builder_tests/apps/combine_test/b.js +0 -1
  513. data/spec/fixtures/builder_tests/apps/combine_test/c.js +0 -1
  514. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +0 -1
  515. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +0 -1
  516. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +0 -1
  517. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +0 -2
  518. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +0 -1
  519. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
  520. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
  521. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +0 -1
  522. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +0 -4
  523. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
  524. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
  525. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +0 -4
  526. data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +0 -1
  527. data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
  528. data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +0 -15
  529. data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +0 -4
  530. data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +0 -7
  531. data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +0 -3
  532. data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +0 -8
  533. data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +0 -9
  534. data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +0 -12
  535. data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +0 -1
  536. data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +0 -3
  537. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +0 -1
  538. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +0 -1
  539. data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +0 -4
  540. data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
  541. data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
  542. data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
  543. data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
  544. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
  545. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +0 -4
  546. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +0 -1
  547. data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
  548. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
  549. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +0 -1
  550. data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +0 -1
  551. data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
  552. data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
  553. data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +0 -1
  554. data/spec/fixtures/buildfiles/basic/Buildfile +0 -16
  555. data/spec/fixtures/buildfiles/basic/task_module.rake +0 -6
  556. data/spec/fixtures/buildfiles/installed/Buildfile +0 -7
  557. data/spec/fixtures/buildfiles/installed/Buildfile2 +0 -5
  558. data/spec/fixtures/buildfiles/project_test/Buildfile +0 -4
  559. data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +0 -2
  560. data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
  561. data/spec/fixtures/entry_for_project/Buildfile +0 -1
  562. data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
  563. data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
  564. data/spec/fixtures/find_targets/custom/Buildfile +0 -8
  565. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
  566. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
  567. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
  568. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
  569. data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +0 -5
  570. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
  571. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
  572. data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
  573. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
  574. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
  575. data/spec/fixtures/find_targets/nested/Buildfile +0 -8
  576. data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +0 -1
  577. data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
  578. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
  579. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
  580. data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
  581. data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
  582. data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
  583. data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
  584. data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
  585. data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
  586. data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
  587. data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
  588. data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
  589. data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
  590. data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
  591. data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
  592. data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
  593. data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
  594. data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
  595. data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
  596. data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
  597. data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
  598. data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
  599. data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
  600. data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
  601. data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
  602. data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
  603. data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
  604. data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
  605. data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
  606. data/spec/fixtures/ordered_entries/apps/no_requires/1.js +0 -1
  607. data/spec/fixtures/ordered_entries/apps/no_requires/B.js +0 -1
  608. data/spec/fixtures/ordered_entries/apps/no_requires/a.js +0 -1
  609. data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +0 -1
  610. data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +0 -1
  611. data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +0 -1
  612. data/spec/fixtures/ordered_entries/apps/no_requires/c.js +0 -1
  613. data/spec/fixtures/ordered_entries/apps/no_requires/core.js +0 -1
  614. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
  615. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
  616. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
  617. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
  618. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
  619. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
  620. data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +0 -1
  621. data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +0 -1
  622. data/spec/fixtures/ordered_entries/apps/with_requires/a.js +0 -2
  623. data/spec/fixtures/ordered_entries/apps/with_requires/b.js +0 -3
  624. data/spec/fixtures/ordered_entries/apps/with_requires/c.js +0 -2
  625. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +0 -2
  626. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +0 -2
  627. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +0 -2
  628. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +0 -1
  629. data/spec/fixtures/real_world/Buildfile +0 -12
  630. data/spec/fixtures/real_world/apps/account/README +0 -1
  631. data/spec/fixtures/real_world/apps/calendar/README +0 -1
  632. data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +0 -1
  633. data/spec/fixtures/real_world/apps/files/README +0 -1
  634. data/spec/fixtures/real_world/apps/mail/README +0 -1
  635. data/spec/fixtures/real_world/apps/mobile_photos/README +0 -1
  636. data/spec/fixtures/real_world/apps/photos/README +0 -1
  637. data/spec/fixtures/real_world/apps/uploader/README +0 -1
  638. data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
  639. data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
  640. data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
  641. data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +0 -26
  642. data/spec/fixtures/real_world/frameworks/sproutcore/README +0 -1
  643. data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
  644. data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
  645. data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
  646. data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
  647. data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
  648. data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
  649. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
  650. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +0 -4
  651. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +0 -1
  652. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
  653. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
  654. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +0 -1
  655. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
  656. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
  657. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +0 -4
  658. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +0 -1
  659. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +0 -1
  660. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
  661. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +0 -6
  662. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +0 -3
  663. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +0 -1
  664. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
  665. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +0 -1
  666. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
  667. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
  668. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
  669. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
  670. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
  671. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
  672. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
  673. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
  674. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
  675. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
  676. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
  677. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
  678. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +0 -1
  679. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
  680. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
  681. data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +0 -4
  682. data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +0 -1
  683. data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +0 -1
  684. data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
  685. data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +0 -6
  686. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
  687. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
  688. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
  689. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +0 -1
  690. data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
  691. data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +0 -1
  692. data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
  693. data/spec/fixtures/real_world/generators/sample_custom/templates/{filename}.js +0 -1
  694. data/spec/fixtures/recursive_project/Buildfile +0 -8
  695. data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
  696. data/spec/lib/builders/combine_spec.rb +0 -67
  697. data/spec/lib/builders/html_spec.rb +0 -577
  698. data/spec/lib/builders/javascript_spec.rb +0 -81
  699. data/spec/lib/builders/sass_spec.rb +0 -43
  700. data/spec/lib/builders/spec_helper.rb +0 -30
  701. data/spec/lib/builders/strings_spec.rb +0 -52
  702. data/spec/lib/builders/stylesheet_spec.rb +0 -63
  703. data/spec/lib/builders/test_index_spec.rb +0 -44
  704. data/spec/lib/builders/test_spec.rb +0 -135
  705. data/spec/lib/buildfile/config_for_spec.rb +0 -81
  706. data/spec/lib/buildfile/define_spec.rb +0 -59
  707. data/spec/lib/buildfile/dup_spec.rb +0 -65
  708. data/spec/lib/buildfile/invoke_spec.rb +0 -130
  709. data/spec/lib/buildfile/load_spec.rb +0 -49
  710. data/spec/lib/buildfile/task/dup_spec.rb +0 -55
  711. data/spec/lib/buildfile/task_defined_spec.rb +0 -17
  712. data/spec/lib/buildfile_commands/build_task_spec.rb +0 -19
  713. data/spec/lib/buildfile_commands/config_spec.rb +0 -97
  714. data/spec/lib/buildfile_commands/import_spec.rb +0 -17
  715. data/spec/lib/buildfile_commands/namespace_spec.rb +0 -18
  716. data/spec/lib/buildfile_commands/proxies_spec.rb +0 -38
  717. data/spec/lib/buildfile_commands/replace_task_spec.rb +0 -29
  718. data/spec/lib/buildfile_commands/task_spec.rb +0 -36
  719. data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +0 -26
  720. data/spec/lib/models/hash_struct/deep_clone_spec.rb +0 -27
  721. data/spec/lib/models/hash_struct/has_options_spec.rb +0 -32
  722. data/spec/lib/models/hash_struct/hash_spec.rb +0 -64
  723. data/spec/lib/models/hash_struct/merge_spec.rb +0 -26
  724. data/spec/lib/models/hash_struct/method_missing.rb +0 -41
  725. data/spec/lib/models/manifest/add_entry_spec.rb +0 -36
  726. data/spec/lib/models/manifest/add_transform_spec.rb +0 -90
  727. data/spec/lib/models/manifest/build_spec.rb +0 -78
  728. data/spec/lib/models/manifest/entry_for_spec.rb +0 -94
  729. data/spec/lib/models/manifest/find_entry.rb +0 -84
  730. data/spec/lib/models/manifest/prepare_spec.rb +0 -62
  731. data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +0 -31
  732. data/spec/lib/models/manifest_entry/prepare_spec.rb +0 -54
  733. data/spec/lib/models/project/add_target_spec.rb +0 -44
  734. data/spec/lib/models/project/buildfile_spec.rb +0 -35
  735. data/spec/lib/models/project/find_targets_for_spec.rb +0 -77
  736. data/spec/lib/models/project/load_nearest_project_spec.rb +0 -23
  737. data/spec/lib/models/project/target_for_spec.rb +0 -33
  738. data/spec/lib/models/project/targets_spec.rb +0 -62
  739. data/spec/lib/models/target/compute_build_number_spec.rb +0 -125
  740. data/spec/lib/models/target/config_spec.rb +0 -30
  741. data/spec/lib/models/target/expand_required_targets_spec.rb +0 -48
  742. data/spec/lib/models/target/installed_languages_spec.rb +0 -47
  743. data/spec/lib/models/target/lproj_for_spec.rb +0 -38
  744. data/spec/lib/models/target/manifest_for_spec.rb +0 -42
  745. data/spec/lib/models/target/parent_target_spec.rb +0 -21
  746. data/spec/lib/models/target/prepare_spec.rb +0 -53
  747. data/spec/lib/models/target/required_targets_spec.rb +0 -119
  748. data/spec/lib/models/target/target_for_spec.rb +0 -56
  749. data/spec/lib/tools/build_number_spec.rb +0 -28
  750. data/spec/lib/tools/gen_spec.rb +0 -207
  751. data/spec/lib/tools/tools_spec.rb +0 -78
  752. data/spec/spec_helper.rb +0 -138
  753. data/vendor/github_gem_lint.rb +0 -22
  754. data/vendor/yui-compressor/yuicompressor-2.4.2.jar +0 -0
@@ -0,0 +1,17 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Apple, Inc. and contributors.
4
+ // License: Licened under MIT license (see license.js)
5
+ // ==========================================================================
6
+ /*global module test equals context ok same */
7
+
8
+ module('String.prototype.w()');
9
+
10
+ test("'one two three'.w() => ['one','two','three']", function() {
11
+ same('one two three'.w(), ['one','two','three'], "should be equal");
12
+ });
13
+
14
+ test("'one two three'.w() with extra spaces between words => ['one','two','three']", function() {
15
+ same('one two three'.w(), ['one','two','three'], "should be equal");
16
+ });
17
+
@@ -0,0 +1,325 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
4
+ // Portions ©2008-2009 Apple, Inc. All rights reserved.
5
+ // License: Licened under MIT license (see license.js)
6
+ // ==========================================================================
7
+
8
+ // The TreeItemObserver is tested based on the common use cases.
9
+
10
+ var root, content, flattened, delegate, obs, length, extra;
11
+
12
+ // default delegate class. Does the bare minimum for tree item to function
13
+ var Delegate = SC.Object.extend(SC.TreeItemContent, {
14
+
15
+ treeItemChildrenKey: "children",
16
+ treeItemIsExpandedKey: "isExpanded",
17
+
18
+ // This method is used to record range change info
19
+
20
+ rangeIndexes: null,
21
+ rangeCallCount: 0,
22
+
23
+ rangeDidChange: function(array, objects, key, indexes) {
24
+ this.rangeCallCount++;
25
+ this.rangeIndexes = indexes.frozenCopy();
26
+ }
27
+
28
+ });
29
+
30
+
31
+ var TestObject = SC.Object.extend({
32
+ toString: function() { return "TestObject(%@)".fmt(this.get('title')); }
33
+ });
34
+
35
+ /**
36
+ Verifies that the passed observer object has the proper content. This will
37
+ iterate over the passed expected array, calling objectAt() on the observer
38
+ to verify that it matches. If you passed the expected index set, it will
39
+ also verify that the range observer on the observer was fire with the
40
+ matching set of indexes.
41
+
42
+ Finally, pass an optional description.
43
+ */
44
+ function verifyObjectAt(obs, expected, eindexes, desc) {
45
+ var idx, len = expected.get('length'), actual;
46
+
47
+ // eindexes is optional
48
+ if (desc === undefined) {
49
+ desc = eindexes;
50
+ eindexes = undefined;
51
+ }
52
+
53
+ equals(obs.get('length'), len, "%@ - length should match".fmt(desc));
54
+ for(idx=0;idx<len;idx++) {
55
+ actual = obs.objectAt(idx);
56
+ equals(actual, expected[idx], "%@ - observer.objectAt(%@) should match expected".fmt(desc, idx));
57
+ }
58
+
59
+ if (eindexes !== undefined) {
60
+ if (eindexes) {
61
+ ok(delegate.rangeCallCount>0, 'range observer should be called (actual callCount=%@)'.fmt(delegate.rangeCallCount));
62
+ } else {
63
+ ok(delegate.rangeCallCount===0, 'range observer should NOT be called (actual callCount=%@)'.fmt(delegate.rangeCallCount));
64
+ }
65
+
66
+ same(delegate.rangeIndexes, eindexes, 'range observer should be called with expected indexes');
67
+ }
68
+
69
+ }
70
+
71
+
72
+ module("SC.TreeItemObserver - Flat Array Use Case", {
73
+ setup: function() {
74
+ content = "1 2 3 4 5".w().map(function(x) {
75
+ return TestObject.create({ title: x });
76
+ });
77
+
78
+ root = TestObject.create({
79
+ title: "ROOT",
80
+ children: content,
81
+ isExpanded: YES
82
+ });
83
+
84
+ flattened = content.slice();
85
+
86
+ delegate = Delegate.create();
87
+
88
+ extra = TestObject.create({ title: "EXTRA" });
89
+
90
+ obs = SC.TreeItemObserver.create({ delegate: delegate, item: root });
91
+
92
+ obs.addRangeObserver(null, delegate, delegate.rangeDidChange);
93
+ },
94
+
95
+ teardown: function() {
96
+ if (obs) obs.destroy(); // cleanup
97
+ content = delegate = obs = null ;
98
+ }
99
+ });
100
+
101
+
102
+ // ..........................................................
103
+ // LENGTH
104
+ //
105
+
106
+ test("length on create", function() {
107
+ equals(obs.get('length'), 5, 'should have length of array on create');
108
+ });
109
+
110
+ test("length after replace", function() {
111
+ equals(obs.get('length'), 5, 'precond - should have length of array on create');
112
+
113
+ SC.run(function() { content.replace(2,1, [extra]); }); // replace
114
+ equals(obs.get('length'), 5, 'length should not change');
115
+ });
116
+
117
+ test("length after insert", function() {
118
+ equals(obs.get('length'), 5, 'precond - should have length of array on create');
119
+
120
+ SC.run(function() { content.insertAt(2, extra); });
121
+ equals(obs.get('length'), 6, 'length should change');
122
+ });
123
+
124
+ test("length after remove", function() {
125
+ equals(obs.get('length'), 5, 'precond - should have length of array on create');
126
+
127
+ SC.run(function() { content.removeAt(2); });
128
+ equals(obs.get('length'), 4, 'length should change');
129
+ });
130
+
131
+ // ..........................................................
132
+ // OBJECT AT
133
+ //
134
+
135
+ test("objectAt on create", function() {
136
+ verifyObjectAt(obs, flattened, "on create");
137
+ });
138
+
139
+ test("objectAt after replace", function() {
140
+
141
+ verifyObjectAt(obs, flattened, "PRECOND"); // verify initial state
142
+
143
+ SC.run(function() { content.replace(2,1, [extra]); }); // replace
144
+ flattened[2] = extra;
145
+
146
+ var change = SC.IndexSet.create(2);
147
+ verifyObjectAt(obs, flattened, change, "on create");
148
+ });
149
+
150
+ test("objectAt after insert", function() {
151
+ verifyObjectAt(obs, flattened, "PRECOND"); // verify initial state
152
+
153
+ SC.run(function() { content.insertAt(2,extra); }); // replace
154
+ flattened.insertAt(2, extra);
155
+
156
+ var change = SC.IndexSet.create(2, flattened.length-2);
157
+ verifyObjectAt(obs, flattened, change, "after insert");
158
+ });
159
+
160
+ test("objectAt after remove", function() {
161
+ verifyObjectAt(obs, flattened, "PRECOND"); // verify initial state
162
+
163
+ SC.run(function() { content.removeAt(2); }); // replace
164
+ flattened.removeAt(2);
165
+
166
+
167
+ var change = SC.IndexSet.create(2, flattened.length-1);
168
+ verifyObjectAt(obs, flattened, change, "after remove");
169
+ });
170
+
171
+ // ..........................................................
172
+ // MODIFYING OBSERVER -> MODEL
173
+ //
174
+
175
+ test("adding an object to end", function() {
176
+
177
+ var expected = content.slice();
178
+
179
+ SC.run(function() { obs.pushObject(extra); });
180
+ flattened.pushObject(extra);
181
+ expected.pushObject(extra);
182
+
183
+ // verify round trip
184
+ var change = SC.IndexSet.create(flattened.length-1,1);
185
+ verifyObjectAt(obs, flattened, change, 'after pushing object');
186
+
187
+ // verify content change
188
+ same(content, expected, 'content should have new extra item');
189
+ });
190
+
191
+ test("removing object at end", function() {
192
+
193
+ var expected = content.slice();
194
+
195
+ SC.run(function() { obs.popObject(); });
196
+ flattened.popObject();
197
+ expected.popObject();
198
+
199
+ // verify round trip
200
+ var change = SC.IndexSet.create(flattened.length,1);
201
+ verifyObjectAt(obs, flattened, change, 'after removing object');
202
+
203
+ // verify content change
204
+ same(content, expected, 'content should have new extra item');
205
+ });
206
+
207
+ test("adding an object to start", function() {
208
+
209
+ var expected = content.slice();
210
+
211
+ SC.run(function() { obs.insertAt(0, extra); });
212
+ flattened.insertAt(0, extra);
213
+ expected.insertAt(0, extra);
214
+
215
+ // verify round trip
216
+ var change = SC.IndexSet.create(0, flattened.length);
217
+ verifyObjectAt(obs, flattened, change, 'after pushing object');
218
+
219
+ // verify content change
220
+ same(content, expected, 'content should have new extra item');
221
+ });
222
+
223
+ test("remove an object to start", function() {
224
+
225
+ var expected = content.slice();
226
+
227
+ SC.run(function() { obs.removeAt(0); });
228
+ flattened.removeAt(0);
229
+ expected.removeAt(0);
230
+
231
+ // verify round trip
232
+ var change = SC.IndexSet.create(0, flattened.length+1);
233
+ verifyObjectAt(obs, flattened, change, 'after removing object');
234
+
235
+ // verify content change
236
+ same(content, expected, 'content should have new extra item');
237
+ });
238
+
239
+ test("adding object in middle", function() {
240
+
241
+ var expected = content.slice();
242
+
243
+ SC.run(function() { obs.insertAt(2, extra); });
244
+ flattened.insertAt(2, extra);
245
+ expected.insertAt(2, extra);
246
+
247
+ // verify round trip
248
+ var change = SC.IndexSet.create(2, flattened.length-2);
249
+ verifyObjectAt(obs, flattened, change, 'after adding object');
250
+
251
+ // verify content change
252
+ same(content, expected, 'content should have new extra item');
253
+ });
254
+
255
+ test("removing object in middle", function() {
256
+
257
+ var expected = content.slice();
258
+
259
+ SC.run(function() { obs.removeAt(2); });
260
+ flattened.removeAt(2);
261
+ expected.removeAt(2);
262
+
263
+ // verify round trip
264
+ var change = SC.IndexSet.create(2, flattened.length-1);
265
+ verifyObjectAt(obs, flattened, change, 'after removing object');
266
+
267
+ // verify content change
268
+ same(content, expected, 'content should have new extra item');
269
+ });
270
+
271
+ test("replace object in middle", function() {
272
+
273
+ var expected = content.slice();
274
+
275
+ SC.run(function() { obs.replace(2, 1, [extra]); });
276
+ flattened.replace(2, 1, [extra]);
277
+ expected.replace(2, 1, [extra]);
278
+
279
+ // verify round trip
280
+ var change = SC.IndexSet.create(2, 1);
281
+ verifyObjectAt(obs, flattened, change, 'after replacing object');
282
+
283
+ // verify content change
284
+ same(content, expected, 'content should have new extra item');
285
+ });
286
+
287
+ // ..........................................................
288
+ // SC.COLLECTION CONTENT SUPPORT
289
+ //
290
+
291
+ test("contentGroupIndexes - not grouped", function() {
292
+ equals(delegate.get('treeItemIsGrouped'), NO, 'precond - delegate.treeItemIsGrouped == NO');
293
+ equals(obs.contentGroupIndexes(null, obs), null, 'contentGroupIndexes should be null');
294
+
295
+ var idx, len = obs.get('length');
296
+ for(idx=0;idx<len;idx++) {
297
+ equals(obs.contentIndexIsGroup(null, obs, idx), NO, 'obs.contentIndexIsGroup(null, obs, %@) should be NO'.fmt(idx));
298
+ }
299
+ });
300
+
301
+ test("contentGroupIndexes - grouped", function() {
302
+ delegate.set('treeItemIsGrouped', YES);
303
+ equals(delegate.get('treeItemIsGrouped'), YES, 'precond - delegate.treeItemIsGrouped == YES');
304
+ same(obs.contentGroupIndexes(null, obs), SC.IndexSet.create(0, obs.get('length')), 'contentGroupIndexes should cover entire set');
305
+
306
+ var idx, len = obs.get('length');
307
+ for(idx=0;idx<len;idx++) {
308
+ equals(obs.contentIndexIsGroup(null, obs, idx), YES, 'obs.contentIndexIsGroup(null, obs, %@) should be YES'.fmt(idx));
309
+ }
310
+ });
311
+
312
+ test("contentIndexOutlineLevel", function() {
313
+ var idx, len = obs.get('length');
314
+ for(idx=0;idx<len;idx++) {
315
+ equals(obs.contentIndexOutlineLevel(null, obs, idx), 0, 'obs.contentIndexOutlineLevel(null, obs, %@)'.fmt(idx));
316
+ }
317
+ });
318
+
319
+ test("contentIndexDisclosureState", function() {
320
+ var idx, len = obs.get('length');
321
+ for(idx=0;idx<len;idx++) {
322
+ equals(obs.contentIndexDisclosureState(null, obs, idx), SC.LEAF_NODE, 'obs.contentIndexDisclosureState(null, obs, %@) should eql SC.LEAF_NODE'.fmt(idx));
323
+ }
324
+ });
325
+
@@ -0,0 +1,718 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
4
+ // Portions ©2008-2009 Apple, Inc. All rights reserved.
5
+ // License: Licened under MIT license (see license.js)
6
+ // ==========================================================================
7
+
8
+ // The TreeItemObserver is tested based on the common use cases.
9
+ /*globals throws */
10
+
11
+ var content, delegate, flattened, obs, extra, extrachild, root;
12
+
13
+ // default delegate class. Does the bare minimum for tree item to function
14
+ var Delegate = SC.Object.extend(SC.TreeItemContent, {
15
+
16
+ treeItemChildrenKey: "children",
17
+ treeItemIsExpandedKey: "isExpanded",
18
+
19
+ // This method is used to record range change info
20
+
21
+ rangeIndexes: null,
22
+ rangeCallCount: 0,
23
+
24
+ rangeDidChange: function(array, objects, key, indexes) {
25
+ this.rangeCallCount++;
26
+ this.rangeIndexes = indexes.frozenCopy();
27
+ }
28
+
29
+ });
30
+
31
+ var TestObject = SC.Object.extend({
32
+ toString: function() { return "TestObject(%@)".fmt(this.get('title')); }
33
+ });
34
+
35
+ /**
36
+ Verifies that the passed observer object has the proper content. This will
37
+ iterate over the passed expected array, calling objectAt() on the observer
38
+ to verify that it matches. If you passed the expected index set, it will
39
+ also verify that the range observer on the observer was fire with the
40
+ matching set of indexes.
41
+
42
+ Finally, pass an optional description.
43
+ */
44
+ function verifyObjectAt(obs, expected, eindexes, desc) {
45
+ var idx, len = expected.get('length'), actual;
46
+
47
+ // eindexes is optional
48
+ if (desc === undefined) {
49
+ desc = eindexes;
50
+ eindexes = undefined;
51
+ }
52
+
53
+ equals(obs.get('length'), len, "%@ - length should match".fmt(desc));
54
+ for(idx=0;idx<len;idx++) {
55
+ actual = obs.objectAt(idx);
56
+ equals(actual, expected[idx], "%@ - observer.objectAt(%@) should match expected".fmt(desc, idx));
57
+ }
58
+
59
+ if (eindexes !== undefined) {
60
+ if (eindexes) {
61
+ ok(delegate.rangeCallCount>0, 'range observer should be called (actual callCount=%@)'.fmt(delegate.rangeCallCount));
62
+ } else {
63
+ ok(delegate.rangeCallCount===0, 'range observer should NOT be called (actual callCount=%@)'.fmt(delegate.rangeCallCount));
64
+ }
65
+
66
+ same(delegate.rangeIndexes, eindexes, 'range observer should be called with expected indexes');
67
+ }
68
+
69
+ }
70
+
71
+
72
+ module("SC.TreeItemObserver - Group Use Case", {
73
+ setup: function() {
74
+ content = [
75
+ TestObject.create({
76
+ isGroup: YES,
77
+ title: "A",
78
+ isExpanded: YES,
79
+ outline: 0,
80
+ children: "0 1 2 3 4".w().map(function(x) {
81
+ return TestObject.create({
82
+ title: "A.%@".fmt(x), outline: 1
83
+ });
84
+ })
85
+ }),
86
+
87
+ TestObject.create({
88
+ isGroup: YES,
89
+ title: "B",
90
+ isExpanded: YES,
91
+ outline: 0,
92
+ children: "0 1 2 3 4".w().map(function(x) {
93
+ return TestObject.create({
94
+ title: "B.%@".fmt(x), outline: 1
95
+ });
96
+ })
97
+ }),
98
+
99
+ TestObject.create({
100
+ isGroup: YES,
101
+ title: "C",
102
+ isExpanded: NO,
103
+ outline: 0,
104
+ children: "0 1 2 3 4".w().map(function(x) {
105
+ return TestObject.create({
106
+ title: "C.%@".fmt(x), outline: 1
107
+ });
108
+ })
109
+ })];
110
+
111
+ root = TestObject.create({
112
+ title: "ROOT",
113
+ children: content,
114
+ isExpanded: YES
115
+ });
116
+
117
+
118
+ extra = TestObject.create({ title: "EXTRA" });
119
+
120
+ extrachild = TestObject.create({
121
+ title: "EXTRA",
122
+ isExpanded: YES,
123
+ children: "0 1 2".w().map(function(x) {
124
+ return TestObject.create({ title: "EXTRA.%@".fmt(x) });
125
+ })
126
+ });
127
+
128
+ flattened = [
129
+ content[0],
130
+ content[0].children[0],
131
+ content[0].children[1],
132
+ content[0].children[2],
133
+ content[0].children[3],
134
+ content[0].children[4],
135
+ content[1],
136
+ content[1].children[0],
137
+ content[1].children[1],
138
+ content[1].children[2],
139
+ content[1].children[3],
140
+ content[1].children[4],
141
+ content[2]];
142
+
143
+ delegate = Delegate.create();
144
+
145
+ // create root observer
146
+ obs = SC.TreeItemObserver.create({ delegate: delegate, item: root });
147
+ obs.addRangeObserver(null, delegate, delegate.rangeDidChange);
148
+ },
149
+
150
+ teardown: function() {
151
+ if (obs) obs.destroy(); // cleanup
152
+ content = delegate = obs = null ;
153
+ }
154
+ });
155
+
156
+
157
+ // ..........................................................
158
+ // LENGTH
159
+ //
160
+
161
+ test("length on create", function() {
162
+ equals(obs.get('length'), flattened.length, 'should have length of array on create');
163
+ });
164
+
165
+
166
+ // ..........................................................
167
+ // OBJECT AT
168
+ //
169
+
170
+ test("objectAt on create", function() {
171
+ verifyObjectAt(obs, flattened, null, "on create");
172
+ });
173
+
174
+ // ..........................................................
175
+ // CHANGING MODEL LAYER CONTENT - TOP LEVEL/NO CHILDREN
176
+ //
177
+
178
+ test("pushing object to top level with no children", function() {
179
+
180
+ SC.run(function() { content.pushObject(extra); });
181
+ flattened.pushObject(extra);
182
+
183
+ var change = SC.IndexSet.create(flattened.length-1);
184
+ verifyObjectAt(obs, flattened, change, "after pushing top level object");
185
+ });
186
+
187
+ test("popping object to top level with no children", function() {
188
+ SC.run(function() { content.popObject(); });
189
+ flattened.popObject();
190
+
191
+ var change = SC.IndexSet.create(flattened.length);
192
+ verifyObjectAt(obs, flattened, change, "after popping top level object");
193
+ });
194
+
195
+ test("inserting object in middle of top level with no children", function() {
196
+ SC.run(function() { content.insertAt(2,extra); });
197
+ flattened.insertAt(12, extra);
198
+
199
+ var change = SC.IndexSet.create(12,flattened.length-12);
200
+ verifyObjectAt(obs, flattened, change, "after pushing top level object");
201
+ });
202
+
203
+ test("replacing object at top level with no children", function() {
204
+ SC.run(function() { content.replace(2,1, [extra]); });
205
+ flattened.replace(12, 1, [extra]);
206
+
207
+ var change = SC.IndexSet.create(12);
208
+ verifyObjectAt(obs, flattened, change, "after pushing top level object");
209
+ });
210
+
211
+ test("removing object at top level with no children", function() {
212
+ SC.run(function() { content.removeAt(2); });
213
+ flattened.removeAt(12);
214
+
215
+ var change = SC.IndexSet.create(12, flattened.length-11);
216
+ verifyObjectAt(obs, flattened, change,"after pushing top level object");
217
+ });
218
+
219
+ // ..........................................................
220
+ // CHANGING MODEL LAYER CONTENT - GROUP LEVEL
221
+ //
222
+
223
+ test("pushing object to group", function() {
224
+ var base = content[1].children;
225
+ SC.run(function() { base.pushObject(extra); });
226
+ flattened.insertAt(12, extra);
227
+
228
+ // changed reflect nearest top-level group
229
+ var change = SC.IndexSet.create(6, flattened.length-6);
230
+ verifyObjectAt(obs, flattened, change, "after pushing");
231
+ });
232
+
233
+ test("popping object from group", function() {
234
+ var base = content[1].children;
235
+ SC.run(function() { base.popObject(); });
236
+ flattened.removeAt(11);
237
+
238
+ // changed reflect nearest top-level group
239
+ var change = SC.IndexSet.create(6, flattened.length-5);
240
+ verifyObjectAt(obs, flattened, change, "after popping");
241
+ });
242
+
243
+ test("inserting object in middle of group", function() {
244
+ var base = content[1].children;
245
+ SC.run(function() { base.insertAt(2,extra); });
246
+ flattened.insertAt(9, extra);
247
+
248
+ // changed reflect nearest top-level group
249
+ var change = SC.IndexSet.create(6, flattened.length-6);
250
+ verifyObjectAt(obs, flattened, change, "after insert");
251
+ });
252
+
253
+ test("replacing object in group", function() {
254
+ var base = content[1].children;
255
+ SC.run(function() { base.replace(2,1, [extra]); });
256
+ flattened.replace(9, 1, [extra]);
257
+
258
+ // changed reflect nearest top-level group
259
+ var change = SC.IndexSet.create(6, flattened.length-7);
260
+ verifyObjectAt(obs, flattened, change, "after replacing");
261
+ });
262
+
263
+ test("removing object in gorup", function() {
264
+ var base = content[1].children;
265
+ SC.run(function() { base.removeAt(2); });
266
+ flattened.removeAt(9);
267
+
268
+ // changed reflect nearest top-level group
269
+ var change = SC.IndexSet.create(6, flattened.length-5);
270
+ verifyObjectAt(obs, flattened, change, "after removing");
271
+ });
272
+
273
+ test("replacing group children array", function() {
274
+ var children = extrachild.children;
275
+ SC.run(function() { content[1].set('children', children); });
276
+ flattened.replace(7,5,children);
277
+
278
+ // changed reflect nearest top-level group
279
+ var change = SC.IndexSet.create(6, flattened.length-4);
280
+ verifyObjectAt(obs, flattened, change, "after removing");
281
+ });
282
+
283
+ test("changing expansion property on group", function() {
284
+ SC.run(function() { content[1].set('isExpanded', NO); });
285
+ flattened.removeAt(7,5);
286
+
287
+ // changed reflect nearest top-level group
288
+ var change = SC.IndexSet.create(6, flattened.length-1);
289
+ verifyObjectAt(obs, flattened, change, "after removing");
290
+ });
291
+
292
+ // ..........................................................
293
+ // CHANGING MODEL LAYER CONTENT - TOP LEVEL, W CHILDREN, NOT EXPANDED
294
+ //
295
+
296
+ test("pushing object to top level with children, not expanded", function() {
297
+ extrachild.set('isExpanded', NO);
298
+ SC.run(function() { content.pushObject(extrachild); });
299
+ flattened.pushObject(extrachild);
300
+ verifyObjectAt(obs, flattened, "after pushing top level object");
301
+ });
302
+
303
+ test("inserting object in middle of top level with children, not expanded", function() {
304
+ extrachild.set('isExpanded', NO);
305
+ SC.run(function() { content.insertAt(2,extrachild); });
306
+ flattened.insertAt(12, extrachild);
307
+ verifyObjectAt(obs, flattened, "after pushing top level object");
308
+ });
309
+
310
+ // ..........................................................
311
+ // CHANGING MODEL LAYER CONTENT - TOP LEVEL/CHILDREN/EXPANDED
312
+ //
313
+
314
+ test("pushing object to top level with children", function() {
315
+ SC.run(function() { content.pushObject(extrachild); });
316
+ flattened.replace(flattened.length,0,[extrachild]);
317
+ flattened.replace(flattened.length,0,extrachild.children);
318
+
319
+ verifyObjectAt(obs, flattened, "after pushing top level object");
320
+ });
321
+
322
+ test("popping object at top level with children", function() {
323
+ SC.run(function() {
324
+ content.popObject(); // first one has no children
325
+ content.popObject(); // second one has children
326
+ });
327
+
328
+ flattened.length=6; // truncate
329
+ verifyObjectAt(obs, flattened, "after popping top level object");
330
+ });
331
+
332
+ test("inserting object in middle of top level with children", function() {
333
+ SC.run(function() { content.insertAt(2,extrachild); });
334
+ flattened.replace(12,0,[extrachild]);
335
+ flattened.replace(13,0,extrachild.children);
336
+ verifyObjectAt(obs, flattened, "after pushing top level object");
337
+ });
338
+
339
+ test("inserting object in middle of top level between items with children", function() {
340
+ SC.run(function() { content.insertAt(1,extrachild); });
341
+ flattened.replace(6,0,[extrachild]);
342
+ flattened.replace(7,0,extrachild.children);
343
+ verifyObjectAt(obs, flattened, "after pushing top level object");
344
+ });
345
+
346
+ test("replacing object at top level with no children => children", function() {
347
+ SC.run(function() { content.replace(2,1, [extrachild]); });
348
+ flattened.replace(12,1,[extrachild]);
349
+ flattened.replace(13,0,extrachild.children);
350
+ verifyObjectAt(obs, flattened, "after inserting top level object");
351
+ });
352
+
353
+ test("replacing object at top level with children => children", function() {
354
+ SC.run(function() { content.replace(1,1, [extrachild]); });
355
+ flattened.replace(6,6,[extrachild]);
356
+ flattened.replace(7,0,extrachild.children);
357
+ verifyObjectAt(obs, flattened, "after replacing top level object");
358
+ });
359
+
360
+ test("removing object at top level with children", function() {
361
+ SC.run(function() { content.removeAt(1); });
362
+ flattened.replace(6,6,null);
363
+ verifyObjectAt(obs, flattened, "after removing top level object");
364
+ });
365
+
366
+ // ..........................................................
367
+ // MODIFYING OBSERVER -> MODEL, TOP-LEVEL
368
+ //
369
+
370
+ test("adding an group to end", function() {
371
+ var expected = content.slice();
372
+
373
+ SC.run(function() { obs.pushObject(extrachild); });
374
+ flattened.pushObject(extrachild);
375
+ flattened.replace(flattened.length, 0, extrachild.children);
376
+ expected.pushObject(extrachild);
377
+
378
+ // verify round trip
379
+ var change = SC.IndexSet.create(flattened.length-4,4);
380
+ verifyObjectAt(obs, flattened, change, 'after pushing object - should have item and its children');
381
+
382
+ // verify content change
383
+ same(content, expected, 'content should have new extra item');
384
+ });
385
+
386
+ test("adding regular item to end", function() {
387
+
388
+ var expected = content.slice();
389
+
390
+ SC.run(function() { obs.pushObject(extra); });
391
+ flattened.pushObject(extra);
392
+ expected.pushObject(extra);
393
+
394
+ // verify round trip
395
+ var change = SC.IndexSet.create(flattened.length-1,1);
396
+ verifyObjectAt(obs, flattened, change, 'after pushing object');
397
+
398
+ // verify content change
399
+ same(content, expected, 'content should have new extra item');
400
+ });
401
+
402
+ test("adding an group to beginning", function() {
403
+
404
+ var expected = content.slice();
405
+
406
+ SC.run(function() { obs.insertAt(0, extrachild); });
407
+ flattened.insertAt(0, extrachild);
408
+ flattened.replace(1, 0, extrachild.children);
409
+ expected.insertAt(0,extrachild);
410
+
411
+ // verify round trip
412
+ var change = SC.IndexSet.create(0,flattened.length);
413
+ verifyObjectAt(obs, flattened, change, 'after pushing object - should have item and its children');
414
+
415
+ // verify content change
416
+ same(content, expected, 'content should have new extra item');
417
+ });
418
+
419
+ test("adding regular item to beginning", function() {
420
+
421
+ var expected = content.slice();
422
+
423
+ SC.run(function() { obs.insertAt(0, extra); });
424
+ flattened.insertAt(0, extra);
425
+ expected.insertAt(0, extra);
426
+
427
+ // verify round trip
428
+ var change = SC.IndexSet.create(0,flattened.length);
429
+ verifyObjectAt(obs, flattened, change, 'after pushing object');
430
+
431
+ // verify content change
432
+ same(content, expected, 'content should have new extra item');
433
+ });
434
+
435
+ test("adding an group to middle", function() {
436
+
437
+ var expected = content.slice();
438
+
439
+ SC.run(function() { obs.replace(6, 0, extrachild); });
440
+ flattened.insertAt(6, extrachild);
441
+ flattened.replace(7, 0, extrachild.children);
442
+ expected.insertAt(1,extrachild);
443
+
444
+ // verify round trip
445
+ var change = SC.IndexSet.create(6,flattened.length-6);
446
+ verifyObjectAt(obs, flattened, change, 'after pushing object - should have item and its children');
447
+
448
+ // verify content change
449
+ same(content, expected, 'content should have new extra item');
450
+ });
451
+
452
+ test("adding regular item to middle", function() {
453
+
454
+ var expected = content.slice();
455
+
456
+ SC.run(function() { obs.insertAt(6, extra); });
457
+ flattened.insertAt(6, extra);
458
+ expected.insertAt(1, extra);
459
+
460
+ // verify round trip
461
+ var change = SC.IndexSet.create(6,flattened.length-6);
462
+ verifyObjectAt(obs, flattened, change, 'after pushing object');
463
+
464
+ // verify content change
465
+ same(content, expected, 'content should have new extra item');
466
+ });
467
+
468
+ test("removing a group item", function() {
469
+
470
+ var expected = content.slice();
471
+
472
+ SC.run(function() { obs.removeAt(6); });
473
+ flattened.removeAt(6,6);
474
+ expected.removeAt(1);
475
+
476
+ // verify round trip
477
+ var change = SC.IndexSet.create(6,flattened.length);
478
+ verifyObjectAt(obs, flattened, change, 'after removing object - should remove children');
479
+
480
+ // verify content change
481
+ same(content, expected, 'content should have removed item');
482
+ });
483
+
484
+ test("removing entire group", function() {
485
+
486
+ var expected = content.slice();
487
+
488
+ // note: select entire group here...
489
+ SC.run(function() { obs.removeAt(6,6); });
490
+ flattened.removeAt(6,6);
491
+ expected.removeAt(1);
492
+
493
+ // verify round trip
494
+ var change = SC.IndexSet.create(6,flattened.length);
495
+ verifyObjectAt(obs, flattened, change, 'after removing object - should remove children');
496
+
497
+ // verify content change
498
+ same(content, expected, 'content should have removed item');
499
+ });
500
+
501
+ test("removing partial group", function() {
502
+
503
+ var expected = content.slice();
504
+
505
+ // note: select entire group here...
506
+ should_throw(function() {
507
+ obs.removeAt(3,6);
508
+ }, Error, "should throw error when trying to remove uneven boundaries");
509
+
510
+ // verify no change
511
+ var change = null;
512
+ verifyObjectAt(obs, flattened, change, 'after removing object - should remove children');
513
+
514
+ // verify content change
515
+ same(content, expected, 'content should have removed item');
516
+ });
517
+
518
+ test("removing group header and some of the children", function() {
519
+
520
+ var expected = content.slice();
521
+
522
+ // note: select entire group here...
523
+ should_throw(function() {
524
+ obs.removeAt(6, 3);
525
+ }, Error, "should throw error when trying to remove uneven boundaries");
526
+
527
+ // verify no change
528
+ var change = null;
529
+ verifyObjectAt(obs, flattened, change, 'after removing object - should remove children');
530
+
531
+ // verify content change
532
+ same(content, expected, 'content should have removed item');
533
+ });
534
+
535
+ // ..........................................................
536
+ // MODIFYING OBSERVER -> MODEL, GROUP-LEVEL
537
+ //
538
+
539
+ test("adding regular item to end of group", function() {
540
+
541
+ var expected = content[0].children.slice();
542
+
543
+ SC.run(function() {
544
+ obs.replace(6, 0, [extra], SC.DROP_AFTER);
545
+ });
546
+ flattened.replace(6, 0, [extra]);
547
+ expected.pushObject(extra);
548
+
549
+ // verify round trip - change covers effected group
550
+ var change = SC.IndexSet.create(0, flattened.length);
551
+ verifyObjectAt(obs, flattened, change, 'after pushing object');
552
+
553
+ // verify content change
554
+ same(content[0].children, expected, 'content.children should change');
555
+ });
556
+
557
+ test("removing regular item to end of group", function() {
558
+
559
+ var base = content[0].children,
560
+ expected = base.slice();
561
+
562
+ SC.run(function() {
563
+ obs.removeAt(5);
564
+ });
565
+ flattened.removeAt(5);
566
+ expected.popObject();
567
+
568
+ // verify round trip - change covers effected group
569
+ var change = SC.IndexSet.create(0, flattened.length+1);
570
+ verifyObjectAt(obs, flattened, change, 'after removing object');
571
+
572
+ // verify content change
573
+ same(base, expected, 'content.children should change');
574
+ });
575
+
576
+ test("adding regular item to beginning", function() {
577
+
578
+ var base = content[0].children,
579
+ expected = base.slice();
580
+
581
+ SC.run(function() { obs.insertAt(1, extra); });
582
+ flattened.insertAt(1, extra);
583
+ expected.insertAt(0, extra);
584
+
585
+ // verify round trip
586
+ var change = SC.IndexSet.create(0,flattened.length);
587
+ verifyObjectAt(obs, flattened, change, 'after pushing object - should have item');
588
+
589
+ // verify content change
590
+ same(base, expected, 'content should have new extra item');
591
+ });
592
+
593
+ test("removing regular item to beginning", function() {
594
+
595
+ var base = content[0].children,
596
+ expected = base.slice();
597
+
598
+ SC.run(function() { obs.removeAt(1); });
599
+ flattened.removeAt(1);
600
+ expected.removeAt(0);
601
+
602
+ // verify round trip
603
+ var change = SC.IndexSet.create(0,flattened.length+1);
604
+ verifyObjectAt(obs, flattened, change, 'after pushing object - should have item');
605
+
606
+ // verify content change
607
+ same(base, expected, 'content should have new extra item');
608
+ });
609
+
610
+ test("adding regular item to middle", function() {
611
+
612
+ var base = content[0].children,
613
+ expected = base.slice();
614
+
615
+ SC.run(function() { obs.insertAt(3, extra); });
616
+ flattened.insertAt(3, extra);
617
+ expected.insertAt(2, extra);
618
+
619
+ // verify round trip
620
+ var change = SC.IndexSet.create(0,flattened.length);
621
+ verifyObjectAt(obs, flattened, change, 'after adding object');
622
+
623
+ // verify content change
624
+ same(base, expected, 'content should have new extra item');
625
+ });
626
+
627
+ test("removing regular item to middle", function() {
628
+
629
+ var base = content[0].children,
630
+ expected = base.slice();
631
+
632
+ SC.run(function() { obs.removeAt(3); });
633
+ flattened.removeAt(3);
634
+ expected.removeAt(2);
635
+
636
+ // verify round trip
637
+ var change = SC.IndexSet.create(0,flattened.length+1);
638
+ verifyObjectAt(obs, flattened, change, 'after adding object');
639
+
640
+ // verify content change
641
+ same(base, expected, 'content should have new extra item');
642
+ });
643
+
644
+ test("replacing regular items in middle", function() {
645
+
646
+ var base = content[0].children,
647
+ expected = base.slice();
648
+
649
+ SC.run(function() { obs.replace(3, 3, [extra]); });
650
+ flattened.replace(3, 3, [extra]);
651
+ expected.replace(2, 3, [extra]);
652
+
653
+ // verify round trip
654
+ var change = SC.IndexSet.create(0,flattened.length+2);
655
+ verifyObjectAt(obs, flattened, change, 'after replacing object');
656
+
657
+ // verify content change
658
+ same(base, expected, 'content should have new extra item');
659
+ });
660
+
661
+ // ..........................................................
662
+ // SC.COLLECTION CONTENT SUPPORT
663
+ //
664
+
665
+ test("contentGroupIndexes - not grouped", function() {
666
+ equals(delegate.get('treeItemIsGrouped'), NO, 'precond - delegate.treeItemIsGrouped == NO');
667
+ equals(obs.contentGroupIndexes(null, obs), null, 'contentGroupIndexes should be null');
668
+
669
+ var idx, len = obs.get('length');
670
+ for(idx=0;idx<len;idx++) {
671
+ equals(obs.contentIndexIsGroup(null, obs, idx), NO, 'obs.contentIndexIsGroup(null, obs, %@) should be NO'.fmt(idx));
672
+ }
673
+ });
674
+
675
+ test("contentGroupIndexes - grouped", function() {
676
+ delegate.set('treeItemIsGrouped', YES);
677
+ equals(delegate.get('treeItemIsGrouped'), YES, 'precond - delegate.treeItemIsGrouped == YES');
678
+
679
+ var set = SC.IndexSet.create(0).add(6).add(12);
680
+ same(obs.contentGroupIndexes(null, obs), set, 'contentGroupIndexes should cover just top leve items');
681
+
682
+ var idx, len = obs.get('length');
683
+ for(idx=0;idx<len;idx++) {
684
+ equals(obs.contentIndexIsGroup(null, obs, idx), set.contains(idx), 'obs.contentIndexIsGroup(null, obs, %@)'.fmt(idx));
685
+ }
686
+ });
687
+
688
+ test("contentIndexOutlineLevel", function() {
689
+ var idx, len = obs.get('length');
690
+ for(idx=0;idx<len;idx++) {
691
+ var expected = flattened[idx].outline;
692
+
693
+ equals(obs.contentIndexOutlineLevel(null, obs, idx), expected, 'obs.contentIndexOutlineLevel(null, obs, %@)'.fmt(idx));
694
+ }
695
+ });
696
+
697
+ test("contentIndexDisclosureState", function() {
698
+ var idx, len = obs.get('length');
699
+ for(idx=0;idx<len;idx++) {
700
+ var expected = flattened[idx].isExpanded;
701
+ expected = (expected === NO) ? SC.BRANCH_CLOSED : (expected ? SC.BRANCH_OPEN : SC.LEAF_NODE);
702
+
703
+ var str ;
704
+ switch(expected) {
705
+ case SC.BRANCH_CLOSED:
706
+ str = "SC.BRANCH_CLOSED";
707
+ break;
708
+ case SC.BRANCH_OPEN:
709
+ str = "SC.BRANCH_OPEN";
710
+ break;
711
+ default:
712
+ str = "SC.LEAF_NODE";
713
+ break;
714
+ }
715
+
716
+ equals(obs.contentIndexDisclosureState(null, obs, idx), expected, 'obs.contentIndexDisclosureState(null, obs, %@) should eql %@'.fmt(idx,str));
717
+ }
718
+ });