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.
- data/Buildfile +4 -2
- data/frameworks/sproutcore/Buildfile +3 -2
- data/frameworks/sproutcore/README +2 -1
- data/frameworks/sproutcore/apps/docs/core.js +27 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +14378 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image11.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image13.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image8.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -0
- data/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +9 -0
- data/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +22 -0
- data/frameworks/sproutcore/apps/{sc_jsdoc → docs}/english.lproj/strings.js +7 -7
- data/frameworks/sproutcore/apps/docs/main.js +30 -0
- data/frameworks/sproutcore/apps/tests/controllers/detail.js +16 -0
- data/frameworks/sproutcore/apps/tests/controllers/source.js +29 -0
- data/frameworks/sproutcore/apps/tests/controllers/target.js +26 -0
- data/frameworks/sproutcore/apps/tests/controllers/targets.js +65 -26
- data/frameworks/sproutcore/apps/tests/controllers/tests.js +14 -19
- data/frameworks/sproutcore/apps/tests/core.js +114 -16
- data/frameworks/sproutcore/apps/tests/data_source.js +96 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +22 -2
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +168 -22
- data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +14 -5
- data/frameworks/sproutcore/apps/tests/fixtures/target.js +81 -37
- data/frameworks/sproutcore/apps/tests/fixtures/test.js +38 -37
- data/frameworks/sproutcore/apps/tests/main.js +9 -20
- data/frameworks/sproutcore/apps/tests/models/target.js +74 -31
- data/frameworks/sproutcore/apps/tests/models/test.js +30 -2
- data/frameworks/sproutcore/{frameworks/desktop/mixins/collection_item.js → apps/tests/states/no_targets.js} +16 -12
- data/frameworks/sproutcore/apps/tests/states/ready.js +56 -0
- data/frameworks/sproutcore/apps/tests/states/ready_detail.js +41 -0
- data/frameworks/sproutcore/apps/tests/states/ready_empty.js +48 -0
- data/frameworks/sproutcore/apps/tests/states/ready_list.js +41 -0
- data/frameworks/sproutcore/apps/tests/states/ready_loading.js +44 -0
- data/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +31 -0
- data/frameworks/sproutcore/apps/tests/states/start.js +39 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/{test.js → detail.js} +3 -3
- data/frameworks/sproutcore/apps/tests/tests/controllers/source.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/target.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +3 -3
- data/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +15 -0
- data/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +26 -0
- data/frameworks/sproutcore/design/CollectionView State Charts.graffle +4848 -0
- data/frameworks/sproutcore/design/Design Charts.graffle +8788 -6375
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Preview.pdf +0 -0
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/data.plist +1452 -0
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/image8.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Preview.pdf +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/data.plist +24187 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image10.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image11.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image13.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image15.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image16.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image17.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image18.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image19.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image22.tiff +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image23.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image24.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image25.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image30.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image31.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image8.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image9.png +0 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +2 -2
- data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +66 -49
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +146 -31
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures_with_queries.js +238 -0
- data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +27 -11
- data/frameworks/sproutcore/frameworks/datastore/models/record.js +163 -32
- data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +67 -5
- data/frameworks/sproutcore/frameworks/datastore/system/many_array.js +157 -0
- data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +202 -19
- data/frameworks/sproutcore/frameworks/datastore/system/query.js +929 -78
- data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +143 -5
- data/frameworks/sproutcore/frameworks/datastore/system/store.js +443 -125
- data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +38 -3
- data/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +94 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +30 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +238 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +105 -16
- data/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +178 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +1 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +9 -8
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +6 -6
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +6 -6
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +3 -3
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +7 -7
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +4 -4
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +7 -7
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +7 -7
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare_records.js +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +165 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +82 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/find_all.js +362 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/parsing.js +170 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +43 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +60 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +67 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +2 -13
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +3 -4
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +73 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +15 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +4 -2
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +1 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +2 -2
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +1 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +2 -2
- data/frameworks/sproutcore/frameworks/debug/core.js +60 -0
- data/frameworks/sproutcore/frameworks/deprecated/core.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/server/server.js +0 -1
- data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/event.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/object.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +0 -1
- data/frameworks/sproutcore/frameworks/deprecated/system/string.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/coders/design.js +1 -2
- data/frameworks/sproutcore/frameworks/designer/coders/localization.js +1 -2
- data/frameworks/sproutcore/frameworks/designer/coders/object.js +1 -1
- data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +1 -1
- data/frameworks/sproutcore/frameworks/designer/ext/page.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +2 -3
- data/frameworks/sproutcore/frameworks/designer/views/designer.js +24 -8
- data/frameworks/sproutcore/frameworks/designer/views/label.js +1 -2
- data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/views/tab.js +1 -2
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +2 -2
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/drag.css +6 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +63 -10
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +5 -4
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/modal.css +5 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +1 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +5 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +1 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +1 -1
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +61 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +136 -79
- data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +55 -24
- data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +295 -147
- data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +18 -20
- data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +2 -2
- data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +4 -4
- data/frameworks/sproutcore/frameworks/desktop/system/drag.js +337 -231
- data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +3 -3
- data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +2 -2
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +46 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +4 -2
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +5 -6
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +11 -11
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +11 -7
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +9 -9
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +19 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +0 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +249 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +82 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +199 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +288 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +65 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +88 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +165 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +121 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +177 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +240 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +191 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +197 -39
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +141 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +182 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +183 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +133 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +132 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +56 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +167 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +127 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +30 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +8 -8
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +9 -9
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +45 -6
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +2 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +17 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +44 -29
- data/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +231 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/views/button.js +15 -4
- data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +8 -1
- data/frameworks/sproutcore/frameworks/desktop/views/collection.js +1739 -1123
- data/frameworks/sproutcore/frameworks/desktop/views/form.js +0 -1
- data/frameworks/sproutcore/frameworks/desktop/views/grid.js +13 -11
- data/frameworks/sproutcore/frameworks/desktop/views/list.js +405 -571
- data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +211 -74
- data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +319 -169
- data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +57 -51
- data/frameworks/sproutcore/frameworks/desktop/views/progress.js +2 -2
- data/frameworks/sproutcore/frameworks/desktop/views/scene.js +150 -2
- data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +92 -50
- data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +86 -63
- data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +38 -22
- data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +51 -12
- data/frameworks/sproutcore/frameworks/desktop/views/slider.js +2 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +17 -1087
- data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +3 -3
- data/frameworks/sproutcore/frameworks/desktop/views/split.js +35 -9
- data/frameworks/sproutcore/frameworks/desktop/views/stacked.js +101 -0
- data/frameworks/sproutcore/frameworks/desktop/views/tab.js +23 -22
- data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +382 -363
- data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +7 -279
- data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +212 -310
- data/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +109 -0
- data/frameworks/sproutcore/frameworks/foundation/core.js +25 -0
- data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +30 -8
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +19 -4
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +219 -3
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +1 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +30 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/english.lproj/text_field.css +19 -3
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +6 -1
- data/frameworks/sproutcore/frameworks/foundation/license.js +19 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +15 -7
- data/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +171 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +5 -5
- data/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +462 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +162 -84
- data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +33 -2
- data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +17 -3
- data/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +159 -0
- data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +49 -20
- data/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +887 -0
- data/frameworks/sproutcore/frameworks/foundation/system/application.js +36 -0
- data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +310 -62
- data/frameworks/sproutcore/frameworks/foundation/system/datetime.js +729 -0
- data/frameworks/sproutcore/frameworks/foundation/system/event.js +57 -21
- data/frameworks/sproutcore/frameworks/foundation/system/ready.js +11 -5
- data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +55 -16
- data/frameworks/sproutcore/frameworks/foundation/system/request.js +152 -27
- data/frameworks/sproutcore/frameworks/foundation/system/responder.js +120 -0
- data/frameworks/sproutcore/frameworks/foundation/system/responder_context.js +243 -0
- data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +29 -6
- data/frameworks/sproutcore/frameworks/foundation/system/routes.js +143 -102
- data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +9 -2
- data/frameworks/sproutcore/frameworks/foundation/system/utils.js +104 -9
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +182 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +193 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +64 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/single_case.js +136 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/empty_case.js +82 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/multiple_case.js +111 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_case.js +193 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_enumerable_case.js +179 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +108 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +35 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +128 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +17 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +325 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +718 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +484 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +28 -28
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +151 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +2 -2
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +12 -12
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +52 -14
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +27 -23
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +12 -10
- data/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +148 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +1 -1
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/methods.js +0 -0
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/ui.js +53 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +1 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +35 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisible.js +51 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +12 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +83 -3
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +4 -0
- data/frameworks/sproutcore/frameworks/foundation/views/container.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/views/field.js +27 -16
- data/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -1
- data/frameworks/sproutcore/frameworks/foundation/views/label.js +16 -6
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/views/text_field.js +39 -15
- data/frameworks/sproutcore/frameworks/foundation/views/view.js +328 -83
- data/frameworks/sproutcore/frameworks/runtime/README +1 -0
- data/frameworks/sproutcore/frameworks/runtime/core.js +110 -31
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +238 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +33 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +121 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +34 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +50 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +46 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +371 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +100 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +49 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +94 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +50 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +47 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +320 -110
- data/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +64 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +44 -6
- data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +142 -77
- data/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +104 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +298 -142
- data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +17 -11
- data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +55 -15
- data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +29 -5
- data/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +40 -0
- data/frameworks/sproutcore/frameworks/runtime/system/binding.js +39 -15
- data/frameworks/sproutcore/frameworks/runtime/system/index_set.js +1166 -0
- data/frameworks/sproutcore/frameworks/runtime/system/object.js +33 -15
- data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +201 -35
- data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +42 -15
- data/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +649 -0
- data/frameworks/sproutcore/frameworks/runtime/system/set.js +183 -54
- data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +20 -11
- data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +2 -2
- data/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +44 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +16 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +5 -5
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +57 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +21 -2
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +249 -129
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +11 -2
- data/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +55 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +81 -6
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +195 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +43 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +74 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +42 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +38 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +38 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +74 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +40 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +40 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +36 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +189 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +89 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +59 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +75 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +117 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +110 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +65 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +3 -3
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/add.js +92 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +17 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +85 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/isEqual.js +60 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +87 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +4 -25
- data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +39 -1
- data/frameworks/sproutcore/frameworks/testing/core.js +183 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/runner.css +126 -0
- data/frameworks/sproutcore/frameworks/testing/extras.js +0 -26
- data/frameworks/sproutcore/frameworks/testing/qunit.js +33 -25
- data/frameworks/sproutcore/frameworks/testing/system/dump.js +205 -0
- data/frameworks/sproutcore/frameworks/testing/system/equiv.js +201 -0
- data/frameworks/sproutcore/frameworks/testing/system/plan.js +691 -0
- data/frameworks/sproutcore/frameworks/testing/system/runner.js +209 -0
- data/frameworks/sproutcore/frameworks/testing/system/suite.js +228 -0
- data/frameworks/sproutcore/frameworks/testing/utils.js +8 -1
- data/frameworks/sproutcore/lib/index.rhtml +4 -1
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/100.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/102.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/110.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/120.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/127.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/24.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/26.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/27.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/28.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/29.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/30.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/31.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/33.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/37.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/41.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/99.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/100.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/102.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/110.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/120.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/127.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/24.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/26.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/27.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/28.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/29.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/30.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/31.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/33.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/37.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/41.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/99.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/100.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/102.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/110.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/120.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/127.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/24.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/26.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/27.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/28.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/29.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/30.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/31.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/33.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/37.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/41.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/99.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x-2.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-sprite.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-ysprite.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/shared-icons.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sproutcore-logo.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sticky-note.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +191 -193
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +11 -10
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +85 -4
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +15 -2
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +0 -26
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/list_item.css +30 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +9 -6
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +20 -11
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +192 -54
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +56 -24
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +13 -7
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +1 -4
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -1
- data/lib/sproutcore/builders/minify.rb +2 -2
- data/lib/sproutcore/builders/test.rb +1 -1
- data/lib/sproutcore/buildfile.rb +1 -0
- data/lib/sproutcore/rack/dev.rb +1 -1
- data/lib/sproutcore/rack/filesystem.rb +265 -0
- data/lib/sproutcore/rack/proxy.rb +11 -3
- data/lib/sproutcore/rack/service.rb +11 -1
- data/lib/sproutcore/tools.rb +11 -1
- data/lib/sproutcore/tools/server.rb +6 -4
- data/vendor/jsdoc/README.txt +151 -0
- data/vendor/jsdoc/changes.txt +47 -0
- metadata +263 -308
- data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +0 -149
- data/frameworks/sproutcore/apps/sc_jsdoc/core.js +0 -16
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +0 -17
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +0 -99
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/main.js +0 -27
- data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +0 -21
- data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +0 -209
- data/frameworks/sproutcore/apps/sc_qunit/core.js +0 -16
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +0 -17
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +0 -107
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +0 -15
- data/frameworks/sproutcore/apps/sc_qunit/main.js +0 -18
- data/frameworks/sproutcore/apps/sc_qunit/models/test.js +0 -24
- data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +0 -52
- data/frameworks/sproutcore/apps/tests/controllers/test.js +0 -20
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -83
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +0 -3
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +0 -10
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +0 -10
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +0 -110
- data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +0 -156
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +0 -118
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +0 -268
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +0 -433
- data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +0 -263
- data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +0 -25
- data/spec/buildtasks/manifest/spec_helper.rb +0 -35
- data/spec/buildtasks/target_spec.rb +0 -214
- data/spec/fixtures/builder_tests/Buildfile +0 -15
- data/spec/fixtures/builder_tests/apps/combine_test/a.js +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/b.js +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/c.js +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +0 -2
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +0 -4
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +0 -4
- data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
- data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +0 -15
- data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +0 -4
- data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +0 -7
- data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +0 -3
- data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +0 -8
- data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +0 -9
- data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +0 -12
- data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +0 -1
- data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +0 -3
- data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +0 -1
- data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +0 -1
- data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +0 -4
- data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +0 -4
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +0 -1
- data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +0 -1
- data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +0 -1
- data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
- data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +0 -1
- data/spec/fixtures/buildfiles/basic/Buildfile +0 -16
- data/spec/fixtures/buildfiles/basic/task_module.rake +0 -6
- data/spec/fixtures/buildfiles/installed/Buildfile +0 -7
- data/spec/fixtures/buildfiles/installed/Buildfile2 +0 -5
- data/spec/fixtures/buildfiles/project_test/Buildfile +0 -4
- data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +0 -2
- data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
- data/spec/fixtures/entry_for_project/Buildfile +0 -1
- data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
- data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/Buildfile +0 -8
- data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +0 -5
- data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/nested/Buildfile +0 -8
- data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +0 -1
- data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/1.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/B.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/a.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/c.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/core.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +0 -1
- data/spec/fixtures/ordered_entries/apps/with_requires/a.js +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/b.js +0 -3
- data/spec/fixtures/ordered_entries/apps/with_requires/c.js +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +0 -1
- data/spec/fixtures/real_world/Buildfile +0 -12
- data/spec/fixtures/real_world/apps/account/README +0 -1
- data/spec/fixtures/real_world/apps/calendar/README +0 -1
- data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +0 -1
- data/spec/fixtures/real_world/apps/files/README +0 -1
- data/spec/fixtures/real_world/apps/mail/README +0 -1
- data/spec/fixtures/real_world/apps/mobile_photos/README +0 -1
- data/spec/fixtures/real_world/apps/photos/README +0 -1
- data/spec/fixtures/real_world/apps/uploader/README +0 -1
- data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +0 -26
- data/spec/fixtures/real_world/frameworks/sproutcore/README +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +0 -4
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +0 -4
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +0 -6
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +0 -3
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +0 -4
- data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +0 -6
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +0 -1
- data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
- data/spec/fixtures/real_world/generators/sample_custom/templates/{filename}.js +0 -1
- data/spec/fixtures/recursive_project/Buildfile +0 -8
- data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
- data/spec/lib/builders/combine_spec.rb +0 -67
- data/spec/lib/builders/html_spec.rb +0 -577
- data/spec/lib/builders/javascript_spec.rb +0 -81
- data/spec/lib/builders/sass_spec.rb +0 -43
- data/spec/lib/builders/spec_helper.rb +0 -30
- data/spec/lib/builders/strings_spec.rb +0 -52
- data/spec/lib/builders/stylesheet_spec.rb +0 -63
- data/spec/lib/builders/test_index_spec.rb +0 -44
- data/spec/lib/builders/test_spec.rb +0 -135
- data/spec/lib/buildfile/config_for_spec.rb +0 -81
- data/spec/lib/buildfile/define_spec.rb +0 -59
- data/spec/lib/buildfile/dup_spec.rb +0 -65
- data/spec/lib/buildfile/invoke_spec.rb +0 -130
- data/spec/lib/buildfile/load_spec.rb +0 -49
- data/spec/lib/buildfile/task/dup_spec.rb +0 -55
- data/spec/lib/buildfile/task_defined_spec.rb +0 -17
- data/spec/lib/buildfile_commands/build_task_spec.rb +0 -19
- data/spec/lib/buildfile_commands/config_spec.rb +0 -97
- data/spec/lib/buildfile_commands/import_spec.rb +0 -17
- data/spec/lib/buildfile_commands/namespace_spec.rb +0 -18
- data/spec/lib/buildfile_commands/proxies_spec.rb +0 -38
- data/spec/lib/buildfile_commands/replace_task_spec.rb +0 -29
- data/spec/lib/buildfile_commands/task_spec.rb +0 -36
- data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +0 -26
- data/spec/lib/models/hash_struct/deep_clone_spec.rb +0 -27
- data/spec/lib/models/hash_struct/has_options_spec.rb +0 -32
- data/spec/lib/models/hash_struct/hash_spec.rb +0 -64
- data/spec/lib/models/hash_struct/merge_spec.rb +0 -26
- data/spec/lib/models/hash_struct/method_missing.rb +0 -41
- data/spec/lib/models/manifest/add_entry_spec.rb +0 -36
- data/spec/lib/models/manifest/add_transform_spec.rb +0 -90
- data/spec/lib/models/manifest/build_spec.rb +0 -78
- data/spec/lib/models/manifest/entry_for_spec.rb +0 -94
- data/spec/lib/models/manifest/find_entry.rb +0 -84
- data/spec/lib/models/manifest/prepare_spec.rb +0 -62
- data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +0 -31
- data/spec/lib/models/manifest_entry/prepare_spec.rb +0 -54
- data/spec/lib/models/project/add_target_spec.rb +0 -44
- data/spec/lib/models/project/buildfile_spec.rb +0 -35
- data/spec/lib/models/project/find_targets_for_spec.rb +0 -77
- data/spec/lib/models/project/load_nearest_project_spec.rb +0 -23
- data/spec/lib/models/project/target_for_spec.rb +0 -33
- data/spec/lib/models/project/targets_spec.rb +0 -62
- data/spec/lib/models/target/compute_build_number_spec.rb +0 -125
- data/spec/lib/models/target/config_spec.rb +0 -30
- data/spec/lib/models/target/expand_required_targets_spec.rb +0 -48
- data/spec/lib/models/target/installed_languages_spec.rb +0 -47
- data/spec/lib/models/target/lproj_for_spec.rb +0 -38
- data/spec/lib/models/target/manifest_for_spec.rb +0 -42
- data/spec/lib/models/target/parent_target_spec.rb +0 -21
- data/spec/lib/models/target/prepare_spec.rb +0 -53
- data/spec/lib/models/target/required_targets_spec.rb +0 -119
- data/spec/lib/models/target/target_for_spec.rb +0 -56
- data/spec/lib/tools/build_number_spec.rb +0 -28
- data/spec/lib/tools/gen_spec.rb +0 -207
- data/spec/lib/tools/tools_spec.rb +0 -78
- data/spec/spec_helper.rb +0 -138
- data/vendor/github_gem_lint.rb +0 -22
- 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
|
+
|
data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js
ADDED
@@ -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
|
+
|
data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js
ADDED
@@ -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
|
+
});
|