sproutcore 1.10.3.1 → 1.11.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGELOG +4 -8
- data/VERSION.yml +2 -2
- data/lib/frameworks/sproutcore/Buildfile +5 -4
- data/lib/frameworks/sproutcore/CHANGELOG.md +274 -40
- data/lib/frameworks/sproutcore/CONTRIBUTORS.md +133 -0
- data/lib/frameworks/sproutcore/README.md +31 -144
- data/lib/frameworks/sproutcore/apps/showcase/controllers/source_tree_controller.js +9 -4
- data/lib/frameworks/sproutcore/apps/showcase/resources/stylesheet.css +5 -0
- data/lib/frameworks/sproutcore/apps/showcase/system/views_item_content.js +1 -1
- data/lib/frameworks/sproutcore/apps/showcase/views/split_views.js +15 -2
- data/lib/frameworks/sproutcore/apps/showcase/views/stacked_views.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +11 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/mixins/websocket_delegate.js +90 -0
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +81 -5
- data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +23 -4
- data/lib/frameworks/sproutcore/frameworks/ajax/system/websocket.js +475 -0
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +149 -26
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/websocket.js +197 -0
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/xhr_response_test.js +65 -0
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +4 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/horizontal_stack_layout.js +232 -52
- data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/vertical_stack_layout.js +235 -49
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +23 -13
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +81 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/english.lproj/ordinal.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/{desktop/tests/views/disclosure/methods.js → core_foundation/french.lproj/ordinal.js} +7 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +2 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +104 -69
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane_statechart.js +6 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/child_view_layout_protocol.js +59 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/view_transition_protocol.js +18 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/application.js +192 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/bezier_curves.js +52 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/color.js +384 -64
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/core_query.js +6 -14
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +21 -35
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +72 -36
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +90 -34
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +55 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +20 -15
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/req_anim_frame.js +9 -10
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +763 -542
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/selection_set.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +1 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +14 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/touch.js +538 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils/rect.js +56 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +99 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/single_case.js +25 -19
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/core_tests.js +75 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/ext/number_test.js +81 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/action_support.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/responder_context.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +19 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/color.js +36 -20
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/design_modes_test.js +83 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeMainPane.js +7 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/mouse_events.js +338 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/root_responder.js +14 -89
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/touch.js +106 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/touch.js +136 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/rect.js +42 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +11 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/design_mode_test.js +457 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/sendEvent.js +36 -10
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/background_color.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/border_frame_test.js +51 -24
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/childViewLayout_test.js +176 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +46 -16
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +69 -15
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layout.js +7 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +30 -10
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +376 -71
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +0 -10
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/viewDidResize.js +117 -34
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view_states_test.js +52 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +656 -42
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +159 -38
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +0 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/design_mode.js +206 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +0 -28
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +21 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +372 -450
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +28 -13
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +22 -51
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/statechart.js +59 -30
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +0 -29
- data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +22 -10
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +42 -36
- data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +54 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +178 -59
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +206 -132
- data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +214 -118
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +96 -13
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +14 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +82 -42
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +272 -177
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/store_interaction_test.js +54 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/datetime_recordattribute.js +24 -16
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +6 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +267 -35
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +57 -46
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +150 -53
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +57 -17
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +13 -9
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/polymorphism → datastore}/tests/models/polymorphism/many.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/polymorphism → datastore}/tests/models/polymorphism/simple.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/polymorphism → datastore}/tests/models/polymorphism/single.js +12 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +20 -15
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +9 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +80 -14
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/autonomous_dataSourceCallbacks.js +280 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/autonomous_pushChanges.js +232 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +31 -5
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +16 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +60 -40
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/materializeRecord.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/{resources → english.lproj}/strings.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/french.lproj/strings.js +45 -0
- data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +7 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +125 -44
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +139 -48
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/draggable.js +202 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +59 -56
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +13 -49
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +466 -305
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +49 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +79 -21
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/split.js +12 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu_item_view.css +8 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/overlay-scroller.css +187 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +94 -30
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +163 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +97 -78
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +61 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +7 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +47 -22
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +66 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +21 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +12 -18
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +17 -14
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +9 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/collection_fast_path.js +54 -21
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +52 -20
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +94 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/keyboard.js +177 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +13 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +9 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +104 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +48 -49
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/drag_and_drop.js +22 -18
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +17 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/link_view_test.js +136 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/contentIndexesInRect.js +77 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/drag_and_drop.js +53 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/layoutForContentIndex.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +25 -25
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +102 -27
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/{rowHeightForContentIndex.js → rowSizeForContentIndex.js} +7 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +70 -75
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +29 -30
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +57 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/menu_scroll_view/menu_scroll_view_test.js +206 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +15 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +15 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +16 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +164 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/scale.js +387 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/touch.js +549 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +214 -45
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +73 -22
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +88 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/methods.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/methods.js +16 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/ui.js +54 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/dividers.js +21 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/static_content.js +31 -25
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +109 -29
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +10 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +3 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +779 -603
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +106 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/link_view.js +406 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +437 -245
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +13 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +124 -62
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +176 -597
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroller_view.js +206 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +3 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +5 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +3 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +56 -158
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll_view.js +2560 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +458 -242
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +117 -54
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +18 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +162 -34
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +30 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +33 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +47 -22
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +0 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form_row.js +21 -21
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/mixins/select_view_menu.js +24 -10
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/ext/menu_resizing.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/bindings.js +7 -4
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/check_selected.js +7 -9
- data/lib/frameworks/sproutcore/frameworks/{desktop/tests/panes/select_button/methods.js → experimental/frameworks/select_view/tests/views/select/method.js} +54 -76
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/selected_item.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/{desktop/tests/panes/select_button → experimental/frameworks/select_view/tests/views/select}/ui.js +107 -36
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +225 -66
- data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +39 -38
- data/lib/frameworks/sproutcore/frameworks/foundation/core.js +5 -18
- data/lib/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/inflections.js +84 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/french.lproj/inflections.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_mixin.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +3 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +6 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +408 -239
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +2 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/spanish.lproj/inflections.js +38 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +104 -76
- data/lib/frameworks/sproutcore/frameworks/foundation/system/string.js +20 -94
- data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +33 -22
- data/lib/frameworks/sproutcore/frameworks/foundation/system/undo_manager.js +475 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/auto_resize_test.js +163 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +2 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/methods.js +268 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/undo_manager.js +231 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +27 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +24 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +135 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/fade_transition.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/pop_transition.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/scale_transition.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/slide_transition.js +4 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_dissolve_transition.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +21 -21
- data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +65 -15
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +193 -213
- data/lib/frameworks/sproutcore/frameworks/jquery/{jquery-1.8.3-patched.js → jquery-1.11.1.js} +7507 -6684
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +28 -11
- data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +26 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +54 -25
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +0 -6
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/number.js +36 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/window.js +25 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +156 -66
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +150 -65
- data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +57 -11
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +68 -49
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +14 -6
- data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +23 -23
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/ext/number_test.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +0 -10
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable/enumerable.js +340 -285
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +104 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/observer_set.js +14 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +15 -2
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +21 -18
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +52 -19
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/pane.js +27 -24
- data/lib/frameworks/sproutcore/frameworks/template_view/controls/button.js +30 -0
- data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/bind.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/collection.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/view.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/template_view/tests/mixins/template_helpers/checkbox_support.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/handlebars.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/template_view/views/bindable_span.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/template_view/views/template_collection.js +16 -14
- data/lib/frameworks/sproutcore/frameworks/testing/core.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +13 -0
- data/lib/frameworks/sproutcore/lib/index.rhtml +2 -2
- data/lib/frameworks/sproutcore/phantomjs/test_runner.js +28 -7
- data/lib/frameworks/sproutcore/scripts/run_sc_server_master.sh +1 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/_variables.css +2 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +1 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +3 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal.css +15 -15
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal_overlay.css +74 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical.css +11 -13
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical_overlay.css +74 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob-active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob-active@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/{22px → jumbo}/slider.css +9 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/track.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/track@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob-active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob-active@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/slider.css +32 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/track.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/track@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +13 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob-active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob-active@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/slider.css +32 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/track.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/track@2x.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/split/split.css +2 -3
- data/lib/sproutcore/builders/chance_file.rb +3 -3
- data/lib/sproutcore/helpers/minifier.rb +1 -0
- data/vendor/chance/lib/chance/instance.rb +34 -34
- data/vendor/chance/lib/chance/instance/spriting.rb +21 -16
- metadata +81 -58
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +0 -17
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +0 -710
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +0 -267
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/touch-scroller.css +0 -196
- data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +0 -224
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +0 -163
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +0 -177
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +0 -2053
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +0 -1024
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +0 -404
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/render_delegates/menu_scroller.js +0 -28
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/tests/menu/scroll.js +0 -235
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +0 -363
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroller.js +0 -250
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +0 -47
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +0 -134
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/desktop_scroller.js +0 -92
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/native_scroll.js +0 -25
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/scroll.js +0 -33
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/touch_scroller.js +0 -76
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/integration.js +0 -25
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/methods.js +0 -143
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/ui.js +0 -256
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +0 -1164
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroller.js +0 -332
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +0 -236
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroller.js +0 -347
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroll.js +0 -15
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroller.js +0 -10
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +0 -804
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroller.js +0 -133
- data/lib/frameworks/sproutcore/frameworks/foundation/tasks/preload_bundle.js +0 -41
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal_touch.css +0 -91
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical_touch.css +0 -92
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/slider.css +0 -27
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/slider.css +0 -27
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/track.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/track.png +0 -0
@@ -50,21 +50,11 @@ var DummyArray = SC.Object.extend(SC.Array, {
|
|
50
50
|
this.set('length', this.content.length) ;
|
51
51
|
this.endPropertyChanges();
|
52
52
|
|
53
|
-
// Both arrayContentDidChange and enumerableContentDidChange will invoke
|
54
|
-
// "this.notifyPropertyChange('[]')". To prevent multiple notifications
|
55
|
-
// these calls are made as grouped property changes.
|
56
|
-
this.beginPropertyChanges();
|
57
|
-
|
58
|
-
// Call the general-purpose enumerableContentDidChange
|
59
|
-
// Enumerable method.
|
60
|
-
this.enumerableContentDidChange(idx, amt, len - amt) ;
|
61
|
-
|
62
53
|
// SC.Array implementations must call arrayContentDidChange
|
63
54
|
// after making mutations. This allows observers to perform
|
64
55
|
// operations based on the mutation. For instance, a listener
|
65
56
|
// might want to reflect additions onto itself.
|
66
57
|
this.arrayContentDidChange(idx, amt, len);
|
67
|
-
this.endPropertyChanges();
|
68
58
|
},
|
69
59
|
|
70
60
|
// SC.Arrays must implement objectAt, which returns an object
|
@@ -4,48 +4,64 @@
|
|
4
4
|
// Portions ©2008-2011 Apple Inc. All rights reserved.
|
5
5
|
// License: Licensed under MIT license (see license.js)
|
6
6
|
// ==========================================================================
|
7
|
+
/*global module, test, ok, isObj, equals, expects */
|
7
8
|
|
8
|
-
/*globals module test ok isObj equals expects */
|
9
9
|
|
10
|
-
var enumerables
|
11
|
-
|
12
|
-
var DummyEnumerable = SC.Object.extend( SC.Enumerable, {
|
10
|
+
var enumerables; // global variables
|
11
|
+
var DummyEnumerable = SC.Object.extend(SC.Enumerable, {
|
13
12
|
|
14
13
|
content: [],
|
15
14
|
|
16
|
-
length: function() { return this.content.length; }.property(),
|
15
|
+
length: function () { return this.content.length; }.property(),
|
17
16
|
|
18
|
-
objectAt: function(idx) { return this.content[idx]; },
|
17
|
+
objectAt: function (idx) { return this.content[idx]; },
|
19
18
|
|
20
|
-
nextObject: function(idx) { return this.content[idx]; },
|
19
|
+
nextObject: function (idx) { return this.content[idx]; },
|
21
20
|
|
22
21
|
// add support for reduced properties.
|
23
|
-
unknownProperty: function(key, value) {
|
24
|
-
var ret = this.reducedProperty(key, value)
|
22
|
+
unknownProperty: function (key, value) {
|
23
|
+
var ret = this.reducedProperty(key, value);
|
25
24
|
if (ret === undefined) {
|
26
|
-
if (value !== undefined) this[key] = value
|
27
|
-
ret = value
|
25
|
+
if (value !== undefined) this[key] = value;
|
26
|
+
ret = value;
|
28
27
|
}
|
29
|
-
return ret
|
28
|
+
return ret;
|
29
|
+
},
|
30
|
+
|
31
|
+
replace: function (start, removed, added) {
|
32
|
+
var ret = this.content.replace(start, removed, added),
|
33
|
+
addedLength = added ? added.length : 0;
|
34
|
+
|
35
|
+
this.enumerableContentDidChange(start, addedLength, addedLength - removed);
|
36
|
+
return ret;
|
37
|
+
},
|
38
|
+
|
39
|
+
unshiftObject: function (object) {
|
40
|
+
this.replace(0, 0, [object]);
|
41
|
+
return object;
|
30
42
|
},
|
31
43
|
|
32
|
-
shiftObject: function() {
|
33
|
-
var ret = this.
|
34
|
-
this.enumerableContentDidChange(0, 1);
|
44
|
+
shiftObject: function () {
|
45
|
+
var ret = this.replace(0, 1);
|
35
46
|
return ret;
|
36
47
|
},
|
37
48
|
|
38
|
-
pushObject: function(object) {
|
39
|
-
this.content.
|
40
|
-
|
49
|
+
pushObject: function (object) {
|
50
|
+
this.replace(this.content.length - 1, 0, [object]);
|
51
|
+
return object;
|
52
|
+
},
|
53
|
+
|
54
|
+
popObject: function () {
|
55
|
+
var ret = this.replace(this.content.length - 1, 1);
|
56
|
+
return ret;
|
41
57
|
}
|
42
58
|
|
43
59
|
});
|
44
60
|
|
45
|
-
var runFunc = function(a,b) { return ['DONE', a, b]; }
|
46
|
-
var invokeWhileOK = function() { return "OK"; }
|
47
|
-
var invokeWhileNotOK = function() { return "FAIL"; };
|
48
|
-
var reduceTestFunc = function(prev, item, idx, e, pname) { return pname||'TEST'; }
|
61
|
+
var runFunc = function (a, b) { return ['DONE', a, b]; };
|
62
|
+
var invokeWhileOK = function () { return "OK"; };
|
63
|
+
var invokeWhileNotOK = function () { return "FAIL"; };
|
64
|
+
var reduceTestFunc = function (prev, item, idx, e, pname) { return pname || 'TEST'; };
|
49
65
|
|
50
66
|
var CommonArray = [
|
51
67
|
{
|
@@ -99,429 +115,468 @@ var CommonArray = [
|
|
99
115
|
|
100
116
|
module("Real Array & DummyEnumerable", {
|
101
117
|
|
102
|
-
setup: function() {
|
103
|
-
enumerables = [SC.$A(CommonArray), DummyEnumerable.create({ content: SC.clone(CommonArray) })]
|
118
|
+
setup: function () {
|
119
|
+
enumerables = [SC.$A(CommonArray), DummyEnumerable.create({ content: SC.clone(CommonArray) })];
|
104
120
|
},
|
105
121
|
|
106
|
-
teardown: function() {
|
107
|
-
|
108
|
-
delete Array.prototype["@max(balance)"]
|
109
|
-
delete Array.prototype["@min(balance)"]
|
122
|
+
teardown: function () {
|
123
|
+
enumerables = null;
|
124
|
+
delete Array.prototype["@max(balance)"]; // remove cached value
|
125
|
+
delete Array.prototype["@min(balance)"];
|
110
126
|
}
|
111
127
|
|
112
128
|
});
|
113
129
|
|
114
|
-
test("should get enumerator that iterates through objects", function() {
|
115
|
-
var src, ary2 = enumerables
|
130
|
+
test("should get enumerator that iterates through objects", function () {
|
131
|
+
var src, ary2 = enumerables;
|
116
132
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
117
|
-
src = ary2[idx2]
|
118
|
-
var e = src.enumerator()
|
133
|
+
src = ary2[idx2];
|
134
|
+
var e = src.enumerator();
|
119
135
|
ok(e !== null, 'enumerator must not be null');
|
120
136
|
|
121
137
|
var idx = 0;
|
122
|
-
var cur
|
138
|
+
var cur;
|
123
139
|
while(cur = e.nextObject()) {
|
124
|
-
equals(src.objectAt(idx), cur, "object at index %@".fmt(idx))
|
140
|
+
equals(src.objectAt(idx), cur, "object at index %@".fmt(idx));
|
125
141
|
idx++;
|
126
142
|
}
|
127
143
|
|
128
|
-
equals(src.get('length'), idx)
|
144
|
+
equals(src.get('length'), idx);
|
129
145
|
}
|
130
146
|
});
|
131
147
|
|
132
|
-
test("should return firstObject for item with content", function() {
|
133
|
-
var src, ary2 = enumerables
|
148
|
+
test("should return firstObject for item with content", function () {
|
149
|
+
var src, ary2 = enumerables;
|
134
150
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
135
|
-
src = ary2[idx2]
|
151
|
+
src = ary2[idx2];
|
136
152
|
equals(src.firstObject(), CommonArray[0], 'firstObject should return first object');
|
137
153
|
}
|
138
154
|
|
139
155
|
equals([].firstObject(), undefined, 'firstObject() on empty enumerable should return undefined');
|
140
156
|
});
|
141
157
|
|
142
|
-
test("should run forEach() to go through objects", function() {
|
143
|
-
var src, ary2 = enumerables
|
158
|
+
test("should run forEach() to go through objects", function () {
|
159
|
+
var src, ary2 = enumerables;
|
144
160
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
145
|
-
src = ary2[idx2]
|
161
|
+
src = ary2[idx2];
|
146
162
|
var idx = 0;
|
147
163
|
|
148
164
|
// save for testing later
|
149
|
-
var items = []
|
150
|
-
var indexes = []
|
151
|
-
var arrays = []
|
152
|
-
var targets = []
|
165
|
+
var items = [];
|
166
|
+
var indexes = [];
|
167
|
+
var arrays = [];
|
168
|
+
var targets = [];
|
153
169
|
|
154
|
-
src.forEach(function(item, index, array) {
|
170
|
+
src.forEach(function (item, index, array) {
|
155
171
|
items.push(item);
|
156
172
|
indexes.push(index);
|
157
173
|
arrays.push(array);
|
158
174
|
targets.push(this);
|
159
175
|
}, this);
|
160
176
|
|
161
|
-
var len = src.get('length')
|
177
|
+
var len = src.get('length');
|
162
178
|
for(idx=0;idx<len;idx++) {
|
163
|
-
equals(items[idx], src.objectAt(idx))
|
164
|
-
equals(indexes[idx], idx)
|
165
|
-
equals(arrays[idx], src)
|
179
|
+
equals(items[idx], src.objectAt(idx));
|
180
|
+
equals(indexes[idx], idx);
|
181
|
+
equals(arrays[idx], src);
|
166
182
|
|
167
183
|
// use this method because equals() is taking too much time to log out
|
168
184
|
// results. probably an issue with jsDump
|
169
|
-
ok(targets[idx] === this, 'target should always be this')
|
185
|
+
ok(targets[idx] === this, 'target should always be this');
|
170
186
|
}
|
171
187
|
}
|
172
188
|
});
|
173
189
|
|
174
|
-
test("should map to values while passing proper params", function() {
|
175
|
-
var src, ary2 = enumerables
|
190
|
+
test("should map to values while passing proper params", function () {
|
191
|
+
var src, ary2 = enumerables;
|
176
192
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
177
|
-
src = ary2[idx2]
|
193
|
+
src = ary2[idx2];
|
178
194
|
var idx = 0;
|
179
195
|
|
180
196
|
// save for testing later
|
181
|
-
var items = []
|
182
|
-
var indexes = []
|
183
|
-
var arrays = []
|
184
|
-
var targets = []
|
197
|
+
var items = [];
|
198
|
+
var indexes = [];
|
199
|
+
var arrays = [];
|
200
|
+
var targets = [];
|
185
201
|
|
186
|
-
var mapped = src.map(function(item, index, array) {
|
202
|
+
var mapped = src.map(function (item, index, array) {
|
187
203
|
items.push(item);
|
188
204
|
indexes.push(index);
|
189
205
|
arrays.push(array);
|
190
206
|
targets.push(this);
|
191
207
|
|
192
|
-
return index
|
208
|
+
return index;
|
193
209
|
}, this);
|
194
210
|
|
195
|
-
var len = src.get('length')
|
211
|
+
var len = src.get('length');
|
196
212
|
for(idx=0;idx<len;idx++) {
|
197
|
-
equals(src.objectAt(idx), items[idx], "items")
|
198
|
-
equals(idx, indexes[idx], "indexes")
|
199
|
-
equals(src, arrays[idx], 'arrays')
|
200
|
-
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this")
|
213
|
+
equals(src.objectAt(idx), items[idx], "items");
|
214
|
+
equals(idx, indexes[idx], "indexes");
|
215
|
+
equals(src, arrays[idx], 'arrays');
|
216
|
+
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this");
|
201
217
|
|
202
|
-
equals(idx, mapped[idx], "mapped")
|
218
|
+
equals(idx, mapped[idx], "mapped");
|
203
219
|
}
|
204
220
|
}
|
205
221
|
});
|
206
222
|
|
207
|
-
test("should filter to items that return for callback", function() {
|
208
|
-
var src, ary2 = enumerables
|
223
|
+
test("should filter to items that return for callback", function () {
|
224
|
+
var src, ary2 = enumerables;
|
209
225
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
210
|
-
src = ary2[idx2]
|
226
|
+
src = ary2[idx2];
|
211
227
|
var idx = 0;
|
212
228
|
|
213
229
|
// save for testing later
|
214
|
-
var items = []
|
215
|
-
var indexes = []
|
216
|
-
var arrays = []
|
217
|
-
var targets = []
|
230
|
+
var items = [];
|
231
|
+
var indexes = [];
|
232
|
+
var arrays = [];
|
233
|
+
var targets = [];
|
218
234
|
|
219
|
-
var filtered = src.filter(function(item, index, array) {
|
235
|
+
var filtered = src.filter(function (item, index, array) {
|
220
236
|
items.push(item);
|
221
237
|
indexes.push(index);
|
222
238
|
arrays.push(array);
|
223
239
|
targets.push(this);
|
224
240
|
|
225
|
-
return item.gender === "female"
|
241
|
+
return item.gender === "female";
|
226
242
|
}, this);
|
227
243
|
|
228
|
-
var len = src.get('length')
|
244
|
+
var len = src.get('length');
|
229
245
|
for(idx=0;idx<len;idx++) {
|
230
|
-
equals(src.objectAt(idx), items[idx], "items")
|
231
|
-
equals(idx, indexes[idx], "indexes")
|
232
|
-
equals(src, arrays[idx], 'arrays')
|
233
|
-
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this")
|
246
|
+
equals(src.objectAt(idx), items[idx], "items");
|
247
|
+
equals(idx, indexes[idx], "indexes");
|
248
|
+
equals(src, arrays[idx], 'arrays');
|
249
|
+
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this");
|
234
250
|
}
|
235
251
|
|
236
|
-
equals(filtered.length, 1)
|
237
|
-
equals(filtered[0].first, "Jenna")
|
252
|
+
equals(filtered.length, 1);
|
253
|
+
equals(filtered[0].first, "Jenna");
|
238
254
|
}
|
239
255
|
});
|
240
256
|
|
241
|
-
test("should return true if function for every() returns true", function() {
|
242
|
-
var src, ary2 = enumerables
|
257
|
+
test("should return true if function for every() returns true", function () {
|
258
|
+
var src, ary2 = enumerables;
|
243
259
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
244
|
-
src = ary2[idx2]
|
245
|
-
var idx = 0
|
260
|
+
src = ary2[idx2];
|
261
|
+
var idx = 0;
|
246
262
|
|
247
263
|
// save for testing later
|
248
|
-
var items = []
|
249
|
-
var indexes = []
|
250
|
-
var arrays = []
|
251
|
-
var targets = []
|
252
|
-
|
253
|
-
var result = src.every(function(item, index, array) {
|
254
|
-
items.push(item)
|
255
|
-
indexes.push(index)
|
256
|
-
arrays.push(array)
|
257
|
-
targets.push(this)
|
258
|
-
|
259
|
-
return true
|
264
|
+
var items = [];
|
265
|
+
var indexes = [];
|
266
|
+
var arrays = [];
|
267
|
+
var targets = [];
|
268
|
+
|
269
|
+
var result = src.every(function (item, index, array) {
|
270
|
+
items.push(item);
|
271
|
+
indexes.push(index);
|
272
|
+
arrays.push(array);
|
273
|
+
targets.push(this);
|
274
|
+
|
275
|
+
return true;
|
260
276
|
}, this);
|
261
277
|
|
262
|
-
var len = src.get('length')
|
278
|
+
var len = src.get('length');
|
263
279
|
for(idx=0;idx<len;idx++) {
|
264
|
-
equals(src.objectAt(idx), items[idx], "items")
|
265
|
-
equals(idx, indexes[idx], "indexes")
|
266
|
-
equals(src, arrays[idx], 'arrays')
|
267
|
-
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this")
|
280
|
+
equals(src.objectAt(idx), items[idx], "items");
|
281
|
+
equals(idx, indexes[idx], "indexes");
|
282
|
+
equals(src, arrays[idx], 'arrays');
|
283
|
+
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this");
|
268
284
|
}
|
269
285
|
|
270
|
-
equals(result, YES)
|
286
|
+
equals(result, YES);
|
271
287
|
}
|
272
288
|
});
|
273
289
|
|
274
|
-
test("should return false if one function for every() returns false", function() {
|
275
|
-
var src, ary2 = enumerables
|
290
|
+
test("should return false if one function for every() returns false", function () {
|
291
|
+
var src, ary2 = enumerables;
|
276
292
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
277
|
-
src = ary2[idx2]
|
278
|
-
var result = src.every(function(item, index, array) {
|
279
|
-
return item.gender === "male"
|
293
|
+
src = ary2[idx2];
|
294
|
+
var result = src.every(function (item, index, array) {
|
295
|
+
return item.gender === "male";
|
280
296
|
}, this);
|
281
|
-
equals(result, NO)
|
297
|
+
equals(result, NO);
|
282
298
|
}
|
283
299
|
});
|
284
300
|
|
285
|
-
test("should return false if all functions for some() returns false", function() {
|
286
|
-
var src, ary2 = enumerables
|
301
|
+
test("should return false if all functions for some() returns false", function () {
|
302
|
+
var src, ary2 = enumerables;
|
287
303
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
288
|
-
src = ary2[idx2]
|
289
|
-
var idx = 0
|
304
|
+
src = ary2[idx2];
|
305
|
+
var idx = 0;
|
290
306
|
|
291
307
|
// save for testing later
|
292
|
-
var items = []
|
293
|
-
var indexes = []
|
294
|
-
var arrays = []
|
295
|
-
var targets = []
|
296
|
-
|
297
|
-
var result = src.some(function(item, index, array) {
|
298
|
-
items.push(item)
|
299
|
-
indexes.push(index)
|
300
|
-
arrays.push(array)
|
301
|
-
targets.push(this)
|
302
|
-
|
303
|
-
return false
|
308
|
+
var items = [];
|
309
|
+
var indexes = [];
|
310
|
+
var arrays = [];
|
311
|
+
var targets = [];
|
312
|
+
|
313
|
+
var result = src.some(function (item, index, array) {
|
314
|
+
items.push(item);
|
315
|
+
indexes.push(index);
|
316
|
+
arrays.push(array);
|
317
|
+
targets.push(this);
|
318
|
+
|
319
|
+
return false;
|
304
320
|
}, this);
|
305
321
|
|
306
|
-
var len = src.get('length')
|
322
|
+
var len = src.get('length');
|
307
323
|
for(idx=0;idx<len;idx++) {
|
308
|
-
equals(src.objectAt(idx), items[idx], "items")
|
309
|
-
equals(idx, indexes[idx], "indexes")
|
310
|
-
equals(src, arrays[idx], 'arrays')
|
311
|
-
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this")
|
324
|
+
equals(src.objectAt(idx), items[idx], "items");
|
325
|
+
equals(idx, indexes[idx], "indexes");
|
326
|
+
equals(src, arrays[idx], 'arrays');
|
327
|
+
equals(SC.guidFor(this), SC.guidFor(targets[idx]), "this");
|
312
328
|
}
|
313
329
|
|
314
|
-
equals(result, NO)
|
330
|
+
equals(result, NO);
|
315
331
|
}
|
316
332
|
});
|
317
333
|
|
318
|
-
test("should return true if one function for some() returns true", function() {
|
319
|
-
var src, ary2 = enumerables
|
334
|
+
test("should return true if one function for some() returns true", function () {
|
335
|
+
var src, ary2 = enumerables;
|
320
336
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
321
|
-
src = ary2[idx2]
|
322
|
-
var result = src.some(function(item, index, array) {
|
323
|
-
return item.gender !== "male"
|
337
|
+
src = ary2[idx2];
|
338
|
+
var result = src.some(function (item, index, array) {
|
339
|
+
return item.gender !== "male";
|
324
340
|
}, this);
|
325
|
-
equals(result, YES)
|
341
|
+
equals(result, YES);
|
326
342
|
}
|
327
343
|
});
|
328
344
|
|
329
|
-
test("should mapProperty for all items", function() {
|
330
|
-
var src, ary2 = enumerables
|
345
|
+
test("should mapProperty for all items", function () {
|
346
|
+
var src, ary2 = enumerables;
|
331
347
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
332
|
-
src = ary2[idx2]
|
333
|
-
var mapped = src.mapProperty("first")
|
334
|
-
var idx
|
335
|
-
var len = src.get('length')
|
348
|
+
src = ary2[idx2];
|
349
|
+
var mapped = src.mapProperty("first");
|
350
|
+
var idx;
|
351
|
+
var len = src.get('length');
|
336
352
|
for(idx=0;idx<len;idx++) {
|
337
|
-
equals(mapped[idx], src.objectAt(idx).first)
|
353
|
+
equals(mapped[idx], src.objectAt(idx).first);
|
338
354
|
}
|
339
355
|
}
|
340
356
|
});
|
341
357
|
|
342
|
-
test("should filterProperty with match", function() {
|
343
|
-
var src, ary2 = enumerables
|
358
|
+
test("should filterProperty with match", function () {
|
359
|
+
var src, ary2 = enumerables;
|
344
360
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
345
|
-
src = ary2[idx2]
|
346
|
-
var filtered = src.filterProperty("gender", "female")
|
347
|
-
equals(filtered.length, 1)
|
348
|
-
equals(filtered[0].first, "Jenna")
|
361
|
+
src = ary2[idx2];
|
362
|
+
var filtered = src.filterProperty("gender", "female");
|
363
|
+
equals(filtered.length, 1);
|
364
|
+
equals(filtered[0].first, "Jenna");
|
349
365
|
}
|
350
366
|
});
|
351
367
|
|
352
|
-
test("should filterProperty with default bool", function() {
|
353
|
-
var src, ary2 = enumerables
|
368
|
+
test("should filterProperty with default bool", function () {
|
369
|
+
var src, ary2 = enumerables;
|
354
370
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
355
|
-
src = ary2[idx2]
|
356
|
-
var filtered = src.filterProperty("californian")
|
357
|
-
equals(filtered.length, 1)
|
358
|
-
equals(filtered[0].first, "Jenna")
|
371
|
+
src = ary2[idx2];
|
372
|
+
var filtered = src.filterProperty("californian");
|
373
|
+
equals(filtered.length, 1);
|
374
|
+
equals(filtered[0].first, "Jenna");
|
359
375
|
}
|
360
376
|
});
|
361
377
|
|
362
|
-
test("should groupBy a given property", function() {
|
363
|
-
var src, ary2 = enumerables
|
378
|
+
test("should groupBy a given property", function () {
|
379
|
+
var src, ary2 = enumerables;
|
364
380
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
365
|
-
src = ary2[idx2]
|
366
|
-
var filtered = src.groupBy("gender")
|
367
|
-
equals(filtered.length, 2)
|
368
|
-
equals(filtered[1][0].first, "Jenna")
|
381
|
+
src = ary2[idx2];
|
382
|
+
var filtered = src.groupBy("gender");
|
383
|
+
equals(filtered.length, 2);
|
384
|
+
equals(filtered[1][0].first, "Jenna");
|
369
385
|
}
|
370
386
|
});
|
371
387
|
|
372
388
|
|
373
|
-
test("everyProperty should return true if all properties macth", function() {
|
374
|
-
var src, ary2 = enumerables
|
389
|
+
test("everyProperty should return true if all properties macth", function () {
|
390
|
+
var src, ary2 = enumerables;
|
375
391
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
376
|
-
src = ary2[idx2]
|
377
|
-
var ret = src.everyProperty('visited', 'Prague')
|
378
|
-
equals(YES, ret, "visited")
|
392
|
+
src = ary2[idx2];
|
393
|
+
var ret = src.everyProperty('visited', 'Prague');
|
394
|
+
equals(YES, ret, "visited");
|
379
395
|
}
|
380
396
|
});
|
381
397
|
|
382
|
-
test("everyProperty should return true if all properties true", function() {
|
383
|
-
var src, ary2 = enumerables
|
398
|
+
test("everyProperty should return true if all properties true", function () {
|
399
|
+
var src, ary2 = enumerables;
|
384
400
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
385
|
-
src = ary2[idx2]
|
386
|
-
var ret = src.everyProperty('ready')
|
387
|
-
equals(YES, ret, "ready")
|
401
|
+
src = ary2[idx2];
|
402
|
+
var ret = src.everyProperty('ready');
|
403
|
+
equals(YES, ret, "ready");
|
388
404
|
}
|
389
405
|
});
|
390
406
|
|
391
|
-
test("everyProperty should return false if any properties false", function() {
|
392
|
-
var src, ary2 = enumerables
|
407
|
+
test("everyProperty should return false if any properties false", function () {
|
408
|
+
var src, ary2 = enumerables;
|
393
409
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
394
|
-
src = ary2[idx2]
|
395
|
-
var ret = src.everyProperty('gender', 'male')
|
396
|
-
equals(NO, ret, "ready")
|
410
|
+
src = ary2[idx2];
|
411
|
+
var ret = src.everyProperty('gender', 'male');
|
412
|
+
equals(NO, ret, "ready");
|
397
413
|
}
|
398
414
|
});
|
399
415
|
|
400
|
-
test("someProperty should return false if all properties not match", function() {
|
401
|
-
var src, ary2 = enumerables
|
416
|
+
test("someProperty should return false if all properties not match", function () {
|
417
|
+
var src, ary2 = enumerables;
|
402
418
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
403
|
-
src = ary2[idx2]
|
404
|
-
var ret = src.someProperty('visited', 'Timbuktu')
|
405
|
-
equals(NO, ret, "visited")
|
419
|
+
src = ary2[idx2];
|
420
|
+
var ret = src.someProperty('visited', 'Timbuktu');
|
421
|
+
equals(NO, ret, "visited");
|
406
422
|
}
|
407
423
|
});
|
408
424
|
|
409
|
-
test("someProperty should return false if all properties false", function() {
|
410
|
-
var src, ary2 = enumerables
|
425
|
+
test("someProperty should return false if all properties false", function () {
|
426
|
+
var src, ary2 = enumerables;
|
411
427
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
412
|
-
src = ary2[idx2]
|
413
|
-
var ret = src.someProperty('doneTravelling')
|
414
|
-
equals(NO, ret, "doneTravelling")
|
428
|
+
src = ary2[idx2];
|
429
|
+
var ret = src.someProperty('doneTravelling');
|
430
|
+
equals(NO, ret, "doneTravelling");
|
415
431
|
}
|
416
432
|
});
|
417
433
|
|
418
|
-
test("someProperty should return true if any properties true", function() {
|
419
|
-
var src, ary2 = enumerables
|
434
|
+
test("someProperty should return true if any properties true", function () {
|
435
|
+
var src, ary2 = enumerables;
|
420
436
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
421
|
-
src = ary2[idx2]
|
422
|
-
var ret = src.someProperty('first', 'Charles')
|
423
|
-
equals(YES, ret, "first")
|
437
|
+
src = ary2[idx2];
|
438
|
+
var ret = src.someProperty('first', 'Charles');
|
439
|
+
equals(YES, ret, "first");
|
424
440
|
}
|
425
441
|
});
|
426
442
|
|
427
|
-
test("invokeWhile should call method on member objects until return does not match", function() {
|
428
|
-
var src, ary2 = enumerables
|
443
|
+
test("invokeWhile should call method on member objects until return does not match", function () {
|
444
|
+
var src, ary2 = enumerables;
|
429
445
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
430
|
-
src = ary2[idx2]
|
431
|
-
var ret = src.invokeWhile("OK", "invokeWhileTest", "item2")
|
446
|
+
src = ary2[idx2];
|
447
|
+
var ret = src.invokeWhile("OK", "invokeWhileTest", "item2");
|
432
448
|
equals("FAIL", ret, "return value");
|
433
449
|
}
|
434
450
|
});
|
435
451
|
|
436
|
-
test("get @min(balance) should return the minimum balance", function() {
|
437
|
-
var src, ary2 = enumerables
|
452
|
+
test("get @min(balance) should return the minimum balance", function () {
|
453
|
+
var src, ary2 = enumerables;
|
438
454
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
439
|
-
src = ary2[idx2]
|
440
|
-
equals(1, src.get('@min(balance)'))
|
455
|
+
src = ary2[idx2];
|
456
|
+
equals(1, src.get('@min(balance)'));
|
441
457
|
}
|
442
458
|
});
|
443
459
|
|
444
|
-
test("get @max(balance) should return the maximum balance", function() {
|
445
|
-
var src, ary2 = enumerables
|
460
|
+
test("get @max(balance) should return the maximum balance", function () {
|
461
|
+
var src, ary2 = enumerables;
|
446
462
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
447
|
-
src = ary2[idx2]
|
448
|
-
equals(4, src.get('@max(balance)'))
|
463
|
+
src = ary2[idx2];
|
464
|
+
equals(4, src.get('@max(balance)'));
|
449
465
|
}
|
450
466
|
});
|
451
467
|
|
452
|
-
test("get @minObject(balance) should return the record with min balance", function() {
|
453
|
-
var src, ary2 = enumerables
|
468
|
+
test("get @minObject(balance) should return the record with min balance", function () {
|
469
|
+
var src, ary2 = enumerables;
|
454
470
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
455
|
-
src = ary2[idx2]
|
456
|
-
equals(src.objectAt(0), src.get('@minObject(balance)'))
|
471
|
+
src = ary2[idx2];
|
472
|
+
equals(src.objectAt(0), src.get('@minObject(balance)'));
|
457
473
|
}
|
458
474
|
});
|
459
475
|
|
460
|
-
test("get @maxObject(balance) should return the record with the max balance", function() {
|
461
|
-
var src, ary2 = enumerables
|
476
|
+
test("get @maxObject(balance) should return the record with the max balance", function () {
|
477
|
+
var src, ary2 = enumerables;
|
462
478
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
463
|
-
src = ary2[idx2]
|
464
|
-
equals(src.objectAt(3), src.get('@maxObject(balance)'))
|
479
|
+
src = ary2[idx2];
|
480
|
+
equals(src.objectAt(3), src.get('@maxObject(balance)'));
|
465
481
|
}
|
466
482
|
});
|
467
483
|
|
468
|
-
test("get @sum(balance) should return the sum of the balances.", function() {
|
469
|
-
var src, ary2 = enumerables
|
484
|
+
test("get @sum(balance) should return the sum of the balances.", function () {
|
485
|
+
var src, ary2 = enumerables;
|
470
486
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
471
|
-
src = ary2[idx2]
|
472
|
-
equals(1+2+3+4, src.get("@sum(balance)"))
|
487
|
+
src = ary2[idx2];
|
488
|
+
equals(1+2+3+4, src.get("@sum(balance)"));
|
473
489
|
}
|
474
490
|
});
|
475
491
|
|
476
|
-
test("get @average(balance) should return the average of balances", function() {
|
477
|
-
var src, ary2 = enumerables
|
492
|
+
test("get @average(balance) should return the average of balances", function () {
|
493
|
+
var src, ary2 = enumerables;
|
478
494
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
479
|
-
src = ary2[idx2]
|
480
|
-
equals((1+2+3+4)/4, src.get("@average(balance)"))
|
495
|
+
src = ary2[idx2];
|
496
|
+
equals((1+2+3+4)/4, src.get("@average(balance)"));
|
481
497
|
}
|
482
498
|
});
|
483
499
|
|
484
|
-
test("should invoke custom reducer", function() {
|
485
|
-
var src, ary2 = enumerables
|
500
|
+
test("should invoke custom reducer", function () {
|
501
|
+
var src, ary2 = enumerables;
|
486
502
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
487
|
-
src = ary2[idx2]
|
503
|
+
src = ary2[idx2];
|
488
504
|
// install reducer method
|
489
|
-
src.reduceTest = reduceTestFunc
|
490
|
-
equals("TEST", src.get("@test"))
|
491
|
-
equals("prop", src.get("@test(prop)"))
|
505
|
+
src.reduceTest = reduceTestFunc;
|
506
|
+
equals("TEST", src.get("@test"));
|
507
|
+
equals("prop", src.get("@test(prop)"));
|
492
508
|
}
|
493
509
|
});
|
494
510
|
|
495
|
-
test("
|
496
|
-
var src, ary2 = enumerables;
|
497
|
-
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
498
|
-
src = ary2[idx2];
|
511
|
+
test("Should trigger observer on lastObject property when it changes", function () {
|
499
512
|
|
500
|
-
|
501
|
-
|
513
|
+
// Perform tests on each sample enumerable in enumerables.
|
514
|
+
for (var i = 0, len = enumerables.length; i < len; i++) {
|
515
|
+
var enumerable = enumerables[i],
|
516
|
+
enumerableLength = enumerable.get('length'),
|
517
|
+
callCount = 0,
|
518
|
+
testObject = {
|
519
|
+
first: "John",
|
520
|
+
};
|
521
|
+
|
522
|
+
// Observe the enumerable for updates to `lastObject`.
|
523
|
+
enumerable.addObserver("lastObject", function () {
|
502
524
|
callCount++;
|
503
525
|
});
|
504
526
|
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
californian: NO,
|
509
|
-
ready: YES,
|
510
|
-
visited: "Paris",
|
511
|
-
balance: 5
|
512
|
-
});
|
527
|
+
// Inserting an item in the middle doesn't change lastObject.
|
528
|
+
enumerable.replace(1, 0, [testObject]);
|
529
|
+
equals(callCount, 0, "The lastObject observer should have fired this many times (replace on enumerable %@)".fmt(i + 1));
|
513
530
|
|
514
|
-
|
531
|
+
// Removing an item in the middle doesn't change lastObject.
|
532
|
+
enumerable.replace(1, 1);
|
533
|
+
equals(callCount, 0, "The lastObject observer should have fired this many times (replace on enumerable %@)".fmt(i + 1));
|
534
|
+
|
535
|
+
// Shifting an item to the front doesn't change lastObject.
|
536
|
+
enumerable.shiftObject(testObject);
|
537
|
+
equals(callCount, 0, "The lastObject observer should have fired this many times (shiftObject on enumerable %@)".fmt(i + 1));
|
538
|
+
|
539
|
+
// Unshifting an item from the front doesn't change lastObject.
|
540
|
+
enumerable.unshiftObject(testObject);
|
541
|
+
equals(callCount, 0, "The lastObject observer should have fired this many times (unshiftObject on enumerable %@)".fmt(i + 1));
|
542
|
+
|
543
|
+
// Appending an item to the end changes the lastObject.
|
544
|
+
enumerable.pushObject(testObject);
|
545
|
+
equals(callCount, 1, "The lastObject observer should have fired this many times (pushObject on enumerable %@)".fmt(i + 1));
|
546
|
+
|
547
|
+
// Popping an item from the end changes the lastObject.
|
548
|
+
enumerable.popObject();
|
549
|
+
equals(callCount, 2, "The lastObject observer should have fired this many times (popObject on enumerable %@)".fmt(i + 1));
|
550
|
+
|
551
|
+
// Replacing only the last item changes the lastObject.
|
552
|
+
enumerable.replace(enumerable.get('length') - 1, 1, [testObject]);
|
553
|
+
equals(callCount, 3, "The lastObject observer should have fired this many times (replace on enumerable %@)".fmt(i + 1));
|
554
|
+
|
555
|
+
// Replacing the last two items with one greater number changes the lastObject.
|
556
|
+
enumerable.replace(enumerable.get('length') - 2, 2, [testObject, testObject, testObject]);
|
557
|
+
equals(callCount, 4, "The lastObject observer should have fired this many times (replace on enumerable %@)".fmt(i + 1));
|
558
|
+
|
559
|
+
// Replacing the last two items with same number changes the lastObject.
|
560
|
+
enumerable.replace(enumerable.get('length') - 2, 2, [testObject, testObject]);
|
561
|
+
equals(callCount, 5, "The lastObject observer should have fired this many times (replace on enumerable %@)".fmt(i + 1));
|
562
|
+
|
563
|
+
// Replacing the last two items with one fewer number changes the lastObject.
|
564
|
+
enumerable.replace(enumerable.get('length') - 2, 2, [testObject]);
|
565
|
+
equals(callCount, 6, "The lastObject observer should have fired this many times (replace on enumerable %@)".fmt(i + 1));
|
566
|
+
|
567
|
+
// Replacing the last two items with two fewer number changes the lastObject.
|
568
|
+
enumerable.replace(enumerable.get('length') - 2, 2);
|
569
|
+
equals(callCount, 7, "The lastObject observer should have fired this many times (replace on enumerable %@)".fmt(i + 1));
|
515
570
|
}
|
516
571
|
});
|
517
572
|
|
518
|
-
test("should trigger observer on property when firstObject changes", function() {
|
573
|
+
test("should trigger observer on property when firstObject changes", function () {
|
519
574
|
var src, ary2 = enumerables;
|
520
575
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
521
|
-
src = ary2[idx2]
|
576
|
+
src = ary2[idx2];
|
522
577
|
|
523
578
|
var callCount = 0;
|
524
|
-
src.addObserver("firstObject", function() {
|
579
|
+
src.addObserver("firstObject", function () {
|
525
580
|
callCount++;
|
526
581
|
});
|
527
582
|
|
@@ -531,20 +586,20 @@ test("should trigger observer on property when firstObject changes", function()
|
|
531
586
|
}
|
532
587
|
});
|
533
588
|
|
534
|
-
test("should trigger observer of reduced prop when array changes once property retrieved once", function() {
|
535
|
-
var src, ary2 = enumerables
|
589
|
+
test("should trigger observer of reduced prop when array changes once property retrieved once", function () {
|
590
|
+
var src, ary2 = enumerables;
|
536
591
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
537
|
-
src = ary2[idx2]
|
592
|
+
src = ary2[idx2];
|
538
593
|
// get the property...this will install the reducer property...
|
539
|
-
src.get("@max(balance)")
|
594
|
+
src.get("@max(balance)");
|
540
595
|
|
541
596
|
// install observer
|
542
|
-
var observedValue = null
|
543
|
-
src.addObserver("@max(balance)", function() {
|
597
|
+
var observedValue = null;
|
598
|
+
src.addObserver("@max(balance)", function () {
|
544
599
|
observedValue = src.get("@max(balance)");
|
545
|
-
})
|
600
|
+
});
|
546
601
|
|
547
|
-
//src.addProbe('[]')
|
602
|
+
//src.addProbe('[]');
|
548
603
|
//src.addProbe('@max(balance)');
|
549
604
|
|
550
605
|
// add record to array
|
@@ -555,26 +610,26 @@ test("should trigger observer of reduced prop when array changes once property r
|
|
555
610
|
ready: YES,
|
556
611
|
visited: "Paris",
|
557
612
|
balance: 5
|
558
|
-
})
|
613
|
+
});
|
559
614
|
|
560
|
-
//SC.NotificationQueue.flush()
|
615
|
+
//SC.NotificationQueue.flush(); // force observers to trigger
|
561
616
|
|
562
617
|
// observed value should now be set because the reduced property observer
|
563
618
|
// was triggered when we changed the array contents.
|
564
|
-
equals(5, observedValue, "observedValue")
|
619
|
+
equals(5, observedValue, "observedValue");
|
565
620
|
}
|
566
621
|
});
|
567
622
|
|
568
623
|
|
569
|
-
test("should trigger observer of reduced prop when array changes - even if you never retrieved the property before", function() {
|
570
|
-
var src, ary2 = enumerables
|
624
|
+
test("should trigger observer of reduced prop when array changes - even if you never retrieved the property before", function () {
|
625
|
+
var src, ary2 = enumerables;
|
571
626
|
for (var idx2=0, len2=ary2.length; idx2<len2; idx2++) {
|
572
|
-
src = ary2[idx2]
|
627
|
+
src = ary2[idx2];
|
573
628
|
// install observer
|
574
|
-
var observedValue = null
|
575
|
-
src.addObserver("@max(balance)", function() {
|
629
|
+
var observedValue = null;
|
630
|
+
src.addObserver("@max(balance)", function () {
|
576
631
|
observedValue = src.get("@max(balance)");
|
577
|
-
})
|
632
|
+
});
|
578
633
|
|
579
634
|
// add record to array
|
580
635
|
src.pushObject({
|
@@ -584,35 +639,35 @@ test("should trigger observer of reduced prop when array changes - even if you n
|
|
584
639
|
ready: YES,
|
585
640
|
visited: "Paris",
|
586
641
|
balance: 5
|
587
|
-
})
|
642
|
+
});
|
588
643
|
|
589
|
-
//SC.NotificationQueue.flush()
|
644
|
+
//SC.NotificationQueue.flush(); // force observers to trigger
|
590
645
|
|
591
646
|
// observed value should now be set because the reduced property observer
|
592
647
|
// was triggered when we changed the array contents.
|
593
|
-
equals(5, observedValue, "observedValue")
|
648
|
+
equals(5, observedValue, "observedValue");
|
594
649
|
}
|
595
650
|
});
|
596
651
|
|
597
|
-
test("should find the first element matching the criteria", function() {
|
598
|
-
var people = enumerables[1]
|
599
|
-
var jenna = people.find(function(person) { return person.gender == 'female'; });
|
652
|
+
test("should find the first element matching the criteria", function () {
|
653
|
+
var people = enumerables[1];
|
654
|
+
var jenna = people.find(function (person) { return person.gender == 'female'; });
|
600
655
|
equals(jenna.first, 'Jenna');
|
601
656
|
});
|
602
657
|
|
603
|
-
var source
|
658
|
+
var source; // global variables
|
604
659
|
|
605
660
|
module("Real Array", {
|
606
661
|
|
607
|
-
setup: function() {
|
662
|
+
setup: function () {
|
608
663
|
source = SC.$A(CommonArray);
|
609
664
|
},
|
610
665
|
|
611
|
-
teardown: function() {
|
612
|
-
delete source
|
666
|
+
teardown: function () {
|
667
|
+
delete source;
|
613
668
|
|
614
|
-
delete Array.prototype["@max(balance)"]
|
615
|
-
delete Array.prototype["@min(balance)"]
|
669
|
+
delete Array.prototype["@max(balance)"]; // remove cached value
|
670
|
+
delete Array.prototype["@min(balance)"];
|
616
671
|
}
|
617
672
|
|
618
673
|
});
|
@@ -631,23 +686,23 @@ module("Real Array", {
|
|
631
686
|
keys so that now they will be registered on the Array before any
|
632
687
|
property change notifications are sent.
|
633
688
|
*/
|
634
|
-
test("should notify observers even if reduced property is cached on prototype", function() {
|
689
|
+
test("should notify observers even if reduced property is cached on prototype", function () {
|
635
690
|
// make sure reduced property is cached
|
636
|
-
source.get("@max(balance)")
|
691
|
+
source.get("@max(balance)");
|
637
692
|
|
638
693
|
// now make a clone and observe
|
639
|
-
source = SC.$A(CommonArray)
|
694
|
+
source = SC.$A(CommonArray);
|
640
695
|
|
641
696
|
// get the property...this will install the reducer property...
|
642
|
-
source.get("@max(balance)")
|
697
|
+
source.get("@max(balance)");
|
643
698
|
|
644
699
|
// install observer
|
645
|
-
var observedValue = null
|
646
|
-
source.addObserver("@max(balance)", function() {
|
700
|
+
var observedValue = null;
|
701
|
+
source.addObserver("@max(balance)", function () {
|
647
702
|
observedValue = source.get("@max(balance)");
|
648
|
-
})
|
703
|
+
});
|
649
704
|
|
650
|
-
//source.addProbe('[]')
|
705
|
+
//source.addProbe('[]');
|
651
706
|
//source.addProbe('@max(balance)');
|
652
707
|
|
653
708
|
// add record to array
|
@@ -658,11 +713,11 @@ test("should notify observers even if reduced property is cached on prototype",
|
|
658
713
|
ready: YES,
|
659
714
|
visited: "Paris",
|
660
715
|
balance: 5
|
661
|
-
})
|
716
|
+
});
|
662
717
|
|
663
|
-
//SC.NotificationQueue.flush()
|
718
|
+
//SC.NotificationQueue.flush(); // force observers to trigger
|
664
719
|
|
665
720
|
// observed value should now be set because the reduced property observer
|
666
721
|
// was triggered when we changed the array contents.
|
667
|
-
equals(5, observedValue, "observedValue")
|
722
|
+
equals(5, observedValue, "observedValue");
|
668
723
|
});
|