コード例 #1
0
    def test_shouldWriteImplementation(self):
        # Given
        mockgen = MagicMock()
        mockgen.mocks = [
            MockInfo(mockname = "mock_func1",
                     funcname = "func1",
                     prototype = "void func1(void)",
                     return_text = "void",
                     return_hint = ReturnHint.VOID,
                     args_info = [])
        ]
        mock_c_writer = MockImplementationWriter(self.mockpaths, mockgen)

        # When
        mock_c_writer.write_implementation(self.cBuffer)

        # Then
        self.assertEqual(
            self.cBuffer.getvalue(),
            '#include "mock-mockable.h"\n'
            + boilerplate_includes
            + """pfstest_mock_define(mock_func1, "func1", 0);
void func1(void)
{
    pfstest_value_t *__pfstest_return_value =
        pfstest_mock_invoke(mock_func1,
                            NULL);

    (void)__pfstest_return_value;
}

"""
        )
コード例 #2
0
    def test_shouldWriteBlobParameter(self):
        # Given
        mockgen = MagicMock()
        mockgen.mocks = [
            MockInfo(mockname = "mock_func1",
                     funcname = "func1",
                     prototype = "void func1(int __pfstest_arg_0)",
                     return_text = "void",
                     return_hint = ReturnHint.VOID,
                     args_info = [ArgInfo('__pfstest_arg_0', ArgHint.BLOB)]
            )]
        mock_c_writer = MockImplementationWriter(self.mockpaths, mockgen)

        # When
        mock_c_writer.write_implementation(self.cBuffer)

        # Then
        self.assertEqual(
            self.cBuffer.getvalue(),
            '#include "mock-mockable.h"\n'
            + boilerplate_includes
            + """pfstest_mock_define(mock_func1, "func1", 1);
void func1(int __pfstest_arg_0)
{
    pfstest_value_t *__pfstest_return_value =
        pfstest_mock_invoke(mock_func1,
                            NULL,
                            pfstest_the_memory(&__pfstest_arg_0,
                                               sizeof(__pfstest_arg_0)));

    (void)__pfstest_return_value;
}

"""
        )
コード例 #3
0
    def test_shouldHandlePointerReturnTypes(self):
        # Given
        mockgen = MagicMock()
        mockgen.mocks = [
            MockInfo(mockname = "mock_func1",
                     funcname = "func1",
                     prototype = "char *func1(void)",
                     return_text = "char *",
                     return_hint = ReturnHint.POINTER,
                     args_info = [])
        ]
        mock_c_writer = MockImplementationWriter(self.mockpaths, mockgen)

        # When
        mock_c_writer.write_implementation(self.cBuffer)

        # Then
        self.assertEqual(
            self.cBuffer.getvalue(),
            '#include "mock-mockable.h"\n'
            + boilerplate_includes
            + """pfstest_mock_define(mock_func1, "func1", 0);
char *func1(void)
{
    char * __pfstest_default_return = NULL;

    pfstest_value_t *__pfstest_return_value =
        pfstest_mock_invoke(mock_func1,
                            pfstest_the_pointer(__pfstest_default_return));

    return (char *)pfstest_value_data(__pfstest_return_value);
}

"""
        )
コード例 #4
0
    def test_shouldWriteHeader(self):
        # Given
        mockpaths = MagicMock()
        mockpaths.headerrelpath = "mockable.h"
        mockpaths.guardmacro = "MOCK_MOCKABLE_H"
        mockgen = MagicMock()
        mockgen.mocks = [
            MockInfo(mockname="mock_func1",
                     funcname="",
                     prototype="",
                     return_text="",
                     return_hint="",
                     args_info=[]),
            MockInfo(mockname="mock_func2",
                     funcname="",
                     prototype="",
                     return_text="",
                     return_hint="",
                     args_info=[])
        ]
        mock_h_writer = MockHeaderWriter(mockpaths, mockgen)

        # When
        mock_h_writer.write_header(self.hBuffer)

        # Then
        self.assertEqual(
            self.hBuffer.getvalue(), """#ifndef MOCK_MOCKABLE_H
#define MOCK_MOCKABLE_H

#include "mockable.h"

#include "pfstest-mock.h"

pfstest_mock_declare(mock_func1);
pfstest_mock_declare(mock_func2);

#endif /* !defined(MOCK_MOCKABLE_H) */
""")
コード例 #5
0
    def test_shouldHandleStructReturnTypes(self):
        # Given
        mockgen = MagicMock()
        mockgen.mocks = [
            MockInfo(mockname = "mock_func1",
                     funcname = "func1",
                     prototype = "struct foo func1(void)",
                     return_text = "struct foo",
                     return_hint = ReturnHint.BLOB,
                     args_info = [])
        ]
        mock_c_writer = MockImplementationWriter(self.mockpaths, mockgen)

        # When
        mock_c_writer.write_implementation(self.cBuffer)

        # Then
        self.assertEqual(
            self.cBuffer.getvalue(),
            '#include "mock-mockable.h"\n'
            + boilerplate_includes
            + """pfstest_mock_define(mock_func1, "func1", 0);
struct foo func1(void)
{
    struct foo __pfstest_default_return;
    memset(&__pfstest_default_return, 0, sizeof(__pfstest_default_return));

    pfstest_value_t *__pfstest_return_value =
        pfstest_mock_invoke(mock_func1,
                            pfstest_the_memory(
                                &__pfstest_default_return,
                                sizeof(__pfstest_default_return)));

    return *(struct foo *)pfstest_value_data(__pfstest_return_value);
}

"""
        )