Esempio n. 1
0
def test_can_expect_call_without_specifying_arguments_with_the_same_syntax_that_it_will_be_called_with(mocks):
    to_save = "Let's go!"
    return_value = "Yippee!"
    database = mocks.mock()
    expects(database).save.returns(return_value)
    assert database.save(to_save) is return_value
    assert_raises(UnexpectedInvocationError, lambda: database.save(to_save))
Esempio n. 2
0
def test_using_allows_in_a_sequence_allows_it_to_be_called_no_times(mocks):
    file = mocks.mock()
    ordering = mocks.sequence()
    allows(file).write.in_sequence(ordering)
    expects(file).close().in_sequence(ordering)
    
    file.close()
Esempio n. 3
0
def test_expected_methods_cannot_be_called_more_than_once(mocks):
    mock = mocks.mock()
    expects(mock).save.returns("Oh my!")
    
    mock.save("positional", key="word")
    
    assert_raises(UnexpectedInvocationError, lambda: mock.save("positional", key="word"))
Esempio n. 4
0
 def test_function(mocks):
     file = mocks.mock(name="file")
     ordering = mocks.sequence()
     expects(file).write("Private investigations").in_sequence(ordering)
     expects(file).close().in_sequence(ordering)
     
     file.close()
     file.write("Private investigations")
Esempio n. 5
0
def test_method_expectations_are_used_in_the_order_they_are_defined(mocks):
    first = "One is the loneliest number"
    second = "Two can be as bad as one"
    mock = mocks.mock()
    expects(mock).save.returns(first)
    expects(mock).save.returns(second)
    
    assert mock.save() is first
    assert mock.save() is second
Esempio n. 6
0
def test_calling_allowed_call_in_wrong_place_raises_assertion_error(mocks):
    file = mocks.mock()
    ordering = mocks.sequence()
    allows(file).write.in_sequence(ordering)
    expects(file).close().in_sequence(ordering)
    
    file.close()
    assert_raises_str(AssertionError,
                      'Invocation out of order. Expected no more calls in sequence, but got unnamed.write.',
                      lambda: file.write("Bar"))
Esempio n. 7
0
def test_can_use_matchers_instead_of_values_for_keyword_arguments(mocks):
    return_value = "Whoopee!"
    mock = mocks.mock()
    expects(mock).save.with_args(value=equal_to("Blah")).returns(return_value)
    
    assert_raises(UnexpectedInvocationError, lambda: mock.save())
    assert_raises(UnexpectedInvocationError, lambda: mock.save(key="word"))
    assert_raises(UnexpectedInvocationError, lambda: mock.save("positional"))
    assert_raises(UnexpectedInvocationError, lambda: mock.save("positional", key="word"))
    
    assert mock.save(value="Blah") is return_value
Esempio n. 8
0
def test_expected_methods_can_be_called_in_any_order(mocks):
    return_no_args = "Alone!"
    return_positional = "One is the loneliest number"
    
    mock = mocks.mock()
    expects(mock).save.with_args().returns(return_no_args)
    expects(mock).save.with_args("positional").returns(return_positional)
    
    assert mock.save("positional") is return_positional
    assert mock.save() is return_no_args
    
    assert_raises(UnexpectedInvocationError, lambda: mock.save("positional"))
    assert_raises(UnexpectedInvocationError, lambda: mock.save())
Esempio n. 9
0
def test_can_use_matchers_instead_of_values_for_keyword_arguments(mocks):
    class BlahMatcher(Matcher):
        def matches(self, other, failure_output):
            return other == "Blah"
            
    return_value = "Whoopee!"
    mock = mocks.mock()
    expects(mock).save.with_args(value=BlahMatcher()).returns(return_value)
    
    assert_raises(UnexpectedInvocationError, lambda: mock.save())
    assert_raises(UnexpectedInvocationError, lambda: mock.save(key="word"))
    assert_raises(UnexpectedInvocationError, lambda: mock.save("positional"))
    assert_raises(UnexpectedInvocationError, lambda: mock.save("positional", key="word"))
    
    assert mock.save(value="Blah") is return_value
Esempio n. 10
0
def test_can_mock_methods_used_internally_by_mock(mocks):
    mock = mocks.mock()
    
    expects(mock)._mocked_calls
    expects(mock).save()
    allows(mock)._mocked_calls
    allows(mock).save()
    expects_call(mock)
    allows_call(mock)
    
    mock._mocked_calls()
    mock.save()
    mock()
    
    class UserRepository(object):
        def _base(self):
            pass
    
    based_mock = mocks.mock(UserRepository)
    allows(based_mock)._base
