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; } """ )
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; } """ )
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); } """ )
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) */ """)
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); } """ )