From 4a85555831c55961a5100be18b0fe0b555b51945 Mon Sep 17 00:00:00 2001 From: James Mead <3169+floehopper@users.noreply.github.com> Date: Tue, 15 Jan 2019 14:40:39 +0000 Subject: [PATCH] Add documentation to repo These docs were generated from the latest release tag, i.e. v1.7.0. The idea is to serve them from GitHub Pages and we'll only regenerate and commit them for a release. I used the following commands: MOCHA_GENERATE_DOCS=true bundle install MOCHA_GENERATE_DOCS=true GOOGLE_ANALYTICS_WEB_PROPERTY_ID=UA-45002715-2 rake generate_docs --- .gitignore | 1 - doc/Mocha.html | 129 + doc/Mocha/API.html | 1058 ++++++ doc/Mocha/ClassMethods.html | 269 ++ doc/Mocha/Configuration.html | 628 ++++ doc/Mocha/Expectation.html | 2711 +++++++++++++++ doc/Mocha/ExpectationError.html | 159 + doc/Mocha/ExpectationErrorFactory.html | 271 ++ doc/Mocha/Hooks.html | 387 +++ doc/Mocha/Integration.html | 127 + doc/Mocha/Integration/MiniTest.html | 125 + doc/Mocha/Integration/MiniTest/Adapter.html | 167 + doc/Mocha/Integration/TestUnit.html | 125 + doc/Mocha/Integration/TestUnit/Adapter.html | 167 + doc/Mocha/Mock.html | 1199 +++++++ doc/Mocha/ObjectMethods.html | 714 ++++ doc/Mocha/ParameterMatchers.html | 3051 +++++++++++++++++ doc/Mocha/ParameterMatchers/AllOf.html | 156 + doc/Mocha/ParameterMatchers/AnyOf.html | 156 + .../ParameterMatchers/AnyParameters.html | 155 + doc/Mocha/ParameterMatchers/Anything.html | 155 + doc/Mocha/ParameterMatchers/Base.html | 450 +++ doc/Mocha/ParameterMatchers/Equals.html | 156 + .../ParameterMatchers/EquivalentUri.html | 155 + doc/Mocha/ParameterMatchers/HasEntries.html | 156 + doc/Mocha/ParameterMatchers/HasEntry.html | 156 + doc/Mocha/ParameterMatchers/HasKey.html | 156 + doc/Mocha/ParameterMatchers/HasValue.html | 156 + doc/Mocha/ParameterMatchers/Includes.html | 156 + doc/Mocha/ParameterMatchers/InstanceOf.html | 156 + doc/Mocha/ParameterMatchers/IsA.html | 155 + doc/Mocha/ParameterMatchers/KindOf.html | 156 + doc/Mocha/ParameterMatchers/Not.html | 156 + doc/Mocha/ParameterMatchers/Optionally.html | 155 + .../ParameterMatchers/RegexpMatches.html | 156 + doc/Mocha/ParameterMatchers/RespondsWith.html | 156 + .../ParameterMatchers/YamlEquivalent.html | 156 + doc/Mocha/Sequence.html | 151 + doc/Mocha/StateMachine.html | 541 +++ doc/Mocha/StateMachine/State.html | 143 + doc/Mocha/StateMachine/StatePredicate.html | 143 + doc/Mocha/StubbingError.html | 152 + doc/Mocha/UnexpectedInvocation.html | 142 + doc/_index.html | 539 +++ doc/class_list.html | 51 + doc/css/common.css | 1 + doc/css/full_list.css | 58 + doc/css/style.css | 496 +++ doc/file.COPYING.html | 83 + doc/file.MIT-LICENSE.html | 87 + doc/file.README.html | 419 +++ doc/file.RELEASE.html | 865 +++++ doc/file_list.html | 71 + doc/frames.html | 17 + doc/index.html | 419 +++ doc/js/app.js | 292 ++ doc/js/full_list.js | 216 ++ doc/js/jquery.js | 4 + doc/method_list.html | 571 +++ doc/top-level-namespace.html | 120 + 60 files changed, 20277 insertions(+), 1 deletion(-) create mode 100644 doc/Mocha.html create mode 100644 doc/Mocha/API.html create mode 100644 doc/Mocha/ClassMethods.html create mode 100644 doc/Mocha/Configuration.html create mode 100644 doc/Mocha/Expectation.html create mode 100644 doc/Mocha/ExpectationError.html create mode 100644 doc/Mocha/ExpectationErrorFactory.html create mode 100644 doc/Mocha/Hooks.html create mode 100644 doc/Mocha/Integration.html create mode 100644 doc/Mocha/Integration/MiniTest.html create mode 100644 doc/Mocha/Integration/MiniTest/Adapter.html create mode 100644 doc/Mocha/Integration/TestUnit.html create mode 100644 doc/Mocha/Integration/TestUnit/Adapter.html create mode 100644 doc/Mocha/Mock.html create mode 100644 doc/Mocha/ObjectMethods.html create mode 100644 doc/Mocha/ParameterMatchers.html create mode 100644 doc/Mocha/ParameterMatchers/AllOf.html create mode 100644 doc/Mocha/ParameterMatchers/AnyOf.html create mode 100644 doc/Mocha/ParameterMatchers/AnyParameters.html create mode 100644 doc/Mocha/ParameterMatchers/Anything.html create mode 100644 doc/Mocha/ParameterMatchers/Base.html create mode 100644 doc/Mocha/ParameterMatchers/Equals.html create mode 100644 doc/Mocha/ParameterMatchers/EquivalentUri.html create mode 100644 doc/Mocha/ParameterMatchers/HasEntries.html create mode 100644 doc/Mocha/ParameterMatchers/HasEntry.html create mode 100644 doc/Mocha/ParameterMatchers/HasKey.html create mode 100644 doc/Mocha/ParameterMatchers/HasValue.html create mode 100644 doc/Mocha/ParameterMatchers/Includes.html create mode 100644 doc/Mocha/ParameterMatchers/InstanceOf.html create mode 100644 doc/Mocha/ParameterMatchers/IsA.html create mode 100644 doc/Mocha/ParameterMatchers/KindOf.html create mode 100644 doc/Mocha/ParameterMatchers/Not.html create mode 100644 doc/Mocha/ParameterMatchers/Optionally.html create mode 100644 doc/Mocha/ParameterMatchers/RegexpMatches.html create mode 100644 doc/Mocha/ParameterMatchers/RespondsWith.html create mode 100644 doc/Mocha/ParameterMatchers/YamlEquivalent.html create mode 100644 doc/Mocha/Sequence.html create mode 100644 doc/Mocha/StateMachine.html create mode 100644 doc/Mocha/StateMachine/State.html create mode 100644 doc/Mocha/StateMachine/StatePredicate.html create mode 100644 doc/Mocha/StubbingError.html create mode 100644 doc/Mocha/UnexpectedInvocation.html create mode 100644 doc/_index.html create mode 100644 doc/class_list.html create mode 100644 doc/css/common.css create mode 100644 doc/css/full_list.css create mode 100644 doc/css/style.css create mode 100644 doc/file.COPYING.html create mode 100644 doc/file.MIT-LICENSE.html create mode 100644 doc/file.README.html create mode 100644 doc/file.RELEASE.html create mode 100644 doc/file_list.html create mode 100644 doc/frames.html create mode 100644 doc/index.html create mode 100644 doc/js/app.js create mode 100644 doc/js/full_list.js create mode 100644 doc/js/jquery.js create mode 100644 doc/method_list.html create mode 100644 doc/top-level-namespace.html diff --git a/.gitignore b/.gitignore index ce97cff49..0b9a35484 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ TODO Gemfile*.lock -doc pkg tmp diff --git a/doc/Mocha.html b/doc/Mocha.html new file mode 100644 index 000000000..6d8b5fe36 --- /dev/null +++ b/doc/Mocha.html @@ -0,0 +1,129 @@ + + + + + + + Module: Mocha + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Mocha + + + +

+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/api.rb,
+ lib/mocha/hooks.rb,
lib/mocha/mock.rb,
lib/mocha/expectation.rb,
lib/mocha/object_methods.rb,
lib/mocha/class_methods.rb,
lib/mocha/parameter_matchers.rb,
lib/mocha/parameter_matchers/not.rb,
lib/mocha/parameter_matchers/base.rb,
lib/mocha/parameter_matchers/is_a.rb,
lib/mocha/parameter_matchers/all_of.rb,
lib/mocha/parameter_matchers/any_of.rb,
lib/mocha/parameter_matchers/equals.rb,
lib/mocha/parameter_matchers/object.rb,
lib/mocha/parameter_matchers/has_key.rb,
lib/mocha/parameter_matchers/kind_of.rb,
lib/mocha/parameter_matchers/anything.rb,
lib/mocha/parameter_matchers/includes.rb,
lib/mocha/parameter_matchers/has_entry.rb,
lib/mocha/parameter_matchers/has_value.rb,
lib/mocha/parameter_matchers/optionally.rb,
lib/mocha/parameter_matchers/has_entries.rb,
lib/mocha/parameter_matchers/instance_of.rb,
lib/mocha/parameter_matchers/responds_with.rb,
lib/mocha/parameter_matchers/any_parameters.rb,
lib/mocha/parameter_matchers/equivalent_uri.rb,
lib/mocha/parameter_matchers/regexp_matches.rb,
lib/mocha/parameter_matchers/yaml_equivalent.rb,
lib/mocha/state_machine.rb,
lib/mocha/sequence.rb,
lib/mocha/configuration.rb,
lib/mocha/expectation_error_factory.rb,
lib/mocha/expectation_error.rb,
lib/mocha/stubbing_error.rb,
lib/mocha/unexpected_invocation.rb,
lib/mocha/integration/test_unit/adapter.rb,
lib/mocha/integration/mini_test/adapter.rb
+
+
+ +
+ +

Defined Under Namespace

+

+ + + Modules: API, ClassMethods, Hooks, Integration, ObjectMethods, ParameterMatchers + + + + Classes: Configuration, Expectation, ExpectationError, ExpectationErrorFactory, Mock, Sequence, StateMachine, StubbingError, UnexpectedInvocation + + +

+ + + + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/API.html b/doc/Mocha/API.html new file mode 100644 index 000000000..fe9b4a59c --- /dev/null +++ b/doc/Mocha/API.html @@ -0,0 +1,1058 @@ + + + + + + + Module: Mocha::API + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Mocha::API + + + +

+
+ + + + + + +
+
Includes:
+
Hooks, ParameterMatchers
+
+ + + + +
+
Included in:
+
Integration::MiniTest::Adapter, Integration::TestUnit::Adapter
+
+ + + +
+
Defined in:
+
lib/mocha/api.rb
+
+ +
+ +

Overview

+
+ +

Methods added to Test::Unit::TestCase, +MiniTest::Unit::TestCase or equivalent.

+ + +
+
+
+ + +
+ + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + + + + + + + + +

Methods included from Hooks

+

#mocha_setup, #mocha_teardown, #mocha_verify

+ + + + + + + + + +

Methods included from ParameterMatchers

+

#Not, #all_of, #any_of, #any_parameters, #anything, #equals, #equivalent_uri, #has_entries, #has_entry, #has_equivalent_query_string, #has_key, #has_value, #includes, #instance_of, #is_a, #kind_of, #optionally, #regexp_matches, #responds_with, #yaml_equivalent

+ + +
+

Instance Method Details

+ + +
+

+ + + #mock(name, &block) ⇒ Mock + + #mock(expected_methods_vs_return_values = {}, &block) ⇒ Mock + + #mock(name, expected_methods_vs_return_values = {}, &block) ⇒ Mock + + + + + + +

+
+ +

Builds a new mock object

+ + +
+
+
+ +
+

Examples:

+ + +

+

Using expected_methods_vs_return_values Hash to setup expectations.

+

+ +
def test_motor_starts_and_stops
+  motor = mock('motor', :start => true, :stop => true)
+  assert motor.start
+  assert motor.stop
+  # an error will be raised unless both Motor#start and Motor#stop have been called
+end
+ + +

+

Using the optional block to setup expectations & stubbed methods +[deprecated].

+

+ +
def test_motor_starts_and_stops
+  motor = mock('motor') do
+    expects(:start).with(100.rpm).returns(true)
+    stubs(:stop).returns(true)
+  end
+  assert motor.start(100.rpm)
+  assert motor.stop
+  # an error will only be raised if Motor#start(100.rpm) has not been called
+end
+ +
+

Parameters:

+
    + +
  • + + name + + + (String) + + + + — +
    +

    identifies mock object in error messages.

    +
    + +
  • + +
  • + + expected_methods_vs_return_values + + + (Hash) + + + + — +
    +

    expected method name symbols as keys and corresponding return values as +values - these expectations are setup as if Mock#expects were called +multiple times.

    +
    + +
  • + +
+ +

Yields:

+
    + +
  • + + + + + + + +
    +

    optional block to be evaluated in the context of the mock object instance, +giving an alternative way to setup stubbed methods.

    +
    + +
  • + +
  • + + + + + + + +
    +

    note that the block is evaulated by calling Mock#instance_eval and so +things like instance variables declared in the test will not be available +within the block.

    +
    + +
  • + +
  • + + + + + + + +
    +

    deprecated: use Object#tap or define stubs/expectations with an explicit +receiver instead.

    +
    + +
  • + +
+

Returns:

+
    + +
  • + + + (Mock) + + + + — +
    +

    a new mock object

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+52
+53
+54
+55
+56
+57
+58
+
+
# File 'lib/mocha/api.rb', line 52
+
+def mock(*arguments, &block)
+  name = arguments.shift if arguments.first.is_a?(String)
+  expectations = arguments.shift || {}
+  mock = name ? Mockery.instance.named_mock(name, &block) : Mockery.instance.unnamed_mock(&block)
+  mock.expects(expectations)
+  mock
+end
+
+
+ +
+

+ + #sequence(name) ⇒ Sequence + + + + + +

+
+ +

Builds a new sequence which can be used to constrain the order in which +expectations can occur.

+ +

Specify that an expected invocation must occur within a named Sequence by +using Expectation#in_sequence.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Ensure methods on egg are invoked in correct order.

+

+ +
breakfast = sequence('breakfast')
+
+egg = mock('egg') do
+  expects(:crack).in_sequence(breakfast)
+  expects(:fry).in_sequence(breakfast)
+  expects(:eat).in_sequence(breakfast)
+end
+ +
+ +

Returns:

+
    + +
  • + + + (Sequence) + + + + — +
    +

    a new sequence

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+144
+145
+146
+
+
# File 'lib/mocha/api.rb', line 144
+
+def sequence(name)
+  Sequence.new(name)
+end
+
+
+ +
+

+ + #states(name) ⇒ StateMachine + + + + + +

+
+ +

Builds a new state machine which can be used to constrain the order in +which expectations can occur.

+ +

Specify the initial state of the state machine by using +StateMachine#starts_as.

+ +

Specify that an expected invocation should change the state of the state +machine by using Expectation#then.

+ +

Specify that an expected invocation should be constrained to occur within a +particular state by using Expectation#when.

+ +

A test can contain multiple state machines.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Constrain expected invocations to occur in particular states.

+

+ +
power = states('power').starts_as('off')
+
+radio = mock('radio') do
+  expects(:switch_on).then(power.is('on'))
+  expects(:select_channel).with('BBC Radio 4').when(power.is('on'))
+  expects(:adjust_volume).with(+5).when(power.is('on'))
+  expects(:select_channel).with('BBC World Service').when(power.is('on'))
+  expects(:adjust_volume).with(-5).when(power.is('on'))
+  expects(:switch_off).then(power.is('off'))
+end
+ +
+ +

Returns:

+
    + +
  • + + + (StateMachine) + + + + — +
    +

    a new state machine

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+174
+175
+176
+
+
# File 'lib/mocha/api.rb', line 174
+
+def states(name)
+  Mockery.instance.new_state_machine(name)
+end
+
+
+ +
+

+ + + #stub(name, &block) ⇒ Mock + + #stub(stubbed_methods_vs_return_values = {}, &block) ⇒ Mock + + #stub(name, stubbed_methods_vs_return_values = {}, &block) ⇒ Mock + + + + + + +

+
+ +

Builds a new mock object

+ + +
+
+
+ +
+

Examples:

+ + +

+

Using stubbed_methods_vs_return_values Hash to setup stubbed methods.

+

+ +
def test_motor_starts_and_stops
+  motor = stub('motor', :start => true, :stop => true)
+  assert motor.start
+  assert motor.stop
+  # an error will not be raised even if either Motor#start or Motor#stop has not been called
+end
+ + +

+

Using the optional block to setup expectations & stubbed methods +[deprecated].

+

+ +
def test_motor_starts_and_stops
+  motor = stub('motor') do
+    expects(:start).with(100.rpm).returns(true)
+    stubs(:stop).returns(true)
+  end
+  assert motor.start(100.rpm)
+  assert motor.stop
+  # an error will only be raised if Motor#start(100.rpm) has not been called
+end
+ +
+

Parameters:

+
    + +
  • + + name + + + (String) + + + + — +
    +

    identifies mock object in error messages.

    +
    + +
  • + +
  • + + stubbed_methods_vs_return_values + + + (Hash) + + + + — +
    +

    stubbed method name symbols as keys and corresponding return values as +values - these stubbed methods are setup as if Mock#stubs were called +multiple times.

    +
    + +
  • + +
+ +

Yields:

+
    + +
  • + + + + + + + +
    +

    optional block to be evaluated in the context of the mock object instance, +giving an alternative way to setup stubbed methods.

    +
    + +
  • + +
  • + + + + + + + +
    +

    note that the block is evaulated by calling Mock#instance_eval and so +things like instance variables declared in the test will not be available +within the block.

    +
    + +
  • + +
  • + + + + + + + +
    +

    deprecated: use Object#tap or define stubs/expectations with an explicit +receiver instead.

    +
    + +
  • + +
+

Returns:

+
    + +
  • + + + (Mock) + + + + — +
    +

    a new mock object

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+91
+92
+93
+94
+95
+96
+97
+
+
# File 'lib/mocha/api.rb', line 91
+
+def stub(*arguments, &block)
+  name = arguments.shift if arguments.first.is_a?(String)
+  expectations = arguments.shift || {}
+  stub = name ? Mockery.instance.named_mock(name, &block) : Mockery.instance.unnamed_mock(&block)
+  stub.stubs(expectations)
+  stub
+end
+
+
+ +
+

+ + + #stub_everything(name, &block) ⇒ Mock + + #stub_everything(stubbed_methods_vs_return_values = {}, &block) ⇒ Mock + + #stub_everything(name, stubbed_methods_vs_return_values = {}, &block) ⇒ Mock + + + + + + +

+
+ +

Builds a mock object that accepts calls to any method. By default it will +return nil for any method call.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Ignore invocations of irrelevant methods.

+

+ +
def test_motor_stops
+  motor = stub_everything('motor', :stop => true)
+  assert_nil motor.irrelevant_method_1 # => no error raised
+  assert_nil motor.irrelevant_method_2 # => no error raised
+  assert motor.stop
+end
+ +
+

Parameters:

+
    + +
  • + + name + + + (String) + + + + — +
    +

    identifies mock object in error messages.

    +
    + +
  • + +
  • + + stubbed_methods_vs_return_values + + + (Hash) + + + + — +
    +

    stubbed method name symbols as keys and corresponding return values as +values - these stubbed methods are setup as if Mock#stubs were called +multiple times.

    +
    + +
  • + +
+ +

Yields:

+
    + +
  • + + + + + + + +
    +

    optional block to be evaluated in the context of the mock object instance, +giving an alternative way to setup stubbed methods.

    +
    + +
  • + +
  • + + + + + + + +
    +

    note that the block is evaulated by calling Mock#instance_eval and so +things like instance variables declared in the test will not be available +within the block.

    +
    + +
  • + +
  • + + + + + + + +
    +

    deprecated: use Object#tap or define stubs/expectations with an explicit +receiver instead.

    +
    + +
  • + +
+

Returns:

+
    + +
  • + + + (Mock) + + + + — +
    +

    a new mock object

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+119
+120
+121
+122
+123
+124
+125
+126
+
+
# File 'lib/mocha/api.rb', line 119
+
+def stub_everything(*arguments, &block)
+  name = arguments.shift if arguments.first.is_a?(String)
+  expectations = arguments.shift || {}
+  stub = name ? Mockery.instance.named_mock(name, &block) : Mockery.instance.unnamed_mock(&block)
+  stub.stub_everything
+  stub.stubs(expectations)
+  stub
+end
+
+
+ +
+ + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ClassMethods.html b/doc/Mocha/ClassMethods.html new file mode 100644 index 000000000..91f8060f9 --- /dev/null +++ b/doc/Mocha/ClassMethods.html @@ -0,0 +1,269 @@ + + + + + + + Module: Mocha::ClassMethods + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Mocha::ClassMethods + + + +

+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/class_methods.rb
+
+ +
+ +

Overview

+
+ +

Methods added to all classes to allow mocking and stubbing on real (i.e. +non-mock) objects.

+ + +
+
+
+ + +
+ + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + +
+

Instance Method Details

+ + +
+

+ + #any_instanceMock + + + + + +

+
+ +

Returns a mock object which will detect calls to any instance of this +class.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Return false to invocation of Product#save for any instance of +Product.

+

+ +
Product.any_instance.stubs(:save).returns(false)
+product_1 = Product.new
+assert_equal false, product_1.save
+product_2 = Product.new
+assert_equal false, product_2.save
+ +
+ +

Returns:

+
    + +
  • + + + (Mock) + + + + — +
    +

    a mock object which will detect calls to any instance of this class.

    +
    + +
  • + +
+

Raises:

+
    + +
  • + + + (StubbingError) + + + + — +
    +

    if attempting to stub method which is not allowed.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+53
+54
+55
+56
+57
+58
+
+
# File 'lib/mocha/class_methods.rb', line 53
+
+def any_instance
+  if frozen?
+    raise StubbingError.new("can't stub method on frozen object: #{mocha_inspect}.any_instance", caller)
+  end
+  @any_instance ||= AnyInstance.new(self)
+end
+
+
+ +
+ + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/Configuration.html b/doc/Mocha/Configuration.html new file mode 100644 index 000000000..f558cb741 --- /dev/null +++ b/doc/Mocha/Configuration.html @@ -0,0 +1,628 @@ + + + + + + + Class: Mocha::Configuration + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::Configuration + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/configuration.rb
+
+ +
+ +

Overview

+
+ +

This class allows you to determine what should happen under certain +circumstances. In each scenario, Mocha can be configured to do nothing, display a warning message, or raise an exception. The relevant scenario is identified using one of the following +symbols:

+
  • +

    :stubbing_method_unnecessarily This is useful for identifying +unused stubs. Unused stubs are often accidentally introduced when code is +refactored. +Allowed by default.

    +
  • +

    :stubbing_non_existent_method - This is useful if you want to +ensure that methods you're mocking really exist. A common criticism of +unit tests with mock objects is that such a test may (incorrectly) pass +when an equivalent non-mocking test would (correctly) fail. While you +should always have some integration tests, particularly for critical +business functionality, this Mocha configuration setting should catch +scenarios when mocked methods and real methods have become misaligned. +Allowed by default.

    +
  • +

    :stubbing_non_public_method - Many people think that it's +good practice only to mock public methods. This is one way to prevent your +tests being too tightly coupled to the internal implementation of a class. +Such tests tend to be very brittle and not much use when refactoring. +Allowed by default.

    +
  • +

    :stubbing_method_on_non_mock_object - If you like the idea of +mocking roles not objects and +you don't like stubbing concrete classes, this is the setting for you. +However, while this restriction makes a lot of sense in Java with its +explicit interfaces, it may be moot in Ruby where roles are probably best +represented as Modules. Allowed by default.

    +
  • +

    :stubbing_method_on_nil - This is usually done accidentally, +but there might be rare cases where it is intended. Prevented by default.

    +
+ +

Typically the configuration would be set globally in a +test_helper.rb or spec_helper.rb file. However, +it can also be temporarily overridden locally using the block syntax of the +relevant method. In the latter case, the original configuration settings +are restored when the block is exited.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Preventing unnecessary stubbing of a method

+

+ +
Mocha::Configuration.prevent(:stubbing_method_unnecessarily)
+
+example = mock('example')
+example.stubs(:unused_stub)
+# => Mocha::StubbingError: stubbing method unnecessarily:
+# =>   #<Mock:example>.unused_stub(any_parameters)
+ + +

+

Preventing stubbing of a method on a non-mock object

+

+ +
Mocha::Configuration.prevent(:stubbing_method_on_non_mock_object)
+
+class Example
+  def example_method; end
+end
+
+example = Example.new
+example.stubs(:example_method)
+# => Mocha::StubbingError: stubbing method on non-mock object:
+# =>   #<Example:0x593620>.example_method
+ + +

+

Preventing stubbing of a non-existent method

+

+ +

+Mocha::Configuration.prevent(:stubbing_non_existent_method)
+
+class Example
+end
+
+example = Example.new
+example.stubs(:method_that_doesnt_exist)
+# => Mocha::StubbingError: stubbing non-existent method:
+# =>   #<Example:0x593760>.method_that_doesnt_exist
+ + +

+

Preventing stubbing of a non-public method

+

+ +
Mocha::Configuration.prevent(:stubbing_non_public_method)
+
+class Example
+  def internal_method; end
+  private :internal_method
+end
+
+example = Example.new
+example.stubs(:internal_method)
+# => Mocha::StubbingError: stubbing non-public method:
+# =>   #<Example:0x593530>.internal_method
+ + +

+

Temporarily allowing stubbing of a non-existent method

+

+ +
Mocha::Configuration.prevent(:stubbing_non_public_method)
+
+class Example
+end
+
+Mocha::Configuration.allow(:stubbing_non_existent_method) do
+  example = Example.new
+  example.stubs(:method_that_doesnt_exist)
+  # => no exception raised
+end
+ +
+ + +
+ +

+ Constant Summary + collapse +

+ +
+ +
DEFAULTS = + +
+
{
+  :stubbing_method_unnecessarily => :allow,
+  :stubbing_method_on_non_mock_object => :allow,
+  :stubbing_non_existent_method => :allow,
+  :stubbing_non_public_method => :allow,
+  :stubbing_method_on_nil => :prevent
+}.freeze
+ +
+ + + + + + + + + +

+ Class Method Summary + collapse +

+ + + + + + +
+

Class Method Details

+ + +
+

+ + .allow(action) { ... } ⇒ Object + + + + + +

+
+ +

Allow the specified action.

+ + +
+
+
+

Parameters:

+
    + +
  • + + action + + + (Symbol) + + + + — +
    +

    one of :stubbing_method_unnecessarily, +:stubbing_method_on_non_mock_object, +:stubbing_non_existent_method, +:stubbing_non_public_method, +:stubbing_method_on_nil.

    +
    + +
  • + +
+ +

Yields:

+
    + +
  • + + + + + + + +
    +

    optional block during which the configuration change will be changed before +being returned to its original value at the end of the block.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+82
+83
+84
+
+
# File 'lib/mocha/configuration.rb', line 82
+
+def allow(action, &block)
+  change_config action, :allow, &block
+end
+
+
+ +
+

+ + .prevent(action) { ... } ⇒ Object + + + + + +

+
+ +

Raise a StubbingError if if the specified action is +attempted.

+ + +
+
+
+

Parameters:

+
    + +
  • + + action + + + (Symbol) + + + + — +
    +

    one of :stubbing_method_unnecessarily, +:stubbing_method_on_non_mock_object, +:stubbing_non_existent_method, +:stubbing_non_public_method, +:stubbing_method_on_nil.

    +
    + +
  • + +
+ +

Yields:

+
    + +
  • + + + + + + + +
    +

    optional block during which the configuration change will be changed before +being returned to its original value at the end of the block.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+108
+109
+110
+
+
# File 'lib/mocha/configuration.rb', line 108
+
+def prevent(action, &block)
+  change_config action, :prevent, &block
+end
+
+
+ +
+

+ + .warn_when(action) { ... } ⇒ Object + + + + + +

+
+ +

Warn if the specified action is attempted.

+ + +
+
+
+

Parameters:

+
    + +
  • + + action + + + (Symbol) + + + + — +
    +

    one of :stubbing_method_unnecessarily, +:stubbing_method_on_non_mock_object, +:stubbing_non_existent_method, +:stubbing_non_public_method, +:stubbing_method_on_nil.

    +
    + +
  • + +
+ +

Yields:

+
    + +
  • + + + + + + + +
    +

    optional block during which the configuration change will be changed before +being returned to its original value at the end of the block.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+95
+96
+97
+
+
# File 'lib/mocha/configuration.rb', line 95
+
+def warn_when(action, &block)
+  change_config action, :warn, &block
+end
+
+
+ +
+ + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/Expectation.html b/doc/Mocha/Expectation.html new file mode 100644 index 000000000..be32dd13a --- /dev/null +++ b/doc/Mocha/Expectation.html @@ -0,0 +1,2711 @@ + + + + + + + Class: Mocha::Expectation + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::Expectation + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/expectation.rb
+
+ +
+ +

Overview

+
+ +

Methods on expectations returned from Mock#expects, Mock#stubs, +ObjectMethods#expects and ObjectMethods#stubs.

+ + +
+
+
+ + +
+ + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + +
+

Instance Method Details

+ + +
+

+ + #at_least(minimum_number_of_times) ⇒ Expectation + + + + + +

+
+ +

Modifies expectation so that the expected method must be called at least a +minimum_number_of_times.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Expected method must be called at least twice.

+

+ +
object = mock()
+object.expects(:expected_method).at_least(2)
+3.times { object.expected_method }
+# => verify succeeds
+
+object = mock()
+object.expects(:expected_method).at_least(2)
+object.expected_method
+# => verify fails
+ +
+

Parameters:

+
    + +
  • + + minimum_number_of_times + + + (Integer) + + + + — +
    +

    minimum number of expected invocations.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+130
+131
+132
+133
+
+
# File 'lib/mocha/expectation.rb', line 130
+
+def at_least(minimum_number_of_times)
+  @cardinality = Cardinality.at_least(minimum_number_of_times)
+  self
+end
+
+
+ +
+

+ + #at_least_onceExpectation + + + + + +

+
+ +

Modifies expectation so that the expected method must be called at least +once.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Expected method must be called at least once.

+

+ +
object = mock()
+object.expects(:expected_method).at_least_once
+object.expected_method
+# => verify succeeds
+
+object = mock()
+object.expects(:expected_method).at_least_once
+# => verify fails
+ +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+148
+149
+150
+151
+
+
# File 'lib/mocha/expectation.rb', line 148
+
+def at_least_once
+  at_least(1)
+  self
+end
+
+
+ +
+

+ + #at_most(maximum_number_of_times) ⇒ Expectation + + + + + +

+
+ +

Modifies expectation so that the expected method must be called at most a +maximum_number_of_times.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Expected method must be called at most twice.

+

+ +
object = mock()
+object.expects(:expected_method).at_most(2)
+2.times { object.expected_method }
+# => verify succeeds
+
+object = mock()
+object.expects(:expected_method).at_most(2)
+3.times { object.expected_method } # => unexpected invocation
+ +
+

Parameters:

+
    + +
  • + + maximum_number_of_times + + + (Integer) + + + + — +
    +

    maximum number of expected invocations.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+167
+168
+169
+170
+
+
# File 'lib/mocha/expectation.rb', line 167
+
+def at_most(maximum_number_of_times)
+  @cardinality = Cardinality.at_most(maximum_number_of_times)
+  self
+end
+
+
+ +
+

+ + #at_most_onceExpectation + + + + + +

+
+ +

Modifies expectation so that the expected method must be called at most +once.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Expected method must be called at most once.

+

+ +
object = mock()
+object.expects(:expected_method).at_most_once
+object.expected_method
+# => verify succeeds
+
+object = mock()
+object.expects(:expected_method).at_most_once
+2.times { object.expected_method } # => unexpected invocation
+ +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+185
+186
+187
+188
+
+
# File 'lib/mocha/expectation.rb', line 185
+
+def at_most_once
+  at_most(1)
+  self
+end
+
+
+ +
+

+ + #in_sequence(*sequences) ⇒ Expectation + + + + + +

+
+ +

Constrains the expectation so that it must be invoked at the current point +in the sequence.

+ +

To expect a sequence of invocations, write the expectations in order and +add the in_sequence(sequence) clause to each one.

+ +

Expectations in a sequence can have any invocation count.

+ +

If an expectation in a sequence is stubbed, rather than expected, it can be +skipped in the sequence.

+ +

An expected method can appear in multiple sequences.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Ensure methods are invoked in a specified order.

+

+ +
breakfast = sequence('breakfast')
+
+egg = mock('egg')
+egg.expects(:crack).in_sequence(breakfast)
+egg.expects(:fry).in_sequence(breakfast)
+egg.expects(:eat).in_sequence(breakfast)
+ +
+

Parameters:

+
    + +
  • + + sequences + + + (*Array<Sequence>) + + + + — +
    +

    sequences in which expected method should appear.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+492
+493
+494
+495
+
+
# File 'lib/mocha/expectation.rb', line 492
+
+def in_sequence(*sequences)
+  sequences.each { |sequence| add_in_sequence_ordering_constraint(sequence) }
+  self
+end
+
+
+ +
+

+ + #multiple_yields(*parameter_groups) ⇒ Expectation + + + + + +

+
+ +

Modifies expectation so that when the expected method is called, it yields +multiple times per invocation with the specified +parameter_groups.

+ + +
+
+
+ +
+

Examples:

+ + +

+

When the expected_method is called, the stub will invoke the +block twice, the first time it passes 'result_1', +'result_2' as the parameters, and the second time it passes +'result_3' as the parameters.

+

+ +
object = mock()
+object.expects(:expected_method).multiple_yields(['result_1', 'result_2'], ['result_3'])
+yielded_values = []
+object.expected_method { |*values| yielded_values << values }
+yielded_values # => [['result_1', 'result_2'], ['result_3]]
+ + +

+

Yield different groups of parameters on different invocations of the +expected method.

+

+ +
object = mock()
+object.stubs(:expected_method).multiple_yields([1, 2], [3]).then.multiple_yields([4], [5, 6])
+yielded_values_from_first_invocation = []
+yielded_values_from_second_invocation = []
+object.expected_method { |*values| yielded_values_from_first_invocation << values } # first invocation
+object.expected_method { |*values| yielded_values_from_second_invocation << values } # second invocation
+yielded_values_from_first_invocation # => [[1, 2], [3]]
+yielded_values_from_second_invocation # => [[4], [5, 6]]
+ +
+

Parameters:

+
    + +
  • + + parameter_groups + + + (*Array<Array>) + + + + — +
    +

    each element of parameter_groups should iself be an +Array representing the parameters to be passed to the block +for a single yield.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+277
+278
+279
+280
+
+
# File 'lib/mocha/expectation.rb', line 277
+
+def multiple_yields(*parameter_groups)
+  @yield_parameters.multiple_add(*parameter_groups)
+  self
+end
+
+
+ +
+

+ + #neverExpectation + + + + + +

+
+ +

Modifies expectation so that the expected method must never be called.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Expected method must never be called.

+

+ +
object = mock()
+object.expects(:expected_method).never
+object.expected_method # => unexpected invocation
+
+object = mock()
+object.expects(:expected_method).never
+# => verify succeeds
+ +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+110
+111
+112
+113
+
+
# File 'lib/mocha/expectation.rb', line 110
+
+def never
+  @cardinality = Cardinality.exactly(0)
+  self
+end
+
+
+ +
+

+ + #onceExpectation + + + + + +

+
+ +

Modifies expectation so that the expected method must be called exactly +once.

+ +

Note that this is the default behaviour for an expectation, but you may +wish to use it for clarity/emphasis.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Expected method must be invoked exactly once.

+

+ +
object = mock()
+object.expects(:expected_method).once
+object.expected_method
+# => verify succeeds
+
+object = mock()
+object.expects(:expected_method).once
+object.expected_method
+object.expected_method # => unexpected invocation
+
+object = mock()
+object.expects(:expected_method).once
+# => verify fails
+ +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+93
+94
+95
+96
+
+
# File 'lib/mocha/expectation.rb', line 93
+
+def once
+  @cardinality = Cardinality.exactly(1)
+  self
+end
+
+
+ +
+

+ + + #raisesExpectation + + #raises(exception) ⇒ Expectation + + #raises(exception, message) ⇒ Expectation + + + + + + +

+
+ +

Modifies expectation so that when the expected method is called, it raises +the specified exception with the specified +message i.e. calls Kernel#raise(exception, message).

+ + +
+
+
+ +
+

Examples:

+ + +

+

Raise specified exception if expected method is invoked.

+

+ +
object = stub()
+object.stubs(:expected_method).raises(Exception, 'message')
+object.expected_method # => raises exception of class Exception and with message 'message'
+ + +

+

Raise custom exception with extra constructor parameters by passing in an +instance of the exception.

+

+ +
object = stub()
+object.stubs(:expected_method).raises(MyException.new('message', 1, 2, 3))
+object.expected_method # => raises the specified instance of MyException
+ + +

+

Raise different exceptions on consecutive invocations of the expected +method.

+

+ +
object = stub()
+object.stubs(:expected_method).raises(Exception1).then.raises(Exception2)
+object.expected_method # => raises exception of class Exception1
+object.expected_method # => raises exception of class Exception2
+ + +

+

Raise an exception on first invocation of expected method and then return +values on subsequent invocations.

+

+ +
object = stub()
+object.stubs(:expected_method).raises(Exception).then.returns(2, 3)
+object.expected_method # => raises exception of class Exception1
+object.expected_method # => 2
+object.expected_method # => 3
+ +
+

Parameters:

+
    + +
  • + + exception + + + (Class, Exception, String, #exception) + + + (defaults to: RuntimeError) + + + — +
    +

    exception to be raised or message to be passed to RuntimeError.

    +
    + +
  • + +
  • + + message + + + (String) + + + (defaults to: nil) + + + — +
    +

    exception message.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +

See Also:

+
    + +
  • Kernel#raise
  • + +
  • #then
  • + +
+ +
+ + + + +
+
+
+
+364
+365
+366
+367
+
+
# File 'lib/mocha/expectation.rb', line 364
+
+def raises(exception = RuntimeError, message = nil)
+  @return_values += ReturnValues.new(ExceptionRaiser.new(exception, message))
+  self
+end
+
+
+ +
+

+ + + #returns(value) ⇒ Expectation + + #returns(*values) ⇒ Expectation + + + + + + +

+
+ +

Modifies expectation so that when the expected method is called, it returns +the specified value.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Return the same value on every invocation.

+

+ +
object = mock()
+object.stubs(:stubbed_method).returns('result')
+object.stubbed_method # => 'result'
+object.stubbed_method # => 'result'
+ + +

+

Return a different value on consecutive invocations.

+

+ +
object = mock()
+object.stubs(:stubbed_method).returns(1, 2)
+object.stubbed_method # => 1
+object.stubbed_method # => 2
+ + +

+

Alternative way to return a different value on consecutive invocations.

+

+ +
object = mock()
+object.stubs(:expected_method).returns(1, 2).then.returns(3)
+object.expected_method # => 1
+object.expected_method # => 2
+object.expected_method # => 3
+ + +

+

May be called in conjunction with #raises on the same expectation.

+

+ +
object = mock()
+object.stubs(:expected_method).returns(1, 2).then.raises(Exception)
+object.expected_method # => 1
+object.expected_method # => 2
+object.expected_method # => raises exception of class Exception1
+ + +

+

Note that in Ruby a method returning multiple values is exactly equivalent +to a method returning an Array of those values.

+

+ +
object = mock()
+object.stubs(:expected_method).returns([1, 2])
+x, y = object.expected_method
+x # => 1
+y # => 2
+ +
+ +

Overloads:

+
    + + +
  • + #returns(value) ⇒ Expectation +
    +
    + + +
    +
    +
    +

    Parameters:

    +
      + +
    • + + value + + + (Object) + + + + — +
      +

      value to return on invocation of expected method.

      +
      + +
    • + +
    + + +
    +
  • + + +
  • + #returns(*values) ⇒ Expectation +
    +
    + + +
    +
    +
    +

    Parameters:

    +
      + +
    • + + values + + + (*Array) + + + + — +
      +

      values to return on consecutive invocations of expected method.

      +
      + +
    • + +
    + + +
    +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+324
+325
+326
+327
+
+
# File 'lib/mocha/expectation.rb', line 324
+
+def returns(*values)
+  @return_values += ReturnValues.build(*values)
+  self
+end
+
+
+ +
+

+ + + #thenExpectation + + #then(state_machine.is(state_name)) ⇒ Expectation + + + + + + +

+
+ +

Returns the same expectation, thereby allowing invocations of other +Mocha::Expectation methods to be chained.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Using #then as syntactic sugar when specifying values to be returned and +exceptions to be raised on consecutive invocations of the expected method.

+

+ +
object = mock()
+object.stubs(:expected_method).returns(1, 2).then.raises(Exception).then.returns(4)
+object.expected_method # => 1
+object.expected_method # => 2
+object.expected_method # => raises exception of class Exception
+object.expected_method # => 4
+ + +

+

Using #then to change the state of a +state_machine on the invocation of an expected method.

+

+ +
power = states('power').starts_as('off')
+
+radio = mock('radio')
+radio.expects(:switch_on).then(power.is('on'))
+radio.expects(:select_channel).with('BBC Radio 4').when(power.is('on'))
+radio.expects(:adjust_volume).with(+5).when(power.is('on'))
+radio.expects(:select_channel).with('BBC World Service').when(power.is('on'))
+radio.expects(:adjust_volume).with(-5).when(power.is('on'))
+radio.expects(:switch_off).then(power.is('off'))
+ +
+ +

Overloads:

+
    + + +
  • + #thenExpectation +
    +
    + +

    Used as syntactic sugar to improve readability. It has no effect on state +of the expectation.

    + + +
    +
    +
    + + +
    +
  • + + +
  • + #then(state_machine.is(state_name)) ⇒ Expectation +
    +
    + +

    Used to change the state_machine to the state specified by +state_name when the expected invocation occurs.

    + + +
    +
    +
    +

    Parameters:

    +
      + +
    • + + state_machine.is(state_name) + + + (StateMachine::State) + + + + — +
      +

      provides a mechanism to change the state_machine into the +state specified by state_name when the expected method is +invoked.

      +
      + +
    • + +
    + + +

    See Also:

    + + +
    +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+438
+439
+440
+441
+442
+443
+444
+
+
# File 'lib/mocha/expectation.rb', line 438
+
+def then(*parameters)
+  if parameters.length == 1
+    state = parameters.first
+    add_side_effect(ChangeStateSideEffect.new(state))
+  end
+  self
+end
+
+
+ +
+

+ + + #throw(tag) ⇒ Expectation + + #throw(tag, object) ⇒ Expectation + + + + + + +

+
+ +

Modifies expectation so that when the expected method is called, it throws +the specified tag with the specific return value +object i.e. calls Kernel#throw(tag, object).

+ + +
+
+
+ +
+

Examples:

+ + +

+

Throw tag when expected method is invoked.

+

+ +
object = stub()
+object.stubs(:expected_method).throws(:done)
+object.expected_method # => throws tag :done
+ + +

+

Throw tag with return value object c.f. Kernel#throw.

+

+ +
object = stub()
+object.stubs(:expected_method).throws(:done, 'result')
+object.expected_method # => throws tag :done and causes catch block to return 'result'
+ + +

+

Throw different tags on consecutive invocations of the expected method.

+

+ +
object = stub()
+object.stubs(:expected_method).throws(:done).then.throws(:continue)
+object.expected_method # => throws :done
+object.expected_method # => throws :continue
+ + +

+

Throw tag on first invocation of expected method and then return values for +subsequent invocations.

+

+ +
object = stub()
+object.stubs(:expected_method).throws(:done).then.returns(2, 3)
+object.expected_method # => throws :done
+object.expected_method # => 2
+object.expected_method # => 3
+ +
+

Parameters:

+
    + +
  • + + tag + + + (Symbol, String) + + + + — +
    +

    tag to throw to transfer control to the active catch block.

    +
    + +
  • + +
  • + + object + + + (Object) + + + (defaults to: nil) + + + — +
    +

    return value for the catch block.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +

See Also:

+
    + +
  • Kernel#throw
  • + +
  • #then
  • + +
+ +
+ + + + +
+
+
+
+403
+404
+405
+406
+
+
# File 'lib/mocha/expectation.rb', line 403
+
+def throws(tag, object = nil)
+  @return_values += ReturnValues.new(Thrower.new(tag, object))
+  self
+end
+
+
+ +
+

+ + #times(range) ⇒ Expectation + + + + + +

+
+ +

Modifies expectation so that the number of calls to the expected method +must be within a specific range.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Specifying a specific number of expected invocations.

+

+ +
object = mock()
+object.expects(:expected_method).times(3)
+3.times { object.expected_method }
+# => verify succeeds
+
+object = mock()
+object.expects(:expected_method).times(3)
+2.times { object.expected_method }
+# => verify fails
+ + +

+

Specifying a range in the number of expected invocations.

+

+ +
object = mock()
+object.expects(:expected_method).times(2..4)
+3.times { object.expected_method }
+# => verify succeeds
+
+object = mock()
+object.expects(:expected_method).times(2..4)
+object.expected_method
+# => verify fails
+ +
+

Parameters:

+
    + +
  • + + range + + + (Range, Integer) + + + + — +
    +

    specifies the allowable range in the number of expected invocations.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+42
+43
+44
+45
+
+
# File 'lib/mocha/expectation.rb', line 42
+
+def times(range)
+  @cardinality = Cardinality.times(range)
+  self
+end
+
+
+ +
+

+ + #twiceExpectation + + + + + +

+
+ +

Modifies expectation so that the expected method must be called exactly +twice.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Expected method must be invoked exactly twice.

+

+ +
object = mock()
+object.expects(:expected_method).twice
+object.expected_method
+object.expected_method
+# => verify succeeds
+
+object = mock()
+object.expects(:expected_method).twice
+object.expected_method
+object.expected_method
+object.expected_method # => unexpected invocation
+
+object = mock()
+object.expects(:expected_method).twice
+object.expected_method
+# => verify fails
+ +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+68
+69
+70
+71
+
+
# File 'lib/mocha/expectation.rb', line 68
+
+def twice
+  @cardinality = Cardinality.exactly(2)
+  self
+end
+
+
+ +
+

+ + #when(state_predicate) ⇒ Expectation + + + + + +

+
+ +

Constrains the expectation to occur only when the +state_machine is in the state specified by +state_name.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Using #when to only allow invocation of methods when “power” state +machine is in the “on” state.

+

+ +
power = states('power').starts_as('off')
+
+radio = mock('radio')
+radio.expects(:switch_on).then(power.is('on'))
+radio.expects(:select_channel).with('BBC Radio 4').when(power.is('on'))
+radio.expects(:adjust_volume).with(+5).when(power.is('on'))
+radio.expects(:select_channel).with('BBC World Service').when(power.is('on'))
+radio.expects(:adjust_volume).with(-5).when(power.is('on'))
+radio.expects(:switch_off).then(power.is('off'))
+ +
+

Parameters:

+
    + +
  • + + state_machine.is(state_name) + + + (StateMachine::StatePredicate) + + + + — +
    +

    provides a mechanism to determine whether the state_machine is +in the state specified by state_name when the expected method +is invoked.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+465
+466
+467
+468
+
+
# File 'lib/mocha/expectation.rb', line 465
+
+def when(state_predicate)
+  add_ordering_constraint(InStateOrderingConstraint.new(state_predicate))
+  self
+end
+
+
+ +
+

+ + #with(*expected_parameters) {|actual_parameters| ... } ⇒ Expectation + + + + + +

+
+ +

Modifies expectation so that the expected method must be called with +expected_parameters.

+ +

May be used with parameter matchers in ParameterMatchers.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Expected method must be called with expected parameters.

+

+ +
object = mock()
+object.expects(:expected_method).with(:param1, :param2)
+object.expected_method(:param1, :param2)
+# => verify succeeds
+
+object = mock()
+object.expects(:expected_method).with(:param1, :param2)
+object.expected_method(:param3)
+# => verify fails
+ + +

+

Expected method must be called with a value divisible by 4.

+

+ +
object = mock()
+object.expects(:expected_method).with() { |value| value % 4 == 0 }
+object.expected_method(16)
+# => verify succeeds
+
+object = mock()
+object.expects(:expected_method).with() { |value| value % 4 == 0 }
+object.expected_method(17)
+# => verify fails
+ +
+

Parameters:

+
    + +
  • + + expected_parameters + + + (*Array) + + + + — +
    +

    parameters expected.

    +
    + +
  • + +
+ +

Yields:

+
    + +
  • + + + + + + + +
    +

    optional block specifying custom matching.

    +
    + +
  • + +
+

Yield Parameters:

+
    + +
  • + + actual_parameters + + + (*Array) + + + + — +
    +

    parameters with which expected method was invoked.

    +
    + +
  • + +
+

Yield Returns:

+
    + +
  • + + + (Boolean) + + + + — +
    +

    true if actual_parameters are acceptable.

    +
    + +
  • + +
+

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+221
+222
+223
+224
+
+
# File 'lib/mocha/expectation.rb', line 221
+
+def with(*expected_parameters, &matching_block)
+  @parameters_matcher = ParametersMatcher.new(expected_parameters, &matching_block)
+  self
+end
+
+
+ +
+

+ + #yields(*parameters) ⇒ Expectation + + + + + +

+
+ +

Modifies expectation so that when the expected method is called, it yields +with the specified parameters.

+ +

May be called multiple times on the same expectation for consecutive +invocations.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Yield parameters when expected method is invoked.

+

+ +
object = mock()
+object.expects(:expected_method).yields('result')
+yielded_value = nil
+object.expected_method { |value| yielded_value = value }
+yielded_value # => 'result'
+ + +

+

Yield different parameters on different invocations of the expected method.

+

+ +
object = mock()
+object.stubs(:expected_method).yields(1).then.yields(2)
+yielded_values_from_first_invocation = []
+yielded_values_from_second_invocation = []
+object.expected_method { |value| yielded_values_from_first_invocation << value } # first invocation
+object.expected_method { |value| yielded_values_from_second_invocation << value } # second invocation
+yielded_values_from_first_invocation # => [1]
+yielded_values_from_second_invocation # => [2]
+ +
+

Parameters:

+
    + +
  • + + parameters + + + (*Array) + + + + — +
    +

    parameters to be yielded.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    the same expectation, thereby allowing invocations of other Mocha::Expectation +methods to be chained.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+250
+251
+252
+253
+
+
# File 'lib/mocha/expectation.rb', line 250
+
+def yields(*parameters)
+  @yield_parameters.add(*parameters)
+  self
+end
+
+
+ +
+ + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ExpectationError.html b/doc/Mocha/ExpectationError.html new file mode 100644 index 000000000..34d35abe8 --- /dev/null +++ b/doc/Mocha/ExpectationError.html @@ -0,0 +1,159 @@ + + + + + + + Exception: Mocha::ExpectationError + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Exception: Mocha::ExpectationError + + + +

+
+ +
+
Inherits:
+
+ Exception + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/expectation_error.rb
+
+ +
+ +

Overview

+
+ +

Default exception class raised when an unexpected invocation or an +unsatisfied expectation occurs.

+ +

Authors of test libraries may use +Mocha::ExpectationErrorFactory to have Mocha raise a different +exception.

+ +

rubocop:disable Lint/InheritException

+ + +
+
+
+ + +

See Also:

+ + +
+ + + + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ExpectationErrorFactory.html b/doc/Mocha/ExpectationErrorFactory.html new file mode 100644 index 000000000..55e70f2a8 --- /dev/null +++ b/doc/Mocha/ExpectationErrorFactory.html @@ -0,0 +1,271 @@ + + + + + + + Class: Mocha::ExpectationErrorFactory + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ExpectationErrorFactory + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/expectation_error_factory.rb
+
+ +
+ +

Overview

+
+ +

This factory determines what class of exception should be raised when Mocha +detects a test failure.

+ +

This class should only be used by authors of test libraries and not by +typical “users” of Mocha.

+ +

For example, it is used by +Mocha::Integration::MiniTest::Adapter in order to have Mocha +raise a MiniTest::Assertion which can then be sensibly handled +by MiniTest::Unit::TestCase.

+ + +
+
+
+ + +

See Also:

+ + +
+ + + +

Class Attribute Summary collapse

+ + + + + + +
+

Class Attribute Details

+ + + +
+

+ + .exception_classException + + + + + +

+
+ +

Determines what class of exception should be raised when Mocha detects a +test failure.

+ +

This attribute may be set by authors of test libraries in order to have +Mocha raise exceptions of a specific class when there is an unexpected +invocation or an unsatisfied expectation.

+ +

By default a Mocha::ExpectationError will be raised.

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Exception) + + + + — +
    +

    class of exception to be raised when an expectation error occurs

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+23
+24
+25
+
+
# File 'lib/mocha/expectation_error_factory.rb', line 23
+
+def exception_class
+  @exception_class
+end
+
+
+ +
+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/Hooks.html b/doc/Mocha/Hooks.html new file mode 100644 index 000000000..49eec575d --- /dev/null +++ b/doc/Mocha/Hooks.html @@ -0,0 +1,387 @@ + + + + + + + Module: Mocha::Hooks + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Mocha::Hooks + + + +

+
+ + + + + + + + + +
+
Included in:
+
API
+
+ + + +
+
Defined in:
+
lib/mocha/hooks.rb
+
+ +
+ +

Overview

+
+ +

Integration hooks for test library authors.

+ +

The methods in this module should be called from test libraries wishing to +integrate with Mocha.

+ +

This module is provided as part of the Mocha::API module and +is therefore part of the public API, but should only be used by authors of +test libraries and not by typical “users” of Mocha.

+ +

Integration with Test::Unit and MiniTest are provided as part of Mocha, +because they are (or were once) part of the Ruby standard library. +Integration with other test libraries is not provided as +part of Mocha, but is supported by means of the methods in +this module.

+ +

See the code in the Adapter modules for examples of how to use +the methods in this module. Mocha::ExpectationErrorFactory may +be used if you want Mocha to raise a different type of +exception.

+ + +
+
+ + + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + +
+

Instance Method Details

+ + +
+

+ + #mocha_setupObject + + + + + +

+
+ +

Prepares Mocha before a test (only for use by authors of test libraries).

+ +

This method should be called before each individual test starts (including +before any “setup” code).

+ + +
+
+
+ + +
+ + + + +
+
+
+
+22
+23
+24
+
+
# File 'lib/mocha/hooks.rb', line 22
+
+def mocha_setup
+  Mockery.setup
+end
+
+
+ +
+

+ + #mocha_teardownObject + + + + + +

+
+ +

Resets Mocha after a test (only for use by authors of test libraries).

+ +

This method should be called after each individual test has finished +(including after any “teardown” code).

+ + +
+
+
+ + +
+ + + + +
+
+
+
+38
+39
+40
+
+
# File 'lib/mocha/hooks.rb', line 38
+
+def mocha_teardown
+  Mockery.teardown
+end
+
+
+ +
+

+ + #mocha_verify(assertion_counter = nil) ⇒ Object + + + + + +

+
+ +

Verifies that all mock expectations have been met (only for use by authors +of test libraries).

+ +

This is equivalent to a series of “assertions”.

+ +

This method should be called at the end of each individual test, before it +has been determined whether or not the test has passed.

+ + +
+
+
+ + +
+ + + + +
+
+
+
+31
+32
+33
+
+
# File 'lib/mocha/hooks.rb', line 31
+
+def mocha_verify(assertion_counter = nil)
+  Mockery.verify(assertion_counter)
+end
+
+
+ +
+ + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/Integration.html b/doc/Mocha/Integration.html new file mode 100644 index 000000000..49e7c30d9 --- /dev/null +++ b/doc/Mocha/Integration.html @@ -0,0 +1,127 @@ + + + + + + + Module: Mocha::Integration + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Mocha::Integration + + + +

+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/integration/test_unit/adapter.rb,
+ lib/mocha/integration/mini_test/adapter.rb
+
+
+ +
+ +

Defined Under Namespace

+

+ + + Modules: MiniTest, TestUnit + + + + +

+ + + + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/Integration/MiniTest.html b/doc/Mocha/Integration/MiniTest.html new file mode 100644 index 000000000..07a279f2b --- /dev/null +++ b/doc/Mocha/Integration/MiniTest.html @@ -0,0 +1,125 @@ + + + + + + + Module: Mocha::Integration::MiniTest + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Mocha::Integration::MiniTest + + + +

+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/integration/mini_test/adapter.rb
+
+ +
+ +

Defined Under Namespace

+

+ + + Modules: Adapter + + + + +

+ + + + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/Integration/MiniTest/Adapter.html b/doc/Mocha/Integration/MiniTest/Adapter.html new file mode 100644 index 000000000..20b4665cf --- /dev/null +++ b/doc/Mocha/Integration/MiniTest/Adapter.html @@ -0,0 +1,167 @@ + + + + + + + Module: Mocha::Integration::MiniTest::Adapter + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Mocha::Integration::MiniTest::Adapter + + + +

+
+ + + + + + +
+
Includes:
+
API
+
+ + + + + + +
+
Defined in:
+
lib/mocha/integration/mini_test/adapter.rb
+
+ +
+ +

Overview

+
+ +

Integrates Mocha into recent versions of MiniTest.

+ +

See the source code for an example of how to integrate Mocha into a test +library.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods included from API

+

#mock, #sequence, #states, #stub, #stub_everything

+ + + + + + + + + +

Methods included from Hooks

+

#mocha_setup, #mocha_teardown, #mocha_verify

+ + + + + + + + + +

Methods included from ParameterMatchers

+

#Not, #all_of, #any_of, #any_parameters, #anything, #equals, #equivalent_uri, #has_entries, #has_entry, #has_equivalent_query_string, #has_key, #has_value, #includes, #instance_of, #is_a, #kind_of, #optionally, #regexp_matches, #responds_with, #yaml_equivalent

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/Integration/TestUnit.html b/doc/Mocha/Integration/TestUnit.html new file mode 100644 index 000000000..84b9ff0a9 --- /dev/null +++ b/doc/Mocha/Integration/TestUnit.html @@ -0,0 +1,125 @@ + + + + + + + Module: Mocha::Integration::TestUnit + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Mocha::Integration::TestUnit + + + +

+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/integration/test_unit/adapter.rb
+
+ +
+ +

Defined Under Namespace

+

+ + + Modules: Adapter + + + + +

+ + + + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/Integration/TestUnit/Adapter.html b/doc/Mocha/Integration/TestUnit/Adapter.html new file mode 100644 index 000000000..269d4887e --- /dev/null +++ b/doc/Mocha/Integration/TestUnit/Adapter.html @@ -0,0 +1,167 @@ + + + + + + + Module: Mocha::Integration::TestUnit::Adapter + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Mocha::Integration::TestUnit::Adapter + + + +

+
+ + + + + + +
+
Includes:
+
API
+
+ + + + + + +
+
Defined in:
+
lib/mocha/integration/test_unit/adapter.rb
+
+ +
+ +

Overview

+
+ +

Integrates Mocha into recent versions of Test::Unit.

+ +

See the source code for an example of how to integrate Mocha into a test +library.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods included from API

+

#mock, #sequence, #states, #stub, #stub_everything

+ + + + + + + + + +

Methods included from Hooks

+

#mocha_setup, #mocha_teardown, #mocha_verify

+ + + + + + + + + +

Methods included from ParameterMatchers

+

#Not, #all_of, #any_of, #any_parameters, #anything, #equals, #equivalent_uri, #has_entries, #has_entry, #has_equivalent_query_string, #has_key, #has_value, #includes, #instance_of, #is_a, #kind_of, #optionally, #regexp_matches, #responds_with, #yaml_equivalent

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/Mock.html b/doc/Mocha/Mock.html new file mode 100644 index 000000000..04df01d84 --- /dev/null +++ b/doc/Mocha/Mock.html @@ -0,0 +1,1199 @@ + + + + + + + Class: Mocha::Mock + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::Mock + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/mock.rb
+
+ +
+ +

Overview

+
+ +

Traditional mock object.

+ +

All methods return an Expectation which can be further modified by +methods on Expectation.

+ +

Stubs and expectations are basically the same thing. A stub is just an +expectation of zero or more invocations. The #stubs method is syntactic +sugar to make the intent of the test more explicit.

+ +

When a method is invoked on a mock object, the mock object searches through +its expectations from newest to oldest to find one that matches the +invocation. After the invocation, the matching expectation might stop +matching further invocations. For example, an expects(:foo).once +expectation only matches once and will be ignored on future invocations +while an expects(:foo).at_least_once expectation will always be matched +against invocations.

+ +

This scheme allows you to:

+
  • +

    Set up default stubs in your the setup method of your test +class and override some of those stubs in individual tests.

    +
  • +

    Set up different once expectations for the same method with +different action per invocation. However, it's better to use the +Expectation#returns method with multiple arguments to do this, as +described below.

    +
+ +

However, there are some possible “gotchas” caused by this scheme:

+
  • +

    if you create an expectation and then a stub for the same method, the stub +will always override the expectation and the expectation will never be met.

    +
  • +

    if you create a stub and then an expectation for the same method, the +expectation will match, and when it stops matching the stub will be used +instead, possibly masking test failures.

    +
  • +

    if you create different expectations for the same method, they will be +invoked in the opposite order than that in which they were specified, +rather than the same order.

    +
+ +

The best thing to do is not set up multiple expectations and stubs for the +same method with exactly the same matchers. Instead, use the +Expectation#returns method with multiple arguments to create multiple +actions for a method. You can also chain multiple calls to +Expectation#returns and Expectation#raises (along with syntactic sugar +Expectation#then if desired).

+ +

If you want to specify more complex ordering or order invocations across +different mock objects, use the Expectation#in_sequence method to +explicitly define a total or partial ordering of invocations.

+ + +
+
+
+ +
+

Examples:

+ + +
object = mock()
+object.stubs(:expected_method).returns(1, 2).then.raises(Exception)
+object.expected_method # => 1
+object.expected_method # => 2
+object.expected_method # => raises exception of class Exception1
+ +
+ + +
+ + + + + + + +

+ Instance Method Summary + collapse +

+ + + + +
+

Dynamic Method Handling

+

+ This class handles dynamic methods through the method_missing method + +

+ +
+

+ + #method_missing(symbol, *arguments, &block) ⇒ Object + + + + + +

+
+ +

rubocop:disable Style/MethodMissingSuper

+ + +
+
+
+ + +
+ + + + +
+
+
+
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+
+
# File 'lib/mocha/mock.rb', line 294
+
+def method_missing(symbol, *arguments, &block)
+  if @responder && !@responder.respond_to?(symbol)
+    raise NoMethodError, "undefined method `#{symbol}' for #{mocha_inspect} which responds like #{@responder.mocha_inspect}"
+  end
+  if (matching_expectation_allowing_invocation = all_expectations.match_allowing_invocation(symbol, *arguments))
+    matching_expectation_allowing_invocation.invoke(&block)
+  elsif (matching_expectation = all_expectations.match(symbol, *arguments)) || (!matching_expectation && !@everything_stubbed)
+    if @unexpected_invocation.nil?
+      @unexpected_invocation = UnexpectedInvocation.new(self, symbol, *arguments)
+      matching_expectation.invoke(&block) if matching_expectation
+      message = @unexpected_invocation.full_description
+      message << @mockery.mocha_inspect
+    else
+      message = @unexpected_invocation.short_description
+    end
+    raise ExpectationErrorFactory.build(message, caller)
+  end
+end
+
+
+ +
+ + +
+

Instance Method Details

+ + +
+

+ + + #expects(method_name) ⇒ Expectation + + #expects(expected_methods_vs_return_values) ⇒ Expectation + + + + + Also known as: + __expects__ + + + + +

+
+ +

Adds an expectation that the specified method must be called exactly once +with any parameters.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Expected method invoked once so no error raised

+

+ +
object = mock()
+object.expects(:expected_method)
+object.expected_method
+ + +

+

Expected method not invoked so error raised

+

+ +
object = mock()
+object.expects(:expected_method)
+# error raised when test completes, because expected_method not called exactly once
+ + +

+

Expected method invoked twice so error raised

+

+ +
object = mock()
+object.expects(:expected_method)
+object.expected_method
+object.expected_method # => error raised when expected method invoked second time
+ + +

+

Setup multiple expectations using +expected_methods_vs_return_values.

+

+ +
object = mock()
+object.expects(:expected_method_one => :result_one, :expected_method_two => :result_two)
+
+# is exactly equivalent to
+
+object = mock()
+object.expects(:expected_method_one).returns(:result_one)
+object.expects(:expected_method_two).returns(:result_two)
+ +
+

Parameters:

+
    + +
  • + + method_name + + + (Symbol, String) + + + + — +
    +

    name of expected method

    +
    + +
  • + +
  • + + expected_methods_vs_return_values + + + (Hash) + + + + — +
    +

    expected method name symbols as keys and corresponding return values as +values - these expectations are setup as if #expects were called multiple +times.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    last-built expectation which can be further modified by methods on +Expectation.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+
+
# File 'lib/mocha/mock.rb', line 105
+
+def expects(method_name_or_hash, backtrace = nil)
+  iterator = ArgumentIterator.new(method_name_or_hash)
+  iterator.each do |*args|
+    method_name = args.shift
+    ensure_method_not_already_defined(method_name)
+    expectation = Expectation.new(self, method_name, backtrace)
+    expectation.returns(args.shift) unless args.empty?
+    @expectations.add(expectation)
+  end
+end
+
+
+ +
+

+ + #respond_to?(symbol, include_private = false) ⇒ Boolean + + + + + +

+
+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + +
  • + +
+ +
+ + + + +
+
+
+
+329
+330
+331
+
+
# File 'lib/mocha/mock.rb', line 329
+
+def respond_to?(symbol, include_private = false)
+  respond_to_missing?(symbol, include_private)
+end
+
+
+ +
+

+ + #responds_like(responder) ⇒ Mock + + + + Also known as: + quacks_like + + + + +

+
+ +

Constrains the Mocha::Mock instance so that it can only expect or stub methods +to which responder responds. The constraint is only applied at +method invocation time.

+ +

A NoMethodError will be raised if the responder +does not #respond_to? a method invocation (even if the method +has been expected or stubbed).

+ +

The Mocha::Mock instance will delegate its #respond_to? method to +the responder.

+ +

Note that the methods on responder are never actually invoked.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Normal mocking

+

+ +
sheep = mock('sheep')
+sheep.expects(:chew)
+sheep.expects(:foo)
+sheep.respond_to?(:chew) # => true
+sheep.respond_to?(:foo) # => true
+sheep.chew
+sheep.foo
+# no error raised
+ + +

+

Using #responds_like with an instance method

+

+ +
class Sheep
+  def chew(grass); end
+end
+
+sheep = mock('sheep')
+sheep.responds_like(Sheep.new)
+sheep.expects(:chew)
+sheep.expects(:foo)
+sheep.respond_to?(:chew) # => true
+sheep.respond_to?(:foo) # => false
+sheep.chew
+sheep.foo # => raises NoMethodError exception
+ + +

+

Using #responds_like with a class method

+

+ +
class Sheep
+  def self.number_of_legs; end
+end
+
+sheep_class = mock('sheep_class')
+sheep_class.responds_like(Sheep)
+sheep_class.stubs(:number_of_legs).returns(4)
+sheep_class.expects(:foo)
+sheep_class.respond_to?(:number_of_legs) # => true
+sheep_class.respond_to?(:foo) # => false
+sheep_class.number_of_legs # => 4
+sheep_class.foo # => raises NoMethodError exception
+ +
+

Parameters:

+
    + +
  • + + responder + + + (Object, #respond_to?) + + + + — +
    +

    an object used to determine whether Mocha::Mock instance should +#respond_to? to an invocation.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Mock) + + + + — +
    +

    the same Mocha::Mock instance, thereby allowing invocations of other Mocha::Mock +methods to be chained.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+216
+217
+218
+219
+
+
# File 'lib/mocha/mock.rb', line 216
+
+def responds_like(responder)
+  @responder = responder
+  self
+end
+
+
+ +
+

+ + #responds_like_instance_of(responder_class) ⇒ Mock + + + + Also known as: + quacks_like_instance_of + + + + +

+
+ +

Constrains the Mocha::Mock instance so that it can only expect or stub methods +to which an instance of the responder_class responds. The +constraint is only applied at method invocation time. Note that the +responder instance is instantiated using Class#allocate.

+ +

A NoMethodError will be raised if the responder instance does +not #respond_to? a method invocation (even if the method has +been expected or stubbed).

+ +

The Mocha::Mock instance will delegate its #respond_to? method to +the responder instance.

+ +

Note that the methods on the responder instance are never actually invoked.

+ + +
+
+
+ +
+

Examples:

+ + +

+ +
class Sheep
+  def initialize
+    raise "some awkward code we don't want to call"
+  end
+  def chew(grass); end
+end
+
+sheep = mock('sheep')
+sheep.responds_like_instance_of(Sheep)
+sheep.expects(:chew)
+sheep.expects(:foo)
+sheep.respond_to?(:chew) # => true
+sheep.respond_to?(:foo) # => false
+sheep.chew
+sheep.foo # => raises NoMethodError exception
+ +
+

Parameters:

+
    + +
  • + + responder_class + + + (Class) + + + + — +
    +

    a class used to determine whether Mocha::Mock instance should +#respond_to? to an invocation.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Mock) + + + + — +
    +

    the same Mocha::Mock instance, thereby allowing invocations of other Mocha::Mock +methods to be chained.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+249
+250
+251
+
+
# File 'lib/mocha/mock.rb', line 249
+
+def responds_like_instance_of(responder_class)
+  responds_like(responder_class.allocate)
+end
+
+
+ +
+

+ + + #stubs(method_name) ⇒ Expectation + + #stubs(stubbed_methods_vs_return_values) ⇒ Expectation + + + + + Also known as: + __stubs__ + + + + +

+
+ +

Adds an expectation that the specified method may be called any number of +times with any parameters.

+ + +
+
+
+ +
+

Examples:

+ + +

+

No error raised however many times stubbed method is invoked

+

+ +
object = mock()
+object.stubs(:stubbed_method)
+object.stubbed_method
+object.stubbed_method
+# no error raised
+ + +

+

Setup multiple expectations using +stubbed_methods_vs_return_values.

+

+ +
object = mock()
+object.stubs(:stubbed_method_one => :result_one, :stubbed_method_two => :result_two)
+
+# is exactly equivalent to
+
+object = mock()
+object.stubs(:stubbed_method_one).returns(:result_one)
+object.stubs(:stubbed_method_two).returns(:result_two)
+ +
+

Parameters:

+
    + +
  • + + method_name + + + (Symbol, String) + + + + — +
    +

    name of stubbed method

    +
    + +
  • + +
  • + + stubbed_methods_vs_return_values + + + (Hash) + + + + — +
    +

    stubbed method name symbols as keys and corresponding return values as +values - these stubbed methods are setup as if #stubs were called +multiple times.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    last-built expectation which can be further modified by methods on +Expectation.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+
+
# File 'lib/mocha/mock.rb', line 141
+
+def stubs(method_name_or_hash, backtrace = nil)
+  iterator = ArgumentIterator.new(method_name_or_hash)
+  iterator.each do |*args|
+    method_name = args.shift
+    ensure_method_not_already_defined(method_name)
+    expectation = Expectation.new(self, method_name, backtrace)
+    expectation.at_least(0)
+    expectation.returns(args.shift) unless args.empty?
+    @expectations.add(expectation)
+  end
+end
+
+
+ +
+

+ + #unstub(method_name) ⇒ Object + + + + + +

+
+ +

Removes the specified stubbed method (added by calls to #expects or +#stubs) and all expectations associated with it.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Invoking an unstubbed method causes error to be raised

+

+ +
object = mock('mock') do
+object.stubs(:stubbed_method).returns(:result_one)
+object.stubbed_method # => :result_one
+object.unstub(:stubbed_method)
+object.stubbed_method # => unexpected invocation: #<Mock:mock>.stubbed_method()
+ +
+

Parameters:

+
    + +
  • + + method_name + + + (Symbol) + + + + — +
    +

    name of method to unstub.

    +
    + +
  • + +
+ + +
+ + + + +
+
+
+
+163
+164
+165
+
+
# File 'lib/mocha/mock.rb', line 163
+
+def unstub(method_name)
+  @expectations.remove_all_matching_method(method_name)
+end
+
+
+ +
+ + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ObjectMethods.html b/doc/Mocha/ObjectMethods.html new file mode 100644 index 000000000..d2611fe15 --- /dev/null +++ b/doc/Mocha/ObjectMethods.html @@ -0,0 +1,714 @@ + + + + + + + Module: Mocha::ObjectMethods + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Mocha::ObjectMethods + + + +

+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/object_methods.rb,
+ lib/mocha/parameter_matchers/object.rb
+
+
+ +
+ +

Overview

+
+ +

Methods added to all objects to allow mocking and stubbing on real (i.e. +non-mock) objects.

+ +

Both #expects and #stubs return an Expectation which can be further +modified by methods on Expectation.

+ + +
+
+
+ + +
+ + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + +
+

Instance Method Details

+ + +
+

+ + + #expects(method_name) ⇒ Expectation + + #expects(expected_methods_vs_return_values) ⇒ Expectation + + + + + + +

+
+ +

Adds an expectation that the specified method must be called exactly once +with any parameters.

+ +

The original implementation of the method is replaced during the test and +then restored at the end of the test. The temporary replacement method has +the same visibility as the original method.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Setting up an expectation on a non-mock object.

+

+ +
product = Product.new
+product.expects(:save).returns(true)
+assert_equal true, product.save
+ + +

+

Setting up multiple expectations on a non-mock object.

+

+ +
product = Product.new
+product.expects(:valid? => true, :save => true)
+
+# exactly equivalent to
+
+product = Product.new
+product.expects(:valid?).returns(true)
+product.expects(:save).returns(true)
+ +
+

Parameters:

+
    + +
  • + + method_name + + + (Symbol, String) + + + + — +
    +

    name of expected method

    +
    + +
  • + +
  • + + expected_methods_vs_return_values + + + (Hash) + + + + — +
    +

    expected method name symbols as keys and corresponding return values as +values - these expectations are setup as if #expects were called multiple +times.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    last-built expectation which can be further modified by methods on +Expectation.

    +
    + +
  • + +
+

Raises:

+
    + +
  • + + + (StubbingError) + + + + — +
    +

    if attempting to stub method which is not allowed.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+
+
# File 'lib/mocha/object_methods.rb', line 66
+
+def expects(expected_methods_vs_return_values)
+  if expected_methods_vs_return_values.to_s =~ /the[^a-z]*spanish[^a-z]*inquisition/i
+    raise ExpectationErrorFactory.build('NOBODY EXPECTS THE SPANISH INQUISITION!')
+  end
+  if frozen?
+    raise StubbingError.new("can't stub method on frozen object: #{mocha_inspect}", caller)
+  end
+  expectation = nil
+  mockery = Mocha::Mockery.instance
+  iterator = ArgumentIterator.new(expected_methods_vs_return_values)
+  iterator.each do |*args|
+    method_name = args.shift
+    mockery.on_stubbing(self, method_name)
+    method = stubba_method.new(stubba_object, method_name)
+    mockery.stubba.stub(method)
+    expectation = mocha.expects(method_name, caller)
+    expectation.returns(args.shift) unless args.empty?
+  end
+  expectation
+end
+
+
+ +
+

+ + + #stubs(method_name) ⇒ Expectation + + #stubs(stubbed_methods_vs_return_values) ⇒ Expectation + + + + + + +

+
+ +

Adds an expectation that the specified method may be called any number of +times with any parameters.

+ +

The original implementation of the method is replaced during the test and +then restored at the end of the test. The temporary replacement method has +the same visibility as the original method.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Setting up a stubbed methods on a non-mock object.

+

+ +
product = Product.new
+product.stubs(:save).returns(true)
+assert_equal true, product.save
+ + +

+

Setting up multiple stubbed methods on a non-mock object.

+

+ +
product = Product.new
+product.stubs(:valid? => true, :save => true)
+
+# exactly equivalent to
+
+product = Product.new
+product.stubs(:valid?).returns(true)
+product.stubs(:save).returns(true)
+ +
+

Parameters:

+
    + +
  • + + method_name + + + (Symbol, String) + + + + — +
    +

    name of stubbed method

    +
    + +
  • + +
  • + + stubbed_methods_vs_return_values + + + (Hash) + + + + — +
    +

    stubbed method name symbols as keys and corresponding return values as +values - these stubbed methods are setup as if #stubs were called +multiple times.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Expectation) + + + + — +
    +

    last-built expectation which can be further modified by methods on +Expectation.

    +
    + +
  • + +
+

Raises:

+
    + +
  • + + + (StubbingError) + + + + — +
    +

    if attempting to stub method which is not allowed.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+
+
# File 'lib/mocha/object_methods.rb', line 115
+
+def stubs(stubbed_methods_vs_return_values)
+  if frozen?
+    raise StubbingError.new("can't stub method on frozen object: #{mocha_inspect}", caller)
+  end
+  expectation = nil
+  mockery = Mocha::Mockery.instance
+  iterator = ArgumentIterator.new(stubbed_methods_vs_return_values)
+  iterator.each do |*args|
+    method_name = args.shift
+    mockery.on_stubbing(self, method_name)
+    method = stubba_method.new(stubba_object, method_name)
+    mockery.stubba.stub(method)
+    expectation = mocha.stubs(method_name, caller)
+    expectation.returns(args.shift) unless args.empty?
+  end
+  expectation
+end
+
+
+ +
+

+ + #unstub(*method_names) ⇒ Object + + + + + +

+
+ +

Removes the specified stubbed methods (added by calls to #expects or +#stubs) and all expectations associated with them.

+ +

Restores the original behaviour of the methods before they were stubbed. +This is normally done automatically at the end of each test, but in some +circumstances you may want to do it before the end of the +test.

+ +

WARNING: If you #unstub a method which still has unsatisfied +expectations, you may be removing the only way those expectations can be +satisfied. Use #unstub with care.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Stubbing and unstubbing a method on a real (non-mock) object.

+

+ +
multiplier = Multiplier.new
+multiplier.double(2) # => 4
+multiplier.stubs(:double).raises # new behaviour defined
+multiplier.double(2) # => raises exception
+multiplier.unstub(:double) # original behaviour restored
+multiplier.double(2) # => 4
+ + +

+

Unstubbing multiple methods on a real (non-mock) object.

+

+ +
multiplier.unstub(:double, :triple)
+
+# exactly equivalent to
+
+multiplier.unstub(:double)
+multiplier.unstub(:triple)
+ +
+

Parameters:

+
    + +
  • + + method_names + + + (Array<Symbol>) + + + + — +
    +

    names of methods to unstub.

    +
    + +
  • + +
+ + +
+ + + + +
+
+
+
+156
+157
+158
+159
+160
+161
+162
+
+
# File 'lib/mocha/object_methods.rb', line 156
+
+def unstub(*method_names)
+  mockery = Mocha::Mockery.instance
+  method_names.each do |method_name|
+    method = stubba_method.new(stubba_object, method_name)
+    mockery.stubba.unstub(method)
+  end
+end
+
+
+ +
+ + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers.html b/doc/Mocha/ParameterMatchers.html new file mode 100644 index 000000000..898c35cc8 --- /dev/null +++ b/doc/Mocha/ParameterMatchers.html @@ -0,0 +1,3051 @@ + + + + + + + Module: Mocha::ParameterMatchers + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Mocha::ParameterMatchers + + + +

+
+ + + + + + + + + +
+
Included in:
+
API
+
+ + + +
+
Defined in:
+
lib/mocha/parameter_matchers.rb,
+ lib/mocha/parameter_matchers/not.rb,
lib/mocha/parameter_matchers/base.rb,
lib/mocha/parameter_matchers/is_a.rb,
lib/mocha/parameter_matchers/all_of.rb,
lib/mocha/parameter_matchers/any_of.rb,
lib/mocha/parameter_matchers/equals.rb,
lib/mocha/parameter_matchers/has_key.rb,
lib/mocha/parameter_matchers/kind_of.rb,
lib/mocha/parameter_matchers/anything.rb,
lib/mocha/parameter_matchers/includes.rb,
lib/mocha/parameter_matchers/has_entry.rb,
lib/mocha/parameter_matchers/has_value.rb,
lib/mocha/parameter_matchers/optionally.rb,
lib/mocha/parameter_matchers/has_entries.rb,
lib/mocha/parameter_matchers/instance_of.rb,
lib/mocha/parameter_matchers/responds_with.rb,
lib/mocha/parameter_matchers/any_parameters.rb,
lib/mocha/parameter_matchers/equivalent_uri.rb,
lib/mocha/parameter_matchers/regexp_matches.rb,
lib/mocha/parameter_matchers/yaml_equivalent.rb
+
+
+ +
+ +

Overview

+
+ +

Used as parameters for Expectation#with to restrict the parameter values +which will match the expectation. Can be nested.

+ + +
+
+
+ + +

Defined Under Namespace

+

+ + + + + Classes: AllOf, AnyOf, AnyParameters, Anything, Base, Equals, EquivalentUri, HasEntries, HasEntry, HasKey, HasValue, Includes, InstanceOf, IsA, KindOf, Not, Optionally, RegexpMatches, RespondsWith, YamlEquivalent + + +

+ + + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + +
+

Instance Method Details

+ + +
+

+ + #all_of(*matchers) ⇒ AllOf + + + + + +

+
+ +

Matches if all matchers match.

+ + +
+
+
+ +
+

Examples:

+ + +

+

All parameter matchers match.

+

+ +
object = mock()
+object.expects(:method_1).with(all_of(includes(1), includes(3)))
+object.method_1([1, 3])
+# no error raised
+ + +

+

One of the parameter matchers does not match.

+

+ +
object = mock()
+object.expects(:method_1).with(all_of(includes(1), includes(3)))
+object.method_1([1, 2])
+# error raised, because method_1 was not called with object including 1 and 3
+ +
+

Parameters:

+
    + +
  • + + parameter_matchers + + + (*Array<Base>) + + + + — +
    +

    parameter matchers.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (AllOf) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+23
+24
+25
+
+
# File 'lib/mocha/parameter_matchers/all_of.rb', line 23
+
+def all_of(*matchers)
+  AllOf.new(*matchers)
+end
+
+
+ +
+

+ + #any_of(*matchers) ⇒ AnyOf + + + + + +

+
+ +

Matches if any matchers match.

+ + +
+
+
+ +
+

Examples:

+ + +

+

One parameter matcher matches.

+

+ +
object = mock()
+object.expects(:method_1).with(any_of(1, 3))
+object.method_1(1)
+# no error raised
+ + +

+

The other parameter matcher matches.

+

+ +
object = mock()
+object.expects(:method_1).with(any_of(1, 3))
+object.method_1(3)
+# no error raised
+ + +

+

Neither parameter matcher matches.

+

+ +
object = mock()
+object.expects(:method_1).with(any_of(1, 3))
+object.method_1(2)
+# error raised, because method_1 was not called with 1 or 3
+ +
+

Parameters:

+
    + +
  • + + parameter_matchers + + + (*Array<Base>) + + + + — +
    +

    parameter matchers.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (AnyOf) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+29
+30
+31
+
+
# File 'lib/mocha/parameter_matchers/any_of.rb', line 29
+
+def any_of(*matchers)
+  AnyOf.new(*matchers)
+end
+
+
+ +
+

+ + #any_parametersAnyParameters + + + + + +

+
+ +

Matches any parameters. This is used as the default for a newly built +expectation.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Any parameters will match.

+

+ +
object = mock()
+object.expects(:method_1).with(any_parameters)
+object.method_1(1, 2, 3, 4)
+# no error raised
+
+object = mock()
+object.expects(:method_1).with(any_parameters)
+object.method_1(5, 6, 7, 8, 9, 0)
+# no error raised
+ +
+ +

Returns:

+
    + +
  • + + + (AnyParameters) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+21
+22
+23
+
+
# File 'lib/mocha/parameter_matchers/any_parameters.rb', line 21
+
+def any_parameters
+  AnyParameters.new
+end
+
+
+ +
+

+ + #anythingAnything + + + + + +

+
+ +

Matches any object.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Any object will match.

+

+ +
object = mock()
+object.expects(:method_1).with(anything)
+object.method_1('foo')
+object.method_1(789)
+object.method_1(:bar)
+# no error raised
+ +
+ +

Returns:

+
    + +
  • + + + (Anything) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+18
+19
+20
+
+
# File 'lib/mocha/parameter_matchers/anything.rb', line 18
+
+def anything
+  Anything.new
+end
+
+
+ +
+

+ + #equals(value) ⇒ Equals + + + + + +

+
+ +

Matches any Object equalling value.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter equals expected parameter.

+

+ +
object = mock()
+object.expects(:method_1).with(equals(2))
+object.method_1(2)
+# no error raised
+ + +

+

Actual parameter does not equal expected parameter.

+

+ +
object = mock()
+object.expects(:method_1).with(equals(2))
+object.method_1(3)
+# error raised, because method_1 was not called with an +Object+ that equals 2
+ +
+

Parameters:

+
    + +
  • + + value + + + (Object) + + + + — +
    +

    expected value.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Equals) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+24
+25
+26
+
+
# File 'lib/mocha/parameter_matchers/equals.rb', line 24
+
+def equals(value)
+  Equals.new(value)
+end
+
+
+ +
+

+ + #equivalent_uri(uri) ⇒ EquivalentUri + + + + + +

+
+ +

Matches a URI without regard to the ordering of parameters in the query +string.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual URI is equivalent.

+

+ +
object = mock()
+object.expects(:method_1).with(equivalent_uri('http://example.com/foo?a=1&b=2))
+object.method_1('http://example.com/foo?b=2&a=1')
+# no error raised
+ + +

+

Actual URI is not equivalent.

+

+ +
object = mock()
+object.expects(:method_1).with(equivalent_uri('http://example.com/foo?a=1&b=2))
+object.method_1('http://example.com/foo?a=1&b=3')
+# error raised, because the query parameters were different
+ +
+

Parameters:

+
    + +
  • + + uri + + + (String) + + + + — +
    +

    URI to match.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (EquivalentUri) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+26
+27
+28
+
+
# File 'lib/mocha/parameter_matchers/equivalent_uri.rb', line 26
+
+def equivalent_uri(uri)
+  EquivalentUri.new(uri)
+end
+
+
+ +
+

+ + #has_entries(entries) ⇒ HasEntries + + + + + +

+
+ +

Matches Hash containing all entries.

+ +

rubocop:disable Naming/PredicateName

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter contains all expected entries.

+

+ +
object = mock()
+object.expects(:method_1).with(has_entries('key_1' => 1, 'key_2' => 2))
+object.method_1('key_1' => 1, 'key_2' => 2, 'key_3' => 3)
+# no error raised
+ + +

+

Actual parameter does not contain all expected entries.

+

+ +
object = mock()
+object.expects(:method_1).with(has_entries('key_1' => 1, 'key_2' => 2))
+object.method_1('key_1' => 1, 'key_2' => 99)
+# error raised, because method_1 was not called with Hash containing entries: 'key_1' => 1, 'key_2' => 2
+ +
+

Parameters:

+
    + +
  • + + entries + + + (Hash) + + + + — +
    +

    expected Hash entries.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (HasEntries) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+26
+27
+28
+
+
# File 'lib/mocha/parameter_matchers/has_entries.rb', line 26
+
+def has_entries(entries)
+  HasEntries.new(entries)
+end
+
+
+ +
+

+ + + #has_entry(key, value) ⇒ HasEntry + + #has_entry(single_entry_hash) ⇒ HasEntry + + + + + + +

+
+ +

Matches Hash containing entry with key and +value.

+ +

rubocop:disable Naming/PredicateName

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter contains expected entry supplied as key and value.

+

+ +
object = mock()
+object.expects(:method_1).with(has_entry('key_1', 1))
+object.method_1('key_1' => 1, 'key_2' => 2)
+# no error raised
+ + +

+

Actual parameter contains expected entry supplied as Hash +entry.

+

+ +
object = mock()
+object.expects(:method_1).with(has_entry('key_1' => 1))
+object.method_1('key_1' => 1, 'key_2' => 2)
+# no error raised
+ + +

+

Actual parameter does not contain expected entry supplied as key and value.

+

+ +
object = mock()
+object.expects(:method_1).with(has_entry('key_1', 1))
+object.method_1('key_1' => 2, 'key_2' => 1)
+# error raised, because method_1 was not called with Hash containing entry: 'key_1' => 1
+ + +

+

Actual parameter does not contain expected entry supplied as +Hash entry.

+

+ +

+object = mock()
+object.expects(:method_1).with(has_entry('key_1' => 1))
+object.method_1('key_1' => 2, 'key_2' => 1)
+# error raised, because method_1 was not called with Hash containing entry: 'key_1' => 1
+ +
+ +

Overloads:

+
    + + +
  • + #has_entry(key, value) ⇒ HasEntry +
    +
    + + +
    +
    +
    +

    Parameters:

    +
      + +
    • + + key + + + (Object) + + + + — +
      +

      key for entry.

      +
      + +
    • + +
    • + + value + + + (Object) + + + + — +
      +

      value for entry.

      +
      + +
    • + +
    + + +
    +
  • + + +
  • + #has_entry(single_entry_hash) ⇒ HasEntry +
    +
    + + +
    +
    +
    +

    Parameters:

    +
      + +
    • + + single_entry_hash + + + (Hash) + + + + — +
      +

      Hash with single entry.

      +
      + +
    • + +
    + +

    Raises:

    +
      + +
    • + + + (ArgumentError) + + + + — +
      +

      if single_entry_hash does not contain exactly one entry.

      +
      + +
    • + +
    + +
    +
  • + +
+ +

Returns:

+
    + +
  • + + + (HasEntry) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+
+
# File 'lib/mocha/parameter_matchers/has_entry.rb', line 43
+
+def has_entry(*options)
+  case options.length
+  when 1
+    case options[0]
+    when Hash
+      case options[0].length
+      when 0
+        raise ArgumentError, 'Argument has no entries.'
+      when 1
+        key, value = options[0].first
+      else
+        raise ArgumentError, 'Argument has multiple entries. Use Mocha::ParameterMatchers#has_entries instead.'
+      end
+    else
+      raise ArgumentError, 'Argument is not a Hash.'
+    end
+  when 2
+    key, value = options
+  else
+    raise ArgumentError, 'Too many arguments; use either a single argument (must be a Hash) or two arguments (a key and a value).'
+  end
+  HasEntry.new(key, value)
+end
+
+
+ +
+

+ + #has_equivalent_query_string(uri) ⇒ Object + + + + + +

+
+
Deprecated.
+

Use #equivalent_uri instead.

+
+ +

rubocop:disable Naming/PredicateName

+ + +
+
+
+ + +
+ + + + +
+
+
+
+32
+33
+34
+35
+36
+
+
# File 'lib/mocha/parameter_matchers/equivalent_uri.rb', line 32
+
+def has_equivalent_query_string(uri)
+  Mocha::Deprecation.warning('`has_equivalent_query_string` is deprecated. Please use `equivalent_uri` instead.')
+
+  equivalent_uri(uri)
+end
+
+
+ +
+

+ + #has_key(key) ⇒ HasKey + + + + + +

+
+ +

Matches Hash containing key.

+ +

rubocop:disable Naming/PredicateName

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter contains entry with expected key.

+

+ +
object = mock()
+object.expects(:method_1).with(has_key('key_1'))
+object.method_1('key_1' => 1, 'key_2' => 2)
+# no error raised
+ + +

+

Actual parameter does not contain entry with expected key.

+

+ +
object = mock()
+object.expects(:method_1).with(has_key('key_1'))
+object.method_1('key_2' => 2)
+# error raised, because method_1 was not called with Hash containing key: 'key_1'
+ +
+

Parameters:

+
    + +
  • + + key + + + (Object) + + + + — +
    +

    expected key.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (HasKey) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+24
+25
+26
+
+
# File 'lib/mocha/parameter_matchers/has_key.rb', line 24
+
+def has_key(key)
+  HasKey.new(key)
+end
+
+
+ +
+

+ + #has_value(value) ⇒ HasValue + + + + + +

+
+ +

Matches Hash containing value.

+ +

rubocop:disable Naming/PredicateName

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter contains entry with expected value.

+

+ +
object = mock()
+object.expects(:method_1).with(has_value(1))
+object.method_1('key_1' => 1, 'key_2' => 2)
+# no error raised
+ + +

+

Actual parameter does not contain entry with expected value.

+

+ +
object = mock()
+object.expects(:method_1).with(has_value(1))
+object.method_1('key_2' => 2)
+# error raised, because method_1 was not called with Hash containing value: 1
+ +
+

Parameters:

+
    + +
  • + + value + + + (Object) + + + + — +
    +

    expected value.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (HasValue) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+24
+25
+26
+
+
# File 'lib/mocha/parameter_matchers/has_value.rb', line 24
+
+def has_value(value)
+  HasValue.new(value)
+end
+
+
+ +
+

+ + #includes(*items) ⇒ Includes + + + + + +

+
+ +

Matches any object that responds with true to include?(item) +for all items.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter includes all items.

+

+ +
object = mock()
+object.expects(:method_1).with(includes('foo', 'bar'))
+object.method_1(['foo', 'bar', 'baz'])
+# no error raised
+ + +

+

Actual parameter does not include all items.

+

+ +
object.method_1(['foo', 'baz'])
+# error raised, because ['foo', 'baz'] does not include 'bar'.
+ + +

+

Actual parameter includes item which matches nested matcher.

+

+ +
object = mock()
+object.expects(:method_1).with(includes(has_key(:key)))
+object.method_1(['foo', 'bar', {:key => 'baz'}])
+# no error raised
+ + +

+

Actual parameter does not include item matching nested matcher.

+

+ +
object.method_1(['foo', 'bar', {:other_key => 'baz'}])
+# error raised, because no element matches `has_key(:key)` matcher
+ + +

+

Actual parameter is a String including substring.

+

+ +
object = mock()
+object.expects(:method_1).with(includes('bar'))
+object.method_1('foobarbaz')
+# no error raised
+ + +

+

Actual parameter is a String not including substring.

+

+ +
object.method_1('foobaz')
+# error raised, because 'foobaz' does not include 'bar'
+ + +

+

Actual parameter is a Hash including the given key.

+

+ +
object = mock()
+object.expects(:method_1).with(includes(:bar))
+object.method_1({:foo => 1, :bar => 2})
+# no error raised
+ + +

+

Actual parameter is a Hash without the given key.

+

+ +
object.method_1({:foo => 1, :baz => 2})
+# error raised, because hash does not include key 'bar'
+ + +

+

Actual parameter is a Hash with a key matching the given matcher.

+

+ +
object = mock()
+object.expects(:method_1).with(includes(regexp_matches(/ar/)))
+object.method_1({'foo' => 1, 'bar' => 2})
+# no error raised
+ + +

+

Actual parameter is a Hash no key matching the given matcher.

+

+ +
object.method_1({'foo' => 1, 'baz' => 3})
+# error raised, because hash does not include a key matching /ar/
+ +
+

Parameters:

+
    + +
  • + + items + + + (*Array) + + + + — +
    +

    expected items.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Includes) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+63
+64
+65
+
+
# File 'lib/mocha/parameter_matchers/includes.rb', line 63
+
+def includes(*items)
+  Includes.new(*items)
+end
+
+
+ +
+

+ + #instance_of(klass) ⇒ InstanceOf + + + + + +

+
+ +

Matches any object that is an instance of klass

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter is an instance of String.

+

+ +
object = mock()
+object.expects(:method_1).with(instance_of(String))
+object.method_1('string')
+# no error raised
+ + +

+

Actual parameter is not an instance of String.

+

+ +
object = mock()
+object.expects(:method_1).with(instance_of(String))
+object.method_1(99)
+# error raised, because method_1 was not called with an instance of String
+ +
+

Parameters:

+
    + +
  • + + klass + + + (Class) + + + + — +
    +

    expected class.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (InstanceOf) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+24
+25
+26
+
+
# File 'lib/mocha/parameter_matchers/instance_of.rb', line 24
+
+def instance_of(klass)
+  InstanceOf.new(klass)
+end
+
+
+ +
+

+ + #is_a(klass) ⇒ IsA + + + + + +

+
+ +

Matches any object that is a klass.

+ +

rubocop:disable Naming/PredicateName

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter is a Integer.

+

+ +
object = mock()
+object.expects(:method_1).with(is_a(Integer))
+object.method_1(99)
+# no error raised
+ + +

+

Actual parameter is not a Integer.

+

+ +
object = mock()
+object.expects(:method_1).with(is_a(Integer))
+object.method_1('string')
+# error raised, because method_1 was not called with an Integer
+ +
+

Parameters:

+
    + +
  • + + klass + + + (Class) + + + + — +
    +

    expected class.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (IsA) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+25
+26
+27
+
+
# File 'lib/mocha/parameter_matchers/is_a.rb', line 25
+
+def is_a(klass)
+  IsA.new(klass)
+end
+
+
+ +
+

+ + #kind_of(klass) ⇒ KindOf + + + + + +

+
+ +

Matches any Object that is a kind of klass.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter is a kind of Integer.

+

+ +
object = mock()
+object.expects(:method_1).with(kind_of(Integer))
+object.method_1(99)
+# no error raised
+ + +

+

Actual parameter is not a kind of Integer.

+

+ +
object = mock()
+object.expects(:method_1).with(kind_of(Integer))
+object.method_1('string')
+# error raised, because method_1 was not called with a kind of Integer
+ +
+

Parameters:

+
    + +
  • + + klass + + + (Class) + + + + — +
    +

    expected class.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (KindOf) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+24
+25
+26
+
+
# File 'lib/mocha/parameter_matchers/kind_of.rb', line 24
+
+def kind_of(klass)
+  KindOf.new(klass)
+end
+
+
+ +
+

+ + #Not(matcher) ⇒ Not + + + + + +

+
+ +

Matches if matcher does not match.

+ +

rubocop:disable Naming/MethodName

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter does not include the value 1.

+

+ +
object = mock()
+object.expects(:method_1).with(Not(includes(1)))
+object.method_1([0, 2, 3])
+# no error raised
+ + +

+

Actual parameter does include the value 1.

+

+ +
object = mock()
+object.expects(:method_1).with(Not(includes(1)))
+object.method_1([0, 1, 2, 3])
+# error raised, because method_1 was not called with object not including 1
+ +
+

Parameters:

+
    + +
  • + + matcher + + + (Base) + + + + — +
    +

    matcher whose logic to invert.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Not) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+24
+25
+26
+
+
# File 'lib/mocha/parameter_matchers/not.rb', line 24
+
+def Not(matcher)
+  Not.new(matcher)
+end
+
+
+ +
+

+ + #optionally(*matchers) ⇒ Optionally + + + + + +

+
+ +

Matches optional parameters if available.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Only the two required parameters are supplied and they both match their +expected value.

+

+ +
object = mock()
+object.expects(:method_1).with(1, 2, optionally(3, 4))
+object.method_1(1, 2)
+# no error raised
+ + +

+

Both required parameters and one of the optional parameters are supplied +and they all match their expected value.

+

+ +
object = mock()
+object.expects(:method_1).with(1, 2, optionally(3, 4))
+object.method_1(1, 2, 3)
+# no error raised
+ + +

+

Both required parameters and both of the optional parameters are supplied +and they all match their expected value.

+

+ +
object = mock()
+object.expects(:method_1).with(1, 2, optionally(3, 4))
+object.method_1(1, 2, 3, 4)
+# no error raised
+ + +

+

One of the actual optional parameters does not match the expected value.

+

+ +
object = mock()
+object.expects(:method_1).with(1, 2, optionally(3, 4))
+object.method_1(1, 2, 3, 5)
+# error raised, because optional parameters did not match
+ +
+

Parameters:

+
    + +
  • + + matchers + + + (*Array<Base>) + + + + — +
    +

    matchers for optional parameters.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Optionally) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+33
+34
+35
+
+
# File 'lib/mocha/parameter_matchers/optionally.rb', line 33
+
+def optionally(*matchers)
+  Optionally.new(*matchers)
+end
+
+
+ +
+

+ + #regexp_matches(regexp) ⇒ RegexpMatches + + + + + +

+
+ +

Matches any object that matches regexp.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter is matched by specified regular expression.

+

+ +
object = mock()
+object.expects(:method_1).with(regexp_matches(/e/))
+object.method_1('hello')
+# no error raised
+ + +

+

Actual parameter is not matched by specified regular expression.

+

+ +
object = mock()
+object.expects(:method_1).with(regexp_matches(/a/))
+object.method_1('hello')
+# error raised, because method_1 was not called with a parameter that matched the
+# regular expression
+ +
+

Parameters:

+
    + +
  • + + regexp + + + (Regexp) + + + + — +
    +

    regular expression to match.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (RegexpMatches) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+24
+25
+26
+
+
# File 'lib/mocha/parameter_matchers/regexp_matches.rb', line 24
+
+def regexp_matches(regexp)
+  RegexpMatches.new(regexp)
+end
+
+
+ +
+

+ + #responds_with(message, result) ⇒ RespondsWith + + + + + +

+
+ +

Matches any object that responds to message with +result. To put it another way, it tests the quack, not the +duck.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter responds with “FOO” when :upcase is invoked.

+

+ +
object = mock()
+object.expects(:method_1).with(responds_with(:upcase, "FOO"))
+object.method_1("foo")
+# no error raised, because "foo".upcase == "FOO"
+ + +

+

Actual parameter does not respond with “FOO” when :upcase is invoked.

+

+ +
object = mock()
+object.expects(:method_1).with(responds_with(:upcase, "BAR"))
+object.method_1("foo")
+# error raised, because "foo".upcase != "BAR"
+ +
+

Parameters:

+
    + +
  • + + message + + + (Symbol) + + + + — +
    +

    method to invoke.

    +
    + +
  • + +
  • + + result + + + (Object) + + + + — +
    +

    expected result of sending message.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (RespondsWith) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+25
+26
+27
+
+
# File 'lib/mocha/parameter_matchers/responds_with.rb', line 25
+
+def responds_with(message, result)
+  RespondsWith.new(message, result)
+end
+
+
+ +
+

+ + #yaml_equivalent(object) ⇒ YamlEquivalent + + + + + +

+
+ +

Matches any YAML that represents the specified object

+ + +
+
+
+ +
+

Examples:

+ + +

+

Actual parameter is YAML equivalent of specified object.

+

+ +
object = mock()
+object.expects(:method_1).with(yaml_equivalent(1, 2, 3))
+object.method_1("--- \n- 1\n- 2\n- 3\n")
+# no error raised
+ + +

+

Actual parameter is not YAML equivalent of specified object.

+

+ +
object = mock()
+object.expects(:method_1).with(yaml_equivalent(1, 2, 3))
+object.method_1("--- \n- 1\n- 2\n")
+# error raised, because method_1 was not called with YAML representing the specified Array
+ +
+

Parameters:

+
    + +
  • + + object + + + (Object) + + + + — +
    +

    object whose YAML to compare.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (YamlEquivalent) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+24
+25
+26
+
+
# File 'lib/mocha/parameter_matchers/yaml_equivalent.rb', line 24
+
+def yaml_equivalent(object)
+  YamlEquivalent.new(object)
+end
+
+
+ +
+ + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/AllOf.html b/doc/Mocha/ParameterMatchers/AllOf.html new file mode 100644 index 000000000..cc134232b --- /dev/null +++ b/doc/Mocha/ParameterMatchers/AllOf.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::AllOf + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::AllOf + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/all_of.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which combines a number of other matchers using a logical +AND.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/AnyOf.html b/doc/Mocha/ParameterMatchers/AnyOf.html new file mode 100644 index 000000000..5a2ffb9c0 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/AnyOf.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::AnyOf + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::AnyOf + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/any_of.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which combines a number of other matchers using a logical +OR.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/AnyParameters.html b/doc/Mocha/ParameterMatchers/AnyParameters.html new file mode 100644 index 000000000..2b33ff58b --- /dev/null +++ b/doc/Mocha/ParameterMatchers/AnyParameters.html @@ -0,0 +1,155 @@ + + + + + + + Class: Mocha::ParameterMatchers::AnyParameters + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::AnyParameters + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/any_parameters.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which always matches whatever the parameters.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/Anything.html b/doc/Mocha/ParameterMatchers/Anything.html new file mode 100644 index 000000000..941e43cc0 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/Anything.html @@ -0,0 +1,155 @@ + + + + + + + Class: Mocha::ParameterMatchers::Anything + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::Anything + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/anything.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which always matches a single parameter.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/Base.html b/doc/Mocha/ParameterMatchers/Base.html new file mode 100644 index 000000000..6ce4f74ee --- /dev/null +++ b/doc/Mocha/ParameterMatchers/Base.html @@ -0,0 +1,450 @@ + + + + + + + Class: Mocha::ParameterMatchers::Base + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::Base + Abstract + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/base.rb
+
+ +
+ +

Overview

+
+
+ This class is abstract. +
+

Subclass and implement #matches? and +#mocha_inspect to define a custom matcher. Also add a suitably +named instance method to Mocha::ParameterMatchers to build an instance of the +new matcher c.f. #equals.

+
+
+ + +
+
+
+ + +
+ + + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + +
+

Instance Method Details

+ + +
+

+ + #&(other) ⇒ AllOf + + + + + +

+
+ +

A shorthand way of combining two matchers when both must match.

+ +

Returns a new AllOf parameter matcher combining two matchers using a +logical AND.

+ +

This shorthand will not work with an implicit equals match. Instead, an +explicit Equals matcher should be used.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Alternative ways to combine matchers with a logical AND.

+

+ +
object = mock()
+object.expects(:run).with(all_of(has_key(:foo), has_key(:bar)))
+object.run(:foo => 'foovalue', :bar => 'barvalue')
+
+# is exactly equivalent to
+
+object.expects(:run).with(has_key(:foo) & has_key(:bar))
+object.run(:foo => 'foovalue', :bar => 'barvalue)
+ +
+

Parameters:

+
    + +
  • + + other + + + (Base) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (AllOf) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+30
+31
+32
+
+
# File 'lib/mocha/parameter_matchers/base.rb', line 30
+
+def &(other)
+  AllOf.new(self, other)
+end
+
+
+ +
+

+ + #|(other) ⇒ AnyOf + + + + + +

+
+ +

A shorthand way of combining two matchers when at least one must match.

+ +

Returns a new AnyOf parameter matcher combining two matchers +using a logical OR.

+ +

This shorthand will not work with an implicit equals match. Instead, an +explicit Equals matcher should be used.

+ + +
+
+
+ +
+

Examples:

+ + +

+

Alternative ways to combine matchers with a logical OR.

+

+ +
object = mock()
+object.expects(:run).with(any_of(has_key(:foo), has_key(:bar)))
+object.run(:foo => 'foovalue')
+
+# is exactly equivalent to
+
+object.expects(:run).with(has_key(:foo) | has_key(:bar))
+object.run(:foo => 'foovalue')
+ + +

+

Using an explicit Equals matcher in combination with #|.

+

+ +
object.expects(:run).with(equals(1) | equals(2))
+object.run(1) # passes
+object.run(2) # passes
+object.run(3) # fails
+ +
+

Parameters:

+
    + +
  • + + other + + + (Base) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (AnyOf) + + + + — +
    +

    parameter matcher.

    +
    + +
  • + +
+ +

See Also:

+ + +
+ + + + +
+
+
+
+60
+61
+62
+
+
# File 'lib/mocha/parameter_matchers/base.rb', line 60
+
+def |(other)
+  AnyOf.new(self, other)
+end
+
+
+ +
+ + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/Equals.html b/doc/Mocha/ParameterMatchers/Equals.html new file mode 100644 index 000000000..3c3ffc019 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/Equals.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::Equals + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::Equals + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/equals.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches when actual parameter equals expected +value.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/EquivalentUri.html b/doc/Mocha/ParameterMatchers/EquivalentUri.html new file mode 100644 index 000000000..abe32ff0d --- /dev/null +++ b/doc/Mocha/ParameterMatchers/EquivalentUri.html @@ -0,0 +1,155 @@ + + + + + + + Class: Mocha::ParameterMatchers::EquivalentUri + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::EquivalentUri + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/equivalent_uri.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches URIs with equivalent query strings.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/HasEntries.html b/doc/Mocha/ParameterMatchers/HasEntries.html new file mode 100644 index 000000000..2f2e18848 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/HasEntries.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::HasEntries + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::HasEntries + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/has_entries.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches when actual parameter contains all expected +Hash entries.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/HasEntry.html b/doc/Mocha/ParameterMatchers/HasEntry.html new file mode 100644 index 000000000..d76b66f04 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/HasEntry.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::HasEntry + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::HasEntry + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/has_entry.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches when actual parameter contains expected +Hash entry.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/HasKey.html b/doc/Mocha/ParameterMatchers/HasKey.html new file mode 100644 index 000000000..39923cf12 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/HasKey.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::HasKey + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::HasKey + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/has_key.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches when actual parameter contains +Hash entry with expected key.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/HasValue.html b/doc/Mocha/ParameterMatchers/HasValue.html new file mode 100644 index 000000000..7d9cb9877 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/HasValue.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::HasValue + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::HasValue + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/has_value.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches when actual parameter contains +Hash entry with expected value.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/Includes.html b/doc/Mocha/ParameterMatchers/Includes.html new file mode 100644 index 000000000..2f92969f5 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/Includes.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::Includes + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::Includes + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/includes.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches when actual parameter includes expected +values.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/InstanceOf.html b/doc/Mocha/ParameterMatchers/InstanceOf.html new file mode 100644 index 000000000..ec8ff7d57 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/InstanceOf.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::InstanceOf + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::InstanceOf + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/instance_of.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches when actual parameter is an instance of the +specified class.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/IsA.html b/doc/Mocha/ParameterMatchers/IsA.html new file mode 100644 index 000000000..43f91aa6f --- /dev/null +++ b/doc/Mocha/ParameterMatchers/IsA.html @@ -0,0 +1,155 @@ + + + + + + + Class: Mocha::ParameterMatchers::IsA + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::IsA + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/is_a.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches when actual parameter is a specific class.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/KindOf.html b/doc/Mocha/ParameterMatchers/KindOf.html new file mode 100644 index 000000000..db00a1f71 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/KindOf.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::KindOf + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::KindOf + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/kind_of.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches when actual parameter is a kind of +specified class.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/Not.html b/doc/Mocha/ParameterMatchers/Not.html new file mode 100644 index 000000000..ce286fcab --- /dev/null +++ b/doc/Mocha/ParameterMatchers/Not.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::Not + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::Not + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/not.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which inverts the logic of the specified matcher using a +logical NOT operation.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/Optionally.html b/doc/Mocha/ParameterMatchers/Optionally.html new file mode 100644 index 000000000..056624c21 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/Optionally.html @@ -0,0 +1,155 @@ + + + + + + + Class: Mocha::ParameterMatchers::Optionally + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::Optionally + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/optionally.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which allows optional parameters to be specified.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/RegexpMatches.html b/doc/Mocha/ParameterMatchers/RegexpMatches.html new file mode 100644 index 000000000..2fcfbe1e1 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/RegexpMatches.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::RegexpMatches + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::RegexpMatches + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/regexp_matches.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches if specified regular expression matches +actual paramter.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/RespondsWith.html b/doc/Mocha/ParameterMatchers/RespondsWith.html new file mode 100644 index 000000000..55c248f4c --- /dev/null +++ b/doc/Mocha/ParameterMatchers/RespondsWith.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::RespondsWith + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::RespondsWith + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/responds_with.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches if actual parameter returns expected result +when specified method is invoked.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/ParameterMatchers/YamlEquivalent.html b/doc/Mocha/ParameterMatchers/YamlEquivalent.html new file mode 100644 index 000000000..06e728c21 --- /dev/null +++ b/doc/Mocha/ParameterMatchers/YamlEquivalent.html @@ -0,0 +1,156 @@ + + + + + + + Class: Mocha::ParameterMatchers::YamlEquivalent + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::ParameterMatchers::YamlEquivalent + + + +

+
+ +
+
Inherits:
+
+ Base + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/parameter_matchers/yaml_equivalent.rb
+
+ +
+ +

Overview

+
+ +

Parameter matcher which matches if actual parameter is YAML equivalent of +specified object.

+ + +
+
+
+ + +
+ + + + + + + + + + + + + +

Method Summary

+ +

Methods inherited from Base

+

#&, #|

+ + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/Sequence.html b/doc/Mocha/Sequence.html new file mode 100644 index 000000000..f734770eb --- /dev/null +++ b/doc/Mocha/Sequence.html @@ -0,0 +1,151 @@ + + + + + + + Class: Mocha::Sequence + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::Sequence + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/sequence.rb
+
+ +
+ +

Overview

+
+ +

Used to constrain the order in which expectations can occur.

+ + +
+
+
+ + +

See Also:

+ + +
+ + + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/StateMachine.html b/doc/Mocha/StateMachine.html new file mode 100644 index 000000000..3bd3f0ba3 --- /dev/null +++ b/doc/Mocha/StateMachine.html @@ -0,0 +1,541 @@ + + + + + + + Class: Mocha::StateMachine + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::StateMachine + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/state_machine.rb
+
+ +
+ +

Overview

+
+ +

A state machine that is used to constrain the order of invocations. An +invocation can be constrained to occur when a state #is, or #is_not, +active.

+ + +
+
+
+ + +

Defined Under Namespace

+

+ + + + + Classes: State, StatePredicate + + +

+ + + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + +
+

Instance Method Details

+ + +
+

+ + #become(next_state_name) ⇒ Object + + + + + +

+
+ +

Put the Mocha::StateMachine into the next_state_name.

+ + +
+
+
+

Parameters:

+
    + +
  • + + next_state_name + + + (String) + + + + — +
    +

    name of new state

    +
    + +
  • + +
+ + +
+ + + + +
+
+
+
+72
+73
+74
+
+
# File 'lib/mocha/state_machine.rb', line 72
+
+def become(next_state_name)
+  @current_state = next_state_name
+end
+
+
+ +
+

+ + #is(state_name) ⇒ State + + + + + +

+
+ +

Provides a mechanism to change the Mocha::StateMachine into the state specified +by state_name at some point in the future.

+ +

Or provides a mechanism to determine whether the Mocha::StateMachine is in the +state specified by state_name at some point in the future.

+ + +
+
+
+

Parameters:

+
    + +
  • + + state_name + + + (String) + + + + — +
    +

    name of new state

    +
    + +
  • + +
+ +

Returns:

+
    + +
  • + + + (State) + + + + — +
    +

    state which, when activated, will change the Mocha::StateMachine into the state +with the specified state_name.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+82
+83
+84
+
+
# File 'lib/mocha/state_machine.rb', line 82
+
+def is(state_name)
+  State.new(self, state_name)
+end
+
+
+ +
+

+ + #is_not(state_name) ⇒ Object + + + + + +

+
+ +

Provides a mechanism to determine whether the Mocha::StateMachine is not in the +state specified by state_name at some point in the future. +rubocop:disable Naming/PredicateName

+ + +
+
+
+ + +
+ + + + +
+
+
+
+88
+89
+90
+
+
# File 'lib/mocha/state_machine.rb', line 88
+
+def is_not(state_name)
+  StatePredicate.new(self, state_name)
+end
+
+
+ +
+

+ + #starts_as(initial_state_name) ⇒ StateMachine + + + + + +

+
+ +

Put the Mocha::StateMachine into the state specified by +initial_state_name.

+ + +
+
+
+

Parameters:

+
    + +
  • + + initial_state_name + + + (String) + + + + — +
    +

    name of initial state

    +
    + +
  • + +
+ +

Returns:

+ + +
+ + + + +
+
+
+
+64
+65
+66
+67
+
+
# File 'lib/mocha/state_machine.rb', line 64
+
+def starts_as(initial_state_name)
+  become(initial_state_name)
+  self
+end
+
+
+ +
+ + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/StateMachine/State.html b/doc/Mocha/StateMachine/State.html new file mode 100644 index 000000000..309ee1f11 --- /dev/null +++ b/doc/Mocha/StateMachine/State.html @@ -0,0 +1,143 @@ + + + + + + + Class: Mocha::StateMachine::State + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::StateMachine::State + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/state_machine.rb
+
+ +
+ +

Overview

+
+ +

Provides a mechanism to change the state of a Mocha::StateMachine at some point +in the future.

+ + +
+
+
+ + +
+ + + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/StateMachine/StatePredicate.html b/doc/Mocha/StateMachine/StatePredicate.html new file mode 100644 index 000000000..44fd0df2c --- /dev/null +++ b/doc/Mocha/StateMachine/StatePredicate.html @@ -0,0 +1,143 @@ + + + + + + + Class: Mocha::StateMachine::StatePredicate + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::StateMachine::StatePredicate + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/state_machine.rb
+
+ +
+ +

Overview

+
+ +

Provides the ability to determine whether a Mocha::StateMachine is in a +specified state at some point in the future.

+ + +
+
+
+ + +
+ + + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/StubbingError.html b/doc/Mocha/StubbingError.html new file mode 100644 index 000000000..ecfc3d863 --- /dev/null +++ b/doc/Mocha/StubbingError.html @@ -0,0 +1,152 @@ + + + + + + + Class: Mocha::StubbingError + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::StubbingError + + + +

+
+ +
+
Inherits:
+
+ ErrorWithFilteredBacktrace + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/stubbing_error.rb
+
+ +
+ +

Overview

+
+ +

Exception raised when stubbing a particular method is not allowed.

+ + +
+
+
+ + +

See Also:

+ + +
+ + + + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/Mocha/UnexpectedInvocation.html b/doc/Mocha/UnexpectedInvocation.html new file mode 100644 index 000000000..7a76b59fc --- /dev/null +++ b/doc/Mocha/UnexpectedInvocation.html @@ -0,0 +1,142 @@ + + + + + + + Class: Mocha::UnexpectedInvocation + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Mocha::UnexpectedInvocation + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/mocha/unexpected_invocation.rb
+
+ +
+ +

Overview

+
+ +

Exception raised when an unexpected method is invoked

+ + +
+
+
+ + +
+ + + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/_index.html b/doc/_index.html new file mode 100644 index 000000000..f307e7f35 --- /dev/null +++ b/doc/_index.html @@ -0,0 +1,539 @@ + + + + + + + Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Mocha 1.7.0

+
+

Alphabetic Index

+ +

File Listing

+ + +
+

Namespace Listing A-Z

+ + + + + + + + +
+ + +
    +
  • A
  • +
      + +
    • + API + + (Mocha) + +
    • + +
    • + Adapter + + (Mocha::Integration::TestUnit) + +
    • + +
    • + Adapter + + (Mocha::Integration::MiniTest) + +
    • + +
    • + AllOf + + (Mocha::ParameterMatchers) + +
    • + +
    • + AnyOf + + (Mocha::ParameterMatchers) + +
    • + +
    • + AnyParameters + + (Mocha::ParameterMatchers) + +
    • + +
    • + Anything + + (Mocha::ParameterMatchers) + +
    • + +
    +
+ + +
    +
  • B
  • +
      + +
    • + Base + + (Mocha::ParameterMatchers) + +
    • + +
    +
+ + + + + + + + +
    +
  • H
  • +
      + +
    • + HasEntries + + (Mocha::ParameterMatchers) + +
    • + +
    • + HasEntry + + (Mocha::ParameterMatchers) + +
    • + +
    • + HasKey + + (Mocha::ParameterMatchers) + +
    • + +
    • + HasValue + + (Mocha::ParameterMatchers) + +
    • + +
    • + Hooks + + (Mocha) + +
    • + +
    +
+ + +
    +
  • I
  • +
      + +
    • + Includes + + (Mocha::ParameterMatchers) + +
    • + +
    • + InstanceOf + + (Mocha::ParameterMatchers) + +
    • + +
    • + Integration + + (Mocha) + +
    • + +
    • + IsA + + (Mocha::ParameterMatchers) + +
    • + +
    +
+ + +
    +
  • K
  • +
      + +
    • + KindOf + + (Mocha::ParameterMatchers) + +
    • + +
    +
+ + +
+ + +
    +
  • M
  • +
      + +
    • + MiniTest + + (Mocha::Integration) + +
    • + +
    • + Mocha + +
    • + +
    • + Mock + + (Mocha) + +
    • + +
    +
+ + +
    +
  • N
  • +
      + +
    • + Not + + (Mocha::ParameterMatchers) + +
    • + +
    +
+ + + + + + + + + + + + + + +
    +
  • T
  • +
      + +
    • + TestUnit + + (Mocha::Integration) + +
    • + +
    +
+ + + + + +
+ + + + +
+ +
+ + + +
+ + + +
+ + \ No newline at end of file diff --git a/doc/class_list.html b/doc/class_list.html new file mode 100644 index 000000000..146d23589 --- /dev/null +++ b/doc/class_list.html @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + Class List + + + +
+
+

Class List

+ + + +
+ + +
+ + diff --git a/doc/css/common.css b/doc/css/common.css new file mode 100644 index 000000000..cf25c4523 --- /dev/null +++ b/doc/css/common.css @@ -0,0 +1 @@ +/* Override this file with custom rules */ \ No newline at end of file diff --git a/doc/css/full_list.css b/doc/css/full_list.css new file mode 100644 index 000000000..fa3598242 --- /dev/null +++ b/doc/css/full_list.css @@ -0,0 +1,58 @@ +body { + margin: 0; + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; + font-size: 13px; + height: 101%; + overflow-x: hidden; + background: #fafafa; +} + +h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; } +.clear { clear: both; } +.fixed_header { position: fixed; background: #fff; width: 100%; padding-bottom: 10px; margin-top: 0; top: 0; z-index: 9999; height: 70px; } +#search { position: absolute; right: 5px; top: 9px; padding-left: 24px; } +#content.insearch #search, #content.insearch #noresults { background: url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAAPr6+pKSkoiIiO7u7sjIyNjY2J6engAAAI6OjsbGxjIyMlJSUuzs7KamppSUlPLy8oKCghwcHLKysqSkpJqamvT09Pj4+KioqM7OzkRERAwMDGBgYN7e3ujo6Ly8vCoqKjY2NkZGRtTU1MTExDw8PE5OTj4+PkhISNDQ0MrKylpaWrS0tOrq6nBwcKysrLi4uLq6ul5eXlxcXGJiYoaGhuDg4H5+fvz8/KKiohgYGCwsLFZWVgQEBFBQUMzMzDg4OFhYWBoaGvDw8NbW1pycnOLi4ubm5kBAQKqqqiQkJCAgIK6urnJyckpKSjQ0NGpqatLS0sDAwCYmJnx8fEJCQlRUVAoKCggICLCwsOTk5ExMTPb29ra2tmZmZmhoaNzc3KCgoBISEiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCAAAACwAAAAAEAAQAAAHaIAAgoMgIiYlg4kACxIaACEJCSiKggYMCRselwkpghGJBJEcFgsjJyoAGBmfggcNEx0flBiKDhQFlIoCCA+5lAORFb4AJIihCRbDxQAFChAXw9HSqb60iREZ1omqrIPdJCTe0SWI09GBACH5BAkIAAAALAAAAAAQABAAAAdrgACCgwc0NTeDiYozCQkvOTo9GTmDKy8aFy+NOBA7CTswgywJDTIuEjYFIY0JNYMtKTEFiRU8Pjwygy4ws4owPyCKwsMAJSTEgiQlgsbIAMrO0dKDGMTViREZ14kYGRGK38nHguHEJcvTyIEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDAggPg4iJAAMJCRUAJRIqiRGCBI0WQEEJJkWDERkYAAUKEBc4Po1GiKKJHkJDNEeKig4URLS0ICImJZAkuQAhjSi/wQyNKcGDCyMnk8u5rYrTgqDVghgZlYjcACTA1sslvtHRgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCQARAtOUoQRGRiFD0kJUYWZhUhKT1OLhR8wBaaFBzQ1NwAlkIszCQkvsbOHL7Y4q4IuEjaqq0ZQD5+GEEsJTDCMmIUhtgk1lo6QFUwJVDKLiYJNUd6/hoEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4uen4ICCA+IkIsDCQkVACWmhwSpFqAABQoQF6ALTkWFnYMrVlhWvIKTlSAiJiVVPqlGhJkhqShHV1lCW4cMqSkAR1ofiwsjJyqGgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCSMhREZGIYYGY2ElYebi56fhyWQniSKAKKfpaCLFlAPhl0gXYNGEwkhGYREUywag1wJwSkHNDU3D0kJYIMZQwk8MjPBLx9eXwuETVEyAC/BOKsuEjYFhoEAIfkECQgAAAAsAAAAABAAEAAAB2eAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4ueICImip6CIQkJKJ4kigynKaqKCyMnKqSEK05StgAGQRxPYZaENqccFgIID4KXmQBhXFkzDgOnFYLNgltaSAAEpxa7BQoQF4aBACH5BAkIAAAALAAAAAAQABAAAAdogACCg4SFggJiPUqCJSWGgkZjCUwZACQkgxGEXAmdT4UYGZqCGWQ+IjKGGIUwPzGPhAc0NTewhDOdL7Ykji+dOLuOLhI2BbaFETICx4MlQitdqoUsCQ2vhKGjglNfU0SWmILaj43M5oEAOwAAAAAAAAAAAA==) no-repeat center left; } +#full_list { padding: 0; list-style: none; margin-left: 0; margin-top: 80px; font-size: 1.1em; } +#full_list ul { padding: 0; } +#full_list li { padding: 0; margin: 0; list-style: none; } +#full_list li .item { padding: 5px 5px 5px 12px; } +#noresults { padding: 7px 12px; background: #fff; } +#content.insearch #noresults { margin-left: 7px; } +li.collapsed ul { display: none; } +li a.toggle { cursor: default; position: relative; left: -5px; top: 4px; text-indent: -999px; width: 10px; height: 9px; margin-left: -10px; display: block; float: left; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC) no-repeat bottom left; } +li.collapsed a.toggle { opacity: 0.5; cursor: default; background-position: top left; } +li { color: #888; cursor: pointer; } +li.deprecated { text-decoration: line-through; font-style: italic; } +li.odd { background: #f0f0f0; } +li.even { background: #fafafa; } +.item:hover { background: #ddd; } +li small:before { content: "("; } +li small:after { content: ")"; } +li small.search_info { display: none; } +a, a:visited { text-decoration: none; color: #05a; } +li.clicked > .item { background: #05a; color: #ccc; } +li.clicked > .item a, li.clicked > .item a:visited { color: #eee; } +li.clicked > .item a.toggle { opacity: 0.5; background-position: bottom right; } +li.collapsed.clicked a.toggle { background-position: top right; } +#search input { border: 1px solid #bbb; border-radius: 3px; } +#full_list_nav { margin-left: 10px; font-size: 0.9em; display: block; color: #aaa; } +#full_list_nav a, #nav a:visited { color: #358; } +#full_list_nav a:hover { background: transparent; color: #5af; } +#full_list_nav span:after { content: ' | '; } +#full_list_nav span:last-child:after { content: ''; } + +#content h1 { margin-top: 0; } +li { white-space: nowrap; cursor: normal; } +li small { display: block; font-size: 0.8em; } +li small:before { content: ""; } +li small:after { content: ""; } +li small.search_info { display: none; } +#search { width: 170px; position: static; margin: 3px; margin-left: 10px; font-size: 0.9em; color: #888; padding-left: 0; padding-right: 24px; } +#content.insearch #search { background-position: center right; } +#search input { width: 110px; } + +#full_list.insearch ul { display: block; } +#full_list.insearch .item { display: none; } +#full_list.insearch .found { display: block; padding-left: 11px !important; } +#full_list.insearch li a.toggle { display: none; } +#full_list.insearch li small.search_info { display: block; } diff --git a/doc/css/style.css b/doc/css/style.css new file mode 100644 index 000000000..0bf7e2c73 --- /dev/null +++ b/doc/css/style.css @@ -0,0 +1,496 @@ +html { + width: 100%; + height: 100%; +} +body { + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; + font-size: 13px; + width: 100%; + margin: 0; + padding: 0; + display: flex; + display: -webkit-flex; + display: -ms-flexbox; +} + +#nav { + position: relative; + width: 100%; + height: 100%; + border: 0; + border-right: 1px dotted #eee; + overflow: auto; +} +.nav_wrap { + margin: 0; + padding: 0; + width: 20%; + height: 100%; + position: relative; + display: flex; + display: -webkit-flex; + display: -ms-flexbox; + flex-shrink: 0; + -webkit-flex-shrink: 0; + -ms-flex: 1 0; +} +#resizer { + position: absolute; + right: -5px; + top: 0; + width: 10px; + height: 100%; + cursor: col-resize; + z-index: 9999; +} +#main { + flex: 5 1; + -webkit-flex: 5 1; + -ms-flex: 5 1; + outline: none; + position: relative; + background: #fff; + padding: 1.2em; + padding-top: 0.2em; +} + +@media (max-width: 920px) { + .nav_wrap { width: 100%; top: 0; right: 0; overflow: visible; position: absolute; } + #resizer { display: none; } + #nav { + z-index: 9999; + background: #fff; + display: none; + position: absolute; + top: 40px; + right: 12px; + width: 500px; + max-width: 80%; + height: 80%; + overflow-y: scroll; + border: 1px solid #999; + border-collapse: collapse; + box-shadow: -7px 5px 25px #aaa; + border-radius: 2px; + } +} + +@media (min-width: 920px) { + body { height: 100%; overflow: hidden; } + #main { height: 100%; overflow: auto; } + #search { display: none; } +} + +#main img { max-width: 100%; } +h1 { font-size: 25px; margin: 1em 0 0.5em; padding-top: 4px; border-top: 1px dotted #d5d5d5; } +h1.noborder { border-top: 0px; margin-top: 0; padding-top: 4px; } +h1.title { margin-bottom: 10px; } +h1.alphaindex { margin-top: 0; font-size: 22px; } +h2 { + padding: 0; + padding-bottom: 3px; + border-bottom: 1px #aaa solid; + font-size: 1.4em; + margin: 1.8em 0 0.5em; + position: relative; +} +h2 small { font-weight: normal; font-size: 0.7em; display: inline; position: absolute; right: 0; } +h2 small a { + display: block; + height: 20px; + border: 1px solid #aaa; + border-bottom: 0; + border-top-left-radius: 5px; + background: #f8f8f8; + position: relative; + padding: 2px 7px; +} +.clear { clear: both; } +.inline { display: inline; } +.inline p:first-child { display: inline; } +.docstring, .tags, #filecontents { font-size: 15px; line-height: 1.5145em; } +.docstring p > code, .docstring p > tt, .tags p > code, .tags p > tt { + color: #c7254e; background: #f9f2f4; padding: 2px 4px; font-size: 1em; + border-radius: 4px; +} +.docstring h1, .docstring h2, .docstring h3, .docstring h4 { padding: 0; border: 0; border-bottom: 1px dotted #bbb; } +.docstring h1 { font-size: 1.2em; } +.docstring h2 { font-size: 1.1em; } +.docstring h3, .docstring h4 { font-size: 1em; border-bottom: 0; padding-top: 10px; } +.summary_desc .object_link a, .docstring .object_link a { + font-family: monospace; font-size: 1.05em; + color: #05a; background: #EDF4FA; padding: 2px 4px; font-size: 1em; + border-radius: 4px; +} +.rdoc-term { padding-right: 25px; font-weight: bold; } +.rdoc-list p { margin: 0; padding: 0; margin-bottom: 4px; } +.summary_desc pre.code .object_link a, .docstring pre.code .object_link a { + padding: 0px; background: inherit; color: inherit; border-radius: inherit; +} + +/* style for */ +#filecontents table, .docstring table { border-collapse: collapse; } +#filecontents table th, #filecontents table td, +.docstring table th, .docstring table td { border: 1px solid #ccc; padding: 8px; padding-right: 17px; } +#filecontents table tr:nth-child(odd), +.docstring table tr:nth-child(odd) { background: #eee; } +#filecontents table tr:nth-child(even), +.docstring table tr:nth-child(even) { background: #fff; } +#filecontents table th, .docstring table th { background: #fff; } + +/* style for
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/doc/method_list.html b/doc/method_list.html new file mode 100644 index 000000000..557b9085c --- /dev/null +++ b/doc/method_list.html @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + Method List + + + +
+
+

Method List

+ + + +
+ + +
+ + diff --git a/doc/top-level-namespace.html b/doc/top-level-namespace.html new file mode 100644 index 000000000..7a142c0ef --- /dev/null +++ b/doc/top-level-namespace.html @@ -0,0 +1,120 @@ + + + + + + + Top Level Namespace + + — Mocha 1.7.0 + + + + + + + + + + + + + + + + + + + +
+ + +

Top Level Namespace + + + +

+
+ + + + + + + + + + + +
+ +

Defined Under Namespace

+

+ + + Modules: Mocha + + + + +

+ + + + + + + + + + + +
+ + + +
+ + \ No newline at end of file