sproutcore 1.7.1.beta → 1.8.0
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/CHANGELOG +44 -0
- data/README.rdoc +20 -20
- data/VERSION.yml +3 -3
- data/lib/Buildfile +1 -1
- data/lib/buildtasks/build.rake +5 -0
- data/lib/buildtasks/manifest.rake +19 -1
- data/lib/frameworks/sproutcore/Buildfile +19 -17
- data/lib/frameworks/sproutcore/CHANGELOG.md +163 -29
- data/lib/frameworks/sproutcore/README.md +29 -8
- data/lib/frameworks/sproutcore/apps/statechart_routing/Buildfile +12 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/login_controller.js +11 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/main_controller.js +7 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/statechart_controller.js +17 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +25 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/main.js +15 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/_theme.css +18 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/bar_page.js +14 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/foo_page.js +14 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/loading.rhtml +9 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +61 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/main_page.js +46 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/statechart.js +76 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/theme.js +27 -0
- data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
- data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +14 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +15 -15
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/animation/core.js +8 -5
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +302 -70
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +19 -14
- data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +471 -149
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +42 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +63 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +37 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +28 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +10 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +66 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +58 -57
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js.orig +445 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +51 -31
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +53 -69
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +98 -72
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +37 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +7 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +23 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/browser.js +66 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/event.js +22 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +17 -16
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +15 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +50 -30
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +46 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +1 -43
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +8 -34
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +6 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +46 -19
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -9
- data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +2 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +294 -302
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js.orig +1531 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +14 -11
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/many_array.js +63 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +50 -10
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +114 -67
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +54 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +29 -9
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +37 -45
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +127 -127
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +42 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -7
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +1 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +19 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +30 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +24 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +121 -28
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +15 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +39 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +14 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -51
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +11 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +0 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +9 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +107 -81
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +68 -60
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +57 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +21 -19
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +32 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +77 -132
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +5 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +16 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +52 -52
- data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +147 -147
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +11 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +22 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +13 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +462 -441
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +48 -62
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +150 -32
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +104 -45
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +42 -20
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +148 -154
- data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +8 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/files.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/view_configs.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/mixins/drop_down.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/web.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +21 -21
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +59 -53
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -10
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +17 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +38 -14
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +5 -13
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +19 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +20 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +35 -12
- data/lib/frameworks/sproutcore/frameworks/formatters/README +6 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/english.lproj/strings.js +174 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +351 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/tests/date_formatter.js +517 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +345 -138
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +176 -42
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +137 -105
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +16 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +47 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +28 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +0 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/bootstrap.rhtml +34 -19
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +0 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +1 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +8 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +179 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +34 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +26 -12
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +12 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_metric_optimization.js +202 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +77 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +163 -149
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +16 -43
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +67 -54
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -38
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +285 -242
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +13 -13
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +19 -22
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +231 -186
- data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +145 -143
- data/lib/frameworks/sproutcore/frameworks/media/views/video.js +156 -154
- data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js.orig +540 -0
- data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -8
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +98 -32
- data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +7 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +14 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +98 -13
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +8 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +23 -6
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +69 -18
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +57 -31
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +189 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +82 -22
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +125 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +37 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +75 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart_delegate.js +113 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +312 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +18 -22
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +508 -131
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +265 -44
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +11 -3
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/private/state_path_matcher.js +116 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/add_substate.js +108 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/with_concurrent.js +179 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/without_concurrent.js +74 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_state.js +141 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_substate.js +340 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/route_triggered.js +161 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/try_to_handle_event.js +288 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +5 -33
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +213 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +212 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/{state/namespacing.js → statechart/methods/get_state.js} +3 -41
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/{invoke_state_method.js → methods/invoke_state_method.js} +1 -1
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/{event_handling/advanced → statechart}/respond_to_event.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/system/state_route_handler_context/methods/retry.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/table/core.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/controls/button.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars.js +29 -5
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/bind.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/collection.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/localization.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{handlebars → template_view}/handlebars.js +493 -357
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/checkbox_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/text_field_support.js +13 -2
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/panes/template.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/controls/button.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/checkbox_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/text_field_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/panes/template.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/collection.js +39 -14
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/handlebars.js +57 -6
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/bindable_span.js +21 -6
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template_collection.js +55 -26
- data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +122 -122
- data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +1 -1
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +0 -1
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +4 -4
- data/lib/frameworks/sproutcore/lib/index.rhtml +55 -32
- data/lib/frameworks/sproutcore/license.js +2 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/body.css +5 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +21 -13
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +17 -10
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +4 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +20 -12
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +16 -8
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/jumbo/button.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/small/button.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +5 -3
- data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/toolbar.css +1 -1
- data/lib/gen/app/USAGE +17 -4
- data/lib/gen/language/Buildfile +4 -4
- data/lib/gen/language/USAGE +4 -4
- data/lib/gen/page/templates/pages/@target_name@/Buildfile +7 -7
- data/lib/gen/{html_app → statechart_app}/Buildfile +0 -0
- data/lib/gen/{html_app → statechart_app}/README +0 -0
- data/lib/gen/statechart_app/USAGE +21 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +9 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +24 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +26 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/_theme.css +18 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +21 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +8 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/states/ready_state.js +12 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/theme.js +24 -0
- data/lib/sproutcore/builders.rb +1 -0
- data/lib/sproutcore/builders/base.rb +19 -1
- data/lib/sproutcore/builders/chance_file.rb +6 -1
- data/lib/sproutcore/builders/handlebars.rb +1 -9
- data/lib/sproutcore/builders/javascript.rb +1 -10
- data/lib/sproutcore/builders/json.rb +25 -0
- data/lib/sproutcore/builders/less.rb +1 -1
- data/lib/sproutcore/builders/sass.rb +1 -1
- data/lib/sproutcore/builders/stylesheet.rb +1 -9
- data/lib/sproutcore/helpers/html5_manifest.rb +1 -1
- data/lib/sproutcore/helpers/static_helper.rb +42 -0
- data/lib/sproutcore/rack/proxy.rb +21 -3
- data/lib/sproutcore/rack/service.rb +3 -2
- data/lib/sproutcore/tools.rb +18 -25
- data/lib/sproutcore/tools/gen.rb +10 -3
- data/lib/sproutcore/tools/init.rb +11 -10
- data/spec/buildtasks/manifest/prepare_build_tasks/json_spec.rb +62 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -1
- data/spec/fixtures/builder_tests/apps/json_test/sc_static.json +2 -0
- data/spec/lib/builders/json_spec.rb +53 -0
- data/sproutcore.gemspec +2 -2
- data/vendor/chance/lib/chance/parser.rb +1 -1
- metadata +222 -177
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
- data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +0 -69
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
- data/lib/frameworks/sproutcore/frameworks/mini/license.js +0 -30
- data/lib/gen/html_app/USAGE +0 -15
- data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +0 -11
- data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -6
- data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +0 -1
- data/lib/gen/html_project/Buildfile +0 -45
- data/lib/gen/html_project/INIT +0 -3
- data/lib/gen/html_project/README +0 -1
- data/lib/gen/html_project/USAGE +0 -2
- data/lib/gen/html_project/templates/@filename@/Buildfile +0 -5
- data/lib/gen/html_project/templates/@filename@/README +0 -4
|
@@ -12,35 +12,95 @@
|
|
|
12
12
|
applications.
|
|
13
13
|
*/
|
|
14
14
|
SC.String = /** @scope SC.String.prototype */ {
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
This finds the value for a key in a formatting string.
|
|
18
|
+
|
|
19
|
+
Keys take the form:
|
|
20
|
+
|
|
21
|
+
key[:argument to formatter]
|
|
22
|
+
*/
|
|
23
|
+
_scs_valueForKey: function(key, data, /* for debugging purposes: */ string) {
|
|
24
|
+
var arg, value, formatter, argsplit = key.indexOf(':');
|
|
25
|
+
if (argsplit > -1) {
|
|
26
|
+
arg = key.substr(argsplit + 1);
|
|
27
|
+
key = key.substr(0, argsplit);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
value = data[key];
|
|
31
|
+
formatter = data[key + 'Formatter'];
|
|
32
|
+
|
|
33
|
+
// formatters are optional
|
|
34
|
+
if (formatter) value = formatter(value, arg);
|
|
35
|
+
else if (arg) {
|
|
36
|
+
throw "String.fmt was given a formatting string, but key `" + key + "` has no formatter! String: " + string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return value;
|
|
40
|
+
},
|
|
15
41
|
|
|
16
|
-
// Interpolate string. looks for %@ or %@1; to control the order of params.
|
|
17
42
|
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
43
|
+
Formats a string. You can format either with named parameters or
|
|
44
|
+
indexed, but not both.
|
|
45
|
+
|
|
46
|
+
Indexed Parameters
|
|
47
|
+
--------------------
|
|
48
|
+
Indexed parameters are just arguments you pass into format.
|
|
23
49
|
|
|
24
|
-
|
|
25
|
-
|
|
50
|
+
For example, if you call fmt("%@1 %3 %2", 1, 2, 3), you'll get "1 3 2" as output.
|
|
51
|
+
|
|
52
|
+
If you don't supply a number, it will use them in the order you supplied. For instance:
|
|
53
|
+
|
|
54
|
+
"abc".fmt("%@, %@", "Iskander", "Alex") would return "Iskander, Alex".
|
|
26
55
|
|
|
27
|
-
|
|
28
|
-
|
|
56
|
+
Named Paramters
|
|
57
|
+
--------------------
|
|
58
|
+
You can use named parameters like this:
|
|
29
59
|
|
|
30
|
-
"
|
|
31
|
-
|
|
60
|
+
"Value: %{key_name}".fmt({ key_name: "A Value" })
|
|
61
|
+
|
|
62
|
+
// -> "Value: A Value"
|
|
63
|
+
|
|
64
|
+
You can supply formatters for each field. A formatter is a method to get applied
|
|
65
|
+
to the parameter:
|
|
66
|
+
|
|
67
|
+
Currency = function(v) { return "$" + v; };
|
|
68
|
+
"Value: %{val}".fmt({ val: 12.00, valFormatter: Currency })
|
|
69
|
+
|
|
70
|
+
// -> $12.00
|
|
71
|
+
|
|
72
|
+
Formatters can also use arguments:
|
|
73
|
+
|
|
74
|
+
Currency = function(v, sign) { return sign + v; };
|
|
75
|
+
"Value: %{val:£}".fmt({ val: 12.00, valFormatter: Currency })
|
|
76
|
+
|
|
77
|
+
// -> £12.00
|
|
32
78
|
|
|
33
|
-
|
|
34
|
-
|
|
79
|
+
You can supply a different formatter for each named parameter. Formatters can ONLY be
|
|
80
|
+
used with named parameters (not indexed parameters).
|
|
81
|
+
|
|
35
82
|
*/
|
|
36
|
-
fmt: function(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
83
|
+
fmt: function(string, args) {
|
|
84
|
+
var i = 0, data = undefined, hasHadNamedArguments;
|
|
85
|
+
if (args) {
|
|
86
|
+
data = args[0];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return string.replace(/%\{(.*?)\}/g, function(match, propertyPath) {
|
|
90
|
+
hasHadNamedArguments = YES;
|
|
91
|
+
if (!data) {
|
|
92
|
+
throw "Cannot use named parameters with `fmt` without a data hash. String: '" + string + "'";
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return SC.String._scs_valueForKey(propertyPath, data, string);
|
|
96
|
+
}).replace(/%@([0-9]+)?/g, function(match, index) {
|
|
97
|
+
if (hasHadNamedArguments) {
|
|
98
|
+
throw "Invalid attempt to use both named parameters and indexed parameters. String: '" + string + "'";
|
|
99
|
+
}
|
|
100
|
+
index = index ? parseInt(index, 10) - 1 : i++;
|
|
101
|
+
if(args[index]!==undefined) return args[index];
|
|
102
|
+
else return "";
|
|
103
|
+
});
|
|
44
104
|
},
|
|
45
105
|
|
|
46
106
|
/**
|
|
@@ -42,3 +42,23 @@ test("chained observers on enumerable properties are triggered when the observed
|
|
|
42
42
|
equals(observerFiredCount, 0, "observer did not fire after removing changing property on a removed object");
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
+
test("content observers are removed correctly", function() {
|
|
46
|
+
var child1 = SC.Object.create({ name: "Bartholomew", age: 15 });
|
|
47
|
+
var child2 = SC.Object.create({ name: "Agnes", age: 12 });
|
|
48
|
+
var children = [child1, child2];
|
|
49
|
+
|
|
50
|
+
var observerFiredCount = 0;
|
|
51
|
+
var observerFunc = function() { observerFiredCount++; }
|
|
52
|
+
|
|
53
|
+
children.addObserver('@each.name', this, observerFunc);
|
|
54
|
+
children.removeObserver('@each.name', this, observerFunc);
|
|
55
|
+
observerFiredCount = 0;
|
|
56
|
+
SC.run(function() { children.setEach('name', "Hanna"); });
|
|
57
|
+
equals(observerFiredCount, 0, "name observer did not fire after it was removed");
|
|
58
|
+
|
|
59
|
+
children.addObserver('@each.age', this, observerFunc);
|
|
60
|
+
children.removeObserver('@each.age', this, observerFunc);
|
|
61
|
+
observerFiredCount = 0;
|
|
62
|
+
SC.run(function() { children.setEach('age', 14); });
|
|
63
|
+
equals(observerFiredCount, 0, "age observer did not fire after it was removed");
|
|
64
|
+
});
|
|
@@ -307,7 +307,7 @@ module("Computed properties", {
|
|
|
307
307
|
return 'dependentCached';
|
|
308
308
|
}.property('changer').cacheable(),
|
|
309
309
|
|
|
310
|
-
//
|
|
310
|
+
// every time it is recomputed, increments call
|
|
311
311
|
incCallCount: 0,
|
|
312
312
|
inc: function() {
|
|
313
313
|
return this.incCallCount++;
|
|
@@ -587,10 +587,14 @@ test("cacheable nested dependent keys should clear after their dependencies upda
|
|
|
587
587
|
module("Observable objects & object properties ", {
|
|
588
588
|
|
|
589
589
|
setup: function() {
|
|
590
|
+
window.NormalArray = [1,2,3,4,5];
|
|
591
|
+
|
|
590
592
|
object = SC.Object.create({
|
|
591
593
|
|
|
592
594
|
normal: 'value',
|
|
593
595
|
abnormal: 'zeroValue',
|
|
596
|
+
abnormal2: 'zeroValue',
|
|
597
|
+
abnormal3: 'zeroValue',
|
|
594
598
|
numberVal: 24,
|
|
595
599
|
toggleVal: true,
|
|
596
600
|
observedProperty: 'beingWatched',
|
|
@@ -620,9 +624,21 @@ module("Observable objects & object properties ", {
|
|
|
620
624
|
|
|
621
625
|
testArrayObserver:function(){
|
|
622
626
|
this.abnormal = 'notifiedObserver';
|
|
623
|
-
}.observes('*normalArray.[]')
|
|
627
|
+
}.observes('*normalArray.[]'),
|
|
628
|
+
|
|
629
|
+
testArrayObserver2:function(){
|
|
630
|
+
this.abnormal2 = 'notifiedObserver';
|
|
631
|
+
}.observes('normalArray.[]'),
|
|
632
|
+
|
|
633
|
+
testArrayObserver3:function(){
|
|
634
|
+
this.abnormal3 = 'notifiedObserver';
|
|
635
|
+
}.observes('NormalArray.[]')
|
|
624
636
|
|
|
625
637
|
});
|
|
638
|
+
},
|
|
639
|
+
|
|
640
|
+
teardown: function() {
|
|
641
|
+
window.NormalArray = null;
|
|
626
642
|
}
|
|
627
643
|
|
|
628
644
|
});
|
|
@@ -652,9 +668,18 @@ test('should not notify the observers of a property automatically',function(){
|
|
|
652
668
|
equals(object.abnormal,'zeroValue') ;
|
|
653
669
|
});
|
|
654
670
|
|
|
655
|
-
test('should notify array observer when array changes',function(){
|
|
671
|
+
test('should notify array observer when object\'s array changes',function(){
|
|
656
672
|
object.normalArray.replace(0,0,6);
|
|
657
|
-
equals(object.abnormal, 'notifiedObserver', '
|
|
673
|
+
equals(object.abnormal, 'notifiedObserver', 'testArrayObserver should be notified');
|
|
674
|
+
equals(object.abnormal2, 'notifiedObserver', 'testArrayObserver2 should be notified');
|
|
675
|
+
equals(object.abnormal3, 'zeroValue', 'testArrayObserver3 should not be notified');
|
|
676
|
+
});
|
|
677
|
+
|
|
678
|
+
test('should notify array observer when NormalArray array changes',function(){
|
|
679
|
+
window.NormalArray.replace(0,0,6);
|
|
680
|
+
equals(object.abnormal, 'zeroValue', 'testArrayObserver should not be notified');
|
|
681
|
+
equals(object.abnormal2, 'zeroValue', 'testArrayObserver2 should not be notified');
|
|
682
|
+
equals(object.abnormal3, 'notifiedObserver', 'testArrayObserver3 should be notified');
|
|
658
683
|
});
|
|
659
684
|
|
|
660
685
|
|
|
@@ -866,3 +891,99 @@ test("changing chained observer object to null should not raise exception", func
|
|
|
866
891
|
equals(callCount, 1, 'changing bar should trigger observer');
|
|
867
892
|
expect(3);
|
|
868
893
|
});
|
|
894
|
+
|
|
895
|
+
module("addObservesHandler and removeObservesHandler functions", {
|
|
896
|
+
|
|
897
|
+
setup: function() {
|
|
898
|
+
window.TestNS = SC.Object.create({
|
|
899
|
+
value: 0
|
|
900
|
+
});
|
|
901
|
+
|
|
902
|
+
objectA = SC.Object.create({
|
|
903
|
+
|
|
904
|
+
value: 0,
|
|
905
|
+
arrayValue: [],
|
|
906
|
+
|
|
907
|
+
handler1NotifiedCount: 0,
|
|
908
|
+
handler2NotifiedCount: 0,
|
|
909
|
+
arrayHandlerNotifiedCount: 0,
|
|
910
|
+
|
|
911
|
+
handler1: function() {
|
|
912
|
+
this.handler1NotifiedCount++;
|
|
913
|
+
},
|
|
914
|
+
|
|
915
|
+
handler2: function() {
|
|
916
|
+
this.handler2NotifiedCount++;
|
|
917
|
+
},
|
|
918
|
+
|
|
919
|
+
arrayHandler: function() {
|
|
920
|
+
this.arrayHandlerNotifiedCount++;
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
});
|
|
924
|
+
},
|
|
925
|
+
|
|
926
|
+
teardown: function() {
|
|
927
|
+
objectA = null;
|
|
928
|
+
window.TestNS = null;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
});
|
|
932
|
+
|
|
933
|
+
test("add and remove observer handler1", function() {
|
|
934
|
+
objectA.addObservesHandler(objectA.handler1, 'value');
|
|
935
|
+
objectA.set('value', 100);
|
|
936
|
+
equals(objectA.handler1NotifiedCount, 1, "observes handler1 should be notified");
|
|
937
|
+
|
|
938
|
+
objectA.removeObservesHandler(objectA.handler1, 'value');
|
|
939
|
+
objectA.set('value', 200);
|
|
940
|
+
equals(objectA.handler1NotifiedCount, 1, "observes handler1 should not be notified");
|
|
941
|
+
});
|
|
942
|
+
|
|
943
|
+
test("add and remove observer handler2", function() {
|
|
944
|
+
objectA.addObservesHandler(objectA.handler2, 'TestNS.value');
|
|
945
|
+
window.TestNS.set('value', 1000);
|
|
946
|
+
equals(objectA.handler2NotifiedCount, 1, "observes handler2 should be notified");
|
|
947
|
+
|
|
948
|
+
objectA.removeObservesHandler(objectA.handler2, 'TestNS.value');
|
|
949
|
+
window.TestNS.set('value', 2000);
|
|
950
|
+
equals(objectA.handler2NotifiedCount, 1, "observes handler1 should not be notified");
|
|
951
|
+
});
|
|
952
|
+
|
|
953
|
+
test("add and remove observer array handler without chain observes", function() {
|
|
954
|
+
objectA.addObservesHandler(objectA.arrayHandler, 'arrayValue.[]');
|
|
955
|
+
objectA.arrayValue.pushObject(SC.Object.create());
|
|
956
|
+
ok(objectA.arrayHandlerNotifiedCount > 0, "observes array handler should be notified aftering pushing object to array");
|
|
957
|
+
|
|
958
|
+
objectA.arrayHandlerNotifiedCount = 0;
|
|
959
|
+
|
|
960
|
+
objectA.removeObservesHandler(objectA.arrayHandler, 'arrayValue.[]');
|
|
961
|
+
objectA.arrayValue.pushObject(SC.Object.create());
|
|
962
|
+
equals(objectA.arrayHandlerNotifiedCount, 0, "observes array handler should not be notified after removing observes handler");
|
|
963
|
+
|
|
964
|
+
objectA.addObservesHandler(objectA.arrayHandler, 'arrayValue.[]');
|
|
965
|
+
objectA.set('arrayValue', []);
|
|
966
|
+
equals(objectA.arrayHandlerNotifiedCount, 0, "observes array handler should not be notified after assigning new array");
|
|
967
|
+
objectA.arrayValue.pushObject(SC.Object.create());
|
|
968
|
+
equals(objectA.arrayHandlerNotifiedCount, 0, "observes array handler should not be notified after pushing object to new array");
|
|
969
|
+
});
|
|
970
|
+
|
|
971
|
+
test("add and remove observer array handler with chain observes", function() {
|
|
972
|
+
objectA.addObservesHandler(objectA.arrayHandler, '*arrayValue.[]');
|
|
973
|
+
objectA.arrayValue.pushObject(SC.Object.create());
|
|
974
|
+
ok(objectA.arrayHandlerNotifiedCount > 0, "observes array handler should be notified aftering pushing object to array");
|
|
975
|
+
|
|
976
|
+
objectA.arrayHandlerNotifiedCount = 0;
|
|
977
|
+
|
|
978
|
+
objectA.removeObservesHandler(objectA.arrayHandler, '*arrayValue.[]');
|
|
979
|
+
objectA.arrayValue.pushObject(SC.Object.create());
|
|
980
|
+
equals(objectA.arrayHandlerNotifiedCount, 0, "observes array handler should not be notified of push after removing observes handler");
|
|
981
|
+
objectA.set('arrayValue', []);
|
|
982
|
+
equals(objectA.arrayHandlerNotifiedCount, 0, "observes array handler should not be notified of new array after removing observes handler");
|
|
983
|
+
|
|
984
|
+
objectA.addObservesHandler(objectA.arrayHandler, '*arrayValue.[]');
|
|
985
|
+
objectA.set('arrayValue', []);
|
|
986
|
+
ok(objectA.arrayHandlerNotifiedCount > 0, "observes array handler should be notified after assigning new array");
|
|
987
|
+
objectA.arrayValue.pushObject(SC.Object.create());
|
|
988
|
+
ok(objectA.arrayHandlerNotifiedCount > 0, "observes array handler should be notified after pushing object to new array");
|
|
989
|
+
});
|
|
@@ -85,7 +85,7 @@ test("Object not yet instantiated", function() {
|
|
|
85
85
|
SC.Observers.flush(garage);
|
|
86
86
|
ok(SC.Observers.queue.some(function(el) { return el[1] === observer; }), "The observer should still be in the queue.");
|
|
87
87
|
|
|
88
|
-
// 3. After we instantiate the class, a call to SC.Observers.flush
|
|
88
|
+
// 3. After we instantiate the class, a call to SC.Observers.flush should remove the object from the queue...
|
|
89
89
|
car = garage.car = car.create({ make: 'Renault' });
|
|
90
90
|
SC.Observers.flush(garage);
|
|
91
91
|
ok(!SC.Observers.queue.some(function(el) { return el[1] === observer; }), "The observer should have been removed from the queue.");
|
|
@@ -186,7 +186,7 @@ module("chained binding", {
|
|
|
186
186
|
|
|
187
187
|
});
|
|
188
188
|
|
|
189
|
-
test("changing first output should
|
|
189
|
+
test("changing first output should propagate to third after flush", function() {
|
|
190
190
|
first.set("output", "change") ;
|
|
191
191
|
equals("change", first.get("output"), "first.output") ;
|
|
192
192
|
ok("change" !== third.get("input"), "third.input") ;
|
|
@@ -230,7 +230,7 @@ module("Custom Binding", {
|
|
|
230
230
|
}
|
|
231
231
|
});
|
|
232
232
|
|
|
233
|
-
test("Binding value1 such that it will
|
|
233
|
+
test("Binding value1 such that it will receive only single values", function() {
|
|
234
234
|
var bon1 = Bon1.create({
|
|
235
235
|
value1Binding: SC.Binding.single("TestNamespace.bon2.val1"),
|
|
236
236
|
array1Binding: SC.Binding.single("TestNamespace.bon2.arr")
|
data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js
CHANGED
|
@@ -33,4 +33,41 @@ test("index past last index", function() {
|
|
|
33
33
|
equals(set.rangeStartForIndex(start+len+20), start+len, 'should return end of range');
|
|
34
34
|
});
|
|
35
35
|
|
|
36
|
+
test("creating holes by appending to an existing range should not affect the range start", function () {
|
|
37
|
+
var hintSize = SC.IndexSet.HINT_SIZE,
|
|
38
|
+
start, set;
|
|
36
39
|
|
|
40
|
+
set = SC.IndexSet.create();
|
|
41
|
+
|
|
42
|
+
set.add(1);
|
|
43
|
+
set.add(hintSize + 1);
|
|
44
|
+
|
|
45
|
+
// Before adding 2,
|
|
46
|
+
// the internal data structure looks like:
|
|
47
|
+
// {
|
|
48
|
+
// 0 : - 1, // Hole until 1
|
|
49
|
+
// 1 : 2, // End of range is 2
|
|
50
|
+
// 2 : -257, // Hole until 257
|
|
51
|
+
// 256: 2, // Hint points at index 2, which is ok.
|
|
52
|
+
// 257: 258, // End of range is 258
|
|
53
|
+
// 258: 0 // End of index set
|
|
54
|
+
// }
|
|
55
|
+
equals(set.rangeStartForIndex(hintSize),
|
|
56
|
+
set.rangeStartForIndex(hintSize - 1));
|
|
57
|
+
|
|
58
|
+
set.add(2);
|
|
59
|
+
|
|
60
|
+
// Assuming SC.IndexSet.HINT_SIZE is 256,
|
|
61
|
+
// the internal data structure looks like:
|
|
62
|
+
// {
|
|
63
|
+
// 0 : - 1, // Hole until 1
|
|
64
|
+
// 1 : 3, // End of range is 3
|
|
65
|
+
// 3 : -257, // Hole until 257
|
|
66
|
+
// 256: 2, // Hint points at index 2, which is invalid.
|
|
67
|
+
// 257: 258, // End of range is 258
|
|
68
|
+
// 258: 0 // End of index set
|
|
69
|
+
// }
|
|
70
|
+
|
|
71
|
+
equals(set.rangeStartForIndex(hintSize),
|
|
72
|
+
set.rangeStartForIndex(hintSize - 1));
|
|
73
|
+
});
|
|
@@ -156,7 +156,7 @@ test("remove a range should trigger an observer notification", function() {
|
|
|
156
156
|
equals(callCnt, 1, 'should have called observer once');
|
|
157
157
|
});
|
|
158
158
|
|
|
159
|
-
test("removing a non-
|
|
159
|
+
test("removing a non-existent range should not trigger observer notification", function() {
|
|
160
160
|
var callCnt = 0;
|
|
161
161
|
|
|
162
162
|
set.addObserver('[]', function() { callCnt++; });
|
|
@@ -176,7 +176,7 @@ test("removing an index range outside of target range (specific bug)", function(
|
|
|
176
176
|
var set = SC.IndexSet.create(10,3);
|
|
177
177
|
var set2 = SC.IndexSet.create(0,3);
|
|
178
178
|
|
|
179
|
-
// removing set2 from set should not changed set at all
|
|
179
|
+
// removing set2 from set should not changed set at all because it is
|
|
180
180
|
// before the first range, but it causes a problem with the length.
|
|
181
181
|
set.remove(set2);
|
|
182
182
|
equals(set.get('length'), 3, 'length should not change');
|
|
@@ -263,3 +263,19 @@ test("Ensure that log messages via the “will not format” methods don’t for
|
|
|
263
263
|
equals(SC.Logger.getPath('recordedLogMessages.3').originalArguments[1], null, "errorWithoutFmt() should record all the arguments (1)");
|
|
264
264
|
equals(SC.Logger.getPath('recordedLogMessages.3').originalArguments[2], 1, "errorWithoutFmt() should record all the arguments (2)");
|
|
265
265
|
});
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
// ..........................................................
|
|
270
|
+
// LOG MESSAGE PREFIX
|
|
271
|
+
//
|
|
272
|
+
test("Ensure that the log message prefix is respected", function() {
|
|
273
|
+
SC.Logger.set('recordedLogMessages', null);
|
|
274
|
+
|
|
275
|
+
SC.Logger.set('logRecordingLevel', SC.LOGGER_LEVEL_DEBUG);
|
|
276
|
+
|
|
277
|
+
SC.Logger.set('messagePrefix', "prefix: ");
|
|
278
|
+
SC.Logger.debug("message");
|
|
279
|
+
|
|
280
|
+
equals(SC.Logger.getPath('recordedLogMessages.0').message, "prefix: message", "The message should have the specified prefix");
|
|
281
|
+
});
|
|
@@ -26,7 +26,7 @@ module("System:run_loop() - chained binding", {
|
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
28
|
|
|
29
|
-
test("Should
|
|
29
|
+
test("Should propagate bindings after the RunLoop completes (using SC.RunLoop)", function() {
|
|
30
30
|
SC.RunLoop.begin();
|
|
31
31
|
//Binding of output of first object to input of second object
|
|
32
32
|
binding1 = SC.Binding.from("output", first).to("input", second).connect() ;
|
|
@@ -54,7 +54,7 @@ test("Should propograte bindings after the RunLoop completes (using SC.RunLoop)"
|
|
|
54
54
|
equals(second.get("output"), "change") ;
|
|
55
55
|
});
|
|
56
56
|
|
|
57
|
-
test("Should
|
|
57
|
+
test("Should propagate bindings after the RunLoop completes (using SC.beginRunLoop)", function() {
|
|
58
58
|
SC.beginRunLoop;
|
|
59
59
|
//Binding of output of first object to input of second object
|
|
60
60
|
binding1 = SC.Binding.from("output", first).to("input", second).connect() ;
|
|
@@ -83,7 +83,7 @@ test("Should propograte bindings after the RunLoop completes (using SC.beginRunL
|
|
|
83
83
|
equals(second.get("output"), "change") ;
|
|
84
84
|
});
|
|
85
85
|
|
|
86
|
-
test("Should
|
|
86
|
+
test("Should propagate bindings after the RunLoop completes (checking invokeOnce() function)", function() {
|
|
87
87
|
SC.RunLoop.begin();
|
|
88
88
|
//Binding of output of first object to input of second object
|
|
89
89
|
binding1 = SC.Binding.from("output", first).to("input", second).connect() ;
|
|
@@ -123,4 +123,75 @@ test("Should propograte bindings after the RunLoop completes (checking invokeOnc
|
|
|
123
123
|
//Since the invoker function is called only once the value of output did not change.
|
|
124
124
|
equals(second.get("output"), "change") ;
|
|
125
125
|
|
|
126
|
-
});
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
test("Should flush the invoke last queue at the end of the current run loop", function () {
|
|
129
|
+
var iCalled = 0;
|
|
130
|
+
SC.RunLoop.begin();
|
|
131
|
+
|
|
132
|
+
SC.RunLoop.currentRunLoop.invokeLast(function () {
|
|
133
|
+
iCalled++;
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
ok(!iCalled, "should not have flushed the invokeLast queue");
|
|
137
|
+
SC.RunLoop.end();
|
|
138
|
+
ok(iCalled, "should have flushed the invokeLast queue");
|
|
139
|
+
|
|
140
|
+
SC.RunLoop.begin();
|
|
141
|
+
SC.RunLoop.end();
|
|
142
|
+
equals(iCalled, 1, "should have flushed the invokeLast queue only once");
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
test("Should repeatedly flush the invoke last queue until there are no more items", function () {
|
|
146
|
+
var iCalled = 0;
|
|
147
|
+
SC.RunLoop.begin();
|
|
148
|
+
|
|
149
|
+
SC.RunLoop.currentRunLoop.invokeLast(function () {
|
|
150
|
+
iCalled++;
|
|
151
|
+
if (iCalled < 5) {
|
|
152
|
+
SC.RunLoop.currentRunLoop.invokeLast(arguments.callee);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
ok(!iCalled, "should not have flushed the invokeLast queue");
|
|
157
|
+
SC.RunLoop.end();
|
|
158
|
+
ok(iCalled, "should have flushed the invokeLast queue");
|
|
159
|
+
equals(iCalled, 5, "should have flushed the invokeLast queue 5 times");
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
test("Should flush the invoke next queue at the beginning of the next run loop", function () {
|
|
163
|
+
var iCalled = 0;
|
|
164
|
+
SC.RunLoop.begin();
|
|
165
|
+
|
|
166
|
+
SC.RunLoop.currentRunLoop.invokeNext(function () {
|
|
167
|
+
iCalled++;
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
SC.RunLoop.end();
|
|
171
|
+
ok(!iCalled, "should not have flushed the invokeNext queue");
|
|
172
|
+
|
|
173
|
+
SC.RunLoop.begin();
|
|
174
|
+
ok(iCalled, "should have flushed the invokeNext queue");
|
|
175
|
+
|
|
176
|
+
SC.RunLoop.end();
|
|
177
|
+
equals(iCalled, 1, "should have flushed the invokeNext queue only once");
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
test("Calling invokeNext inside an invokeNext invocation will schedule for the function to run in the next run loop", function () {
|
|
181
|
+
var iCalled = 0;
|
|
182
|
+
SC.RunLoop.begin();
|
|
183
|
+
|
|
184
|
+
SC.RunLoop.currentRunLoop.invokeNext(function () {
|
|
185
|
+
if (iCalled < 5) {
|
|
186
|
+
SC.RunLoop.currentRunLoop.invokeNext(arguments.callee);
|
|
187
|
+
}
|
|
188
|
+
iCalled++;
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
for (var i = 0; i < 5; i++) {
|
|
192
|
+
equals(iCalled, i, "should have flushed the invokeNext queue " + i + " time" + (i !== 1 ? 's' : ''));
|
|
193
|
+
SC.RunLoop.end();
|
|
194
|
+
SC.RunLoop.begin();
|
|
195
|
+
}
|
|
196
|
+
equals(iCalled, 5, "should have flushed the invokeNext queue 5 times");
|
|
197
|
+
});
|