# Matching Parameter Values

You can specify different actions to be performed when a method is invoked with different parameters:

allowing (calculator).add(1,1); will(returnValue(3)); allowing (calculator).add(2,2); will(returnValue(5)); allowing (calculator).sqrt(-1); will(throwException(new IllegalArgumentException());

You can specify that the same method can be invoked a different number of times with different parameters:

one (calculator).load("x"); will(returnValue(10)); never (calculator).load("y");

Actual parameters match if they are equal to the expected parameters.
For most values, equality is determined by the `equals`

method.
Null values are checked beforehand, so it is safe to pass
`null`

as an expected or actual parameter value. Arrays are
treated as a special case and compared recursively: two arrays are
considered equal if they are the same size and all their elements are
considered equal. If you want to ignore parameters or match parameter
values in a different way, you will need to define matchers^{1} for each parameter of the
expectation.