Beispiel #1
0
def GeneratorWithSingleException(genname, input, exception):
    execution = EmptyProjectExecution()
    generator = Function(genname, input.keys(), is_generator=True)
    gobject = GeneratorObject(None, generator,
                              stable_serialize_call_arguments(execution, input),
                              generator)
    gobject.add_call(GeneratorObjectInvocation(generator, {},
        exception=execution.serialize(exception)))
    generator.add_call(gobject)
    return generator
Beispiel #2
0
def GeneratorWithYields(genname, input, yields):
    execution = EmptyProjectExecution()
    generator = Function(genname, input.keys(), is_generator=True)
    gobject = GeneratorObject(None, generator,
                              stable_serialize_call_arguments(execution, input),
                              generator)
    for syield in map(execution.serialize, yields):
        gobject.add_call(GeneratorObjectInvocation(generator, {}, syield))
    generator.add_call(gobject)
    return generator
Beispiel #3
0
def create_method_call(method, args, output, call_type, execution, user_object):
    sargs = stable_serialize_call_arguments(execution, args)
    if call_type == 'output':
        call = MethodCall(method, sargs)
        call.set_output(execution.serialize(output))
        return call
    elif call_type == 'exception':
        call = MethodCall(method, sargs)
        call.set_exception(execution.serialize(output))
        return call
    elif call_type == 'generator':
        gobject = GeneratorObject(None, method, sargs, user_object)
        for syield in map(execution.serialize, output):
            gobject.add_call(GeneratorObjectInvocation(method, {}, syield))
        return gobject
Beispiel #4
0
    def test_generates_complete_assertion_for_functions_which_take_defined_generator_objects_as_arguments(self):
        execution = EmptyProjectExecution()
        def ssca(args):
            return stable_serialize_call_arguments(execution, args)
        s = execution.serialize

        mygen = Function('mygen', ['a', 'b'], is_generator=True)
        gobject = GeneratorObject(None, mygen, ssca({'a': 42, 'b': False}), mygen)
        gobject.add_call(GeneratorObjectInvocation(mygen, {}, s(42)))
        mygen.add_call(gobject)
        function = Function('invoke', ['g'])
        function.add_call(FunctionCall(function, {'g': gobject}, output=s(True)))

        result = generate_single_test_module(objects=[function, mygen])

        assert_contains(result, "from module import mygen")
        assert_contains(result, "def test_invoke_returns_true_for_mygen_instance(self):")
        assert_contains(result, "self.assertEqual(True, invoke(mygen(42, False)))")
Beispiel #5
0
 def create_serialized_object(self, obj):
     # Generator object has been passed as a value. We don't have enough
     # information to create a complete GeneratorObject instance here, so
     # we create a stub to be activated later.
     if isinstance(obj, types.GeneratorType):
         return GeneratorObject(obj)
     user_object = self.create_serialized_user_object(obj)
     if user_object:
         return user_object
     elif is_immutable(obj):
         return ImmutableObject(obj)
     elif is_sequence(obj):
         return SequenceObject(obj, self.serialize)
     elif is_mapping(obj):
         return MapObject(obj, self.serialize)
     elif is_builtin_exception(obj):
         return BuiltinException(obj, self.serialize)
     elif is_library_object(obj):
         return LibraryObject(obj, self.serialize)
     else:
         return UnknownObject(obj)
Beispiel #6
0
def inject_generator_object(poe, obj, *args):
    return poe.execution._retrieve_or_capture(
        obj, lambda _: GeneratorObject(obj, *args))
Beispiel #7
0
 def create_generator_object(_):
     gobject = GeneratorObject(generator, definition, sargs,
                               callable)
     save_generator_inside(gobject, generator)
     return gobject