Esempio n. 11
0
def test_sequences_do_not_raise_assertions_when_called_in_correct_order(mocks):
    log = mocks.mock()
    
    first_ordering = mocks.sequence()
    second_ordering = mocks.sequence()
    
    expects(log).write("You and your friend").in_sequence(first_ordering)
    expects(log).write("Love Over Gold").in_sequence(second_ordering)
    
    expects(log).close().in_sequence(first_ordering).in_sequence(second_ordering)
    
    allows(log).flush()
    
    log.flush()
    log.write("Love Over Gold")
    log.flush()
    log.write("You and your friend")
    log.flush()
    
    log.close()
Esempio n. 12
0
def test_can_read_multiple_rules_separated_by_newlines(context):
    rule_set = context.mock(RuleSet)
    expects(rule_set).add(NonTerminal("SENTENCE"), "I hate you!")
    expects(rule_set).add(NonTerminal("SENTENCE"), "You smell!")
    
    parse("$SENTENCE -> I hate you!\n$SENTENCE -> You smell!", rule_set, [])
Esempio n. 13
0
def test_whitespace_is_trimmed_from_right(context):
    rule_set = context.mock(RuleSet)
    expects(rule_set).add(NonTerminal("SENTENCE"), "I hate you!")

    parse("$SENTENCE -> I hate you!    \t\t", rule_set, [])
Esempio n. 14
0
def test_final_terminal_is_only_trimmed_on_the_right(context):
    rule_set = context.mock(RuleSet)
    expects(rule_set).add(NonTerminal("VERY"), NonTerminal("VERY"), " very")

    parse("$VERY -> $VERY very", rule_set, [])
Esempio n. 15
0
def test_empty_terminals_are_not_produced_by_rules(context):
    rule_set = context.mock(RuleSet)
    expects(rule_set).add(NonTerminal("SENTENCE"), NonTerminal("INSULT"))
    
    parse("$SENTENCE -> $INSULT", rule_set, [])
Esempio n. 16
0
 def function(mocks):
     mock = mocks.mock()
     expects(mock).save
Esempio n. 17
0
 def function(mocks):
     mock = mocks.mock()
     expects(mock).save.with_args("positional", key="word")
Esempio n. 18
0
def test_mocks_can_raise_exceptions(mocks):
    mock = mocks.mock()
    expects(mock).save.raises(RuntimeError("Oh noes!"))
    assert_raises(RuntimeError, lambda: mock.save("anything"))
Esempio n. 19
0
def test_ignores_blank_lines(context):
    rule_set = context.mock(RuleSet)
    expects(rule_set).add(NonTerminal("SENTENCE"), "I hate you!")
    expects(rule_set).add(NonTerminal("SENTENCE"), "You smell!")

    parse("\n    \t\n\n$SENTENCE -> I hate you!\n     \n\n$SENTENCE -> You smell!\n\n\n", rule_set, [])
Esempio n. 20
0
def test_can_read_rule_for_terminal_to_non_terminal(context):
    rule_set = context.mock(RuleSet)
    expects(rule_set).add(NonTerminal("SENTENCE"), "I hate you!")
    
    parse("$SENTENCE -> I hate you!", rule_set, [])
Esempio n. 21
0
def test_can_read_non_terminals_on_right(context):
    rule_set = context.mock(RuleSet)
    expects(rule_set).add(NonTerminal("SENTENCE"), "You're as ", NonTerminal("ADJ"), " as a ", NonTerminal("ANIMAL"))
    
    parse("$SENTENCE -> You're as $ADJ as a $ANIMAL", rule_set, [])
Esempio n. 22
0
def test_expected_methods_can_be_called_once_with_any_arguments_if_no_arguments_specified(mocks):
    return_value = "Oh my!"
    mock = mocks.mock()
    expects(mock).save.returns(return_value)
    
    assert mock.save("positional", key="word") is return_value
Esempio n. 23
0
def test_can_use_braces_to_indicate_non_terminals(context):
    rule_set = context.mock(RuleSet)
    expects(rule_set).add(NonTerminal("SENTENCE"), "You're ", NonTerminal("RUDE_ADJ"), "er than I thought")
    
    parse("$SENTENCE -> You're ${RUDE_ADJ}er than I thought", rule_set, [])
Esempio n. 24
0
def test_non_terminals_are_alphanumeric_and_underscores_only(context):
    rule_set = context.mock(RuleSet)
    expects(rule_set).add(NonTerminal("SENTENCE"), "You smell of ", NonTerminal("Smell2"), ".")
    
    parse("$SENTENCE -> You smell of $Smell2.", rule_set, [])