{"id":20834559,"url":"https://github.com/apriorit/gmock-more-args","last_synced_at":"2025-10-05T20:59:27.398Z","repository":{"id":145107374,"uuid":"102630471","full_name":"apriorit/gmock-more-args","owner":"apriorit","description":"Extends gmock argument count up to 15","archived":false,"fork":false,"pushed_at":"2022-02-18T16:40:48.000Z","size":15,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-05-08T01:45:12.503Z","etag":null,"topics":["cpp","gmock","gtest","header-only","library","mock","mocking","unittest"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apriorit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-09-06T16:09:55.000Z","updated_at":"2023-04-27T19:00:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"bc83a1ed-2902-4cfb-95e4-f0b19b215716","html_url":"https://github.com/apriorit/gmock-more-args","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/apriorit/gmock-more-args","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apriorit%2Fgmock-more-args","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apriorit%2Fgmock-more-args/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apriorit%2Fgmock-more-args/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apriorit%2Fgmock-more-args/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apriorit","download_url":"https://codeload.github.com/apriorit/gmock-more-args/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apriorit%2Fgmock-more-args/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278518899,"owners_count":26000177,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","gmock","gtest","header-only","library","mock","mocking","unittest"],"created_at":"2024-11-18T00:19:38.792Z","updated_at":"2025-10-05T20:59:27.393Z","avatar_url":"https://github.com/apriorit.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gmock-more-args [![Build Status](https://app.travis-ci.com/apriorit/gmock-more-args-sample.svg?branch=master)](https://app.travis-ci.com/apriorit/gmock-more-args-sample)\r\nThis header-only library add [gMock](https://github.com/google/googletest/blob/master/googlemock) functionality for methods with number of arguments from 11 up to 15.\r\n\r\n- [Introduction](#introduction)\r\n- [Compatibility](#compatibility)\r\n- [Usage](#usage)\r\n  - [Step 1: Adding includes](#step-1-adding-includes)\r\n  - [Step 2: Declare mock method with more than 10 arguments](#step-2-declare-mock-method-with-more-than-10-arguments)\r\n- [Samples](#samples)\r\n- [License](#license)\r\n- [Version history](#version-history)\r\n  - [Version 1.1.1 (18 Feb 2022)](#version-111-18-feb-2022)\r\n  - [Version 1.1.0 (18 Apr 2019)](#version-110-18-apr-2019)\r\n  - [Version 1.0.1 (18 Apr 2019)](#version-101-18-apr-2019)\r\n  - [Version 1.0.0 (12 Oct 2017)](#version-100-12-oct-2017)\r\n\r\n# Introduction\r\n\r\n[gMock](https://github.com/google/googletest/blob/master/googlemock) is a C++ framework for writing [mock classes](https://en.wikipedia.org/wiki/Mock_object). Mock methods are defined by `MOCK_METHODn()` marco. However it can handle up to 10 arguments. But in some cases we need more.\r\n\r\nFor example we have such declaration of `WINAPI` function with 11 arguments:\r\n```cpp\r\nNTSTATUS WINAPI NtCreateUserProcess(\r\n    PHANDLE                         phProcess,\r\n    PHANDLE                         threadHandle,\r\n    ACCESS_MASK                     processDesiredAccess,\r\n    ACCESS_MASK                     threadDesiredAccess,\r\n    POBJECT_ATTRIBUTES              processObjectAttributes,\r\n    POBJECT_ATTRIBUTES              threadObjectAttributes,\r\n    ULONG                           processFlags,\r\n    ULONG                           threadFlags,\r\n    PRTL_USER_PROCESS_PARAMETERS    processParameters,\r\n    PVOID                           createInfo,\r\n    PVOID                           attributeList\r\n    );\r\n```\r\nBefore [gmock-more-args](https://github.com/apriorit/gmock-more-args) we had to wrap arguments into structure:\r\n```cpp\r\nstruct CreateUserProcessParams\r\n{\r\n    PHANDLE                         phProcess;\r\n    PHANDLE                         ThreadHandle;\r\n    ACCESS_MASK                     ProcessDesiredAccess;\r\n    ACCESS_MASK                     ThreadDesiredAccess;\r\n    POBJECT_ATTRIBUTES              ProcessObjectAttributes;\r\n    POBJECT_ATTRIBUTES              ThreadObjectAttributes;\r\n    ULONG                           ProcessFlags;\r\n    ULONG                           ThreadFlags;\r\n    PRTL_USER_PROCESS_PARAMETERS    ProcessParameters;\r\n    PVOID                           CreateInfo;\r\n    PVOID                           AttributeLis;\r\n};\r\n```\r\nAnd pass it like a single argument:\r\n```cpp\r\nMOCK_METHOD1(MockNtCreateUserProcess, NTSTATUS(CreateUserProcessParams params));\r\n```\r\nWith [gmock-more-args](https://github.com/apriorit/gmock-more-args) we just use `MOCK_METHOD11`:\r\n```cpp\r\nMOCK_GLOBAL_FUNC11(MockNtCreateUserProcess, NTSTATUS(\r\n    PHANDLE                         phProcess,\r\n    PHANDLE                         ThreadHandle,\r\n    ACCESS_MASK                     ProcessDesiredAccess,\r\n    ACCESS_MASK                     ThreadDesiredAccess,\r\n    POBJECT_ATTRIBUTES              ProcessObjectAttributes,\r\n    POBJECT_ATTRIBUTES              ThreadObjectAttributes,\r\n    ULONG                           ProcessFlags,\r\n    ULONG                           ThreadFlags,\r\n    PRTL_USER_PROCESS_PARAMETERS    ProcessParameters,\r\n    PVOID                           CreateInfo,\r\n    PVOID                           AttributeLis\r\n    ));\r\n```\r\n\r\n# Compatibility\r\nCompatibility of [gmock-more-args](https://github.com/apriorit/gmock-more-args) with different [gMock versions](https://github.com/google/googletest/releases/):\r\n| gmock-more-args | gMock |\r\n|--|--|\r\n| 1.0.x | 1.8.0 | \r\n| - | 1.8.1 | \r\n| 1.1.x | 1.10.0-1.11.0 |\r\n\r\n# Usage\r\n\r\n## Step 1: Adding includes\r\nAt first your project needs to know about [gmock-more-args](https://github.com/apriorit/gmock-more-args).\r\n\r\n1. Add `gmock-more-args/include` to the project include paths.\r\n2. Add `#include \u003cgmock-more-args/gmock-more-args.h\u003e` after [gMock](https://github.com/google/googletest/blob/master/googlemock) include.\r\n\r\n## Step 2: Declare mock method with more than 10 arguments\r\nSyntax is exactly the same as in gMock. For example, to mock method `methodWith11Args` with 11  `int` arguments and `int` result you have to write declaration: \r\n```cpp\r\nMOCK_METHOD11(methodWith11Args, int(int, int, int, int, int, int, int, int, int, int, int));\r\n```\r\n\r\n# Samples\r\nSamples live in the separate [repository](https://github.com/apriorit/gmock-more-args-sample).\r\n\r\n# License\r\n[gmock-more-args](https://github.com/apriorit/gmock-more-args) is licensed under the MIT License. You can freely use it in your commercial or opensource software.\r\n\r\n# Version history\r\n\r\n## Version 1.1.1 (18 Feb 2022)\r\n- Added compatibility with gMock 1.11.0\r\n\r\n## Version 1.1.0 (18 Apr 2019)\r\n- Added compatibility with gMock 1.10.0\r\n\r\n## Version 1.0.1 (18 Apr 2019)\r\n- Added compatibility with gMock 1.8.0\r\n\r\n## Version 1.0.0 (12 Oct 2017)\r\n- Initial public release\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapriorit%2Fgmock-more-args","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapriorit%2Fgmock-more-args","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapriorit%2Fgmock-more-args/lists"}