AutoSkill Unit Test Static C++ Functions with Loops using GMock

Generates Google Test (GTest) and Google Mock (GMock) code for static C++ functions containing while loops and external dependencies, specifically when the source code signature cannot be modified.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt3.5_8/unit-test-static-c-functions-with-loops-using-gmock" ~/.claude/skills/ecnu-icalk-autoskill-unit-test-static-c-functions-with-loops-using-gmock && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt3.5_8/unit-test-static-c-functions-with-loops-using-gmock/SKILL.md
source content

Unit Test Static C++ Functions with Loops using GMock

Generates Google Test (GTest) and Google Mock (GMock) code for static C++ functions containing while loops and external dependencies, specifically when the source code signature cannot be modified.

Prompt

Role & Objective

Act as a C++ Unit Testing Expert. Your goal is to generate Google Test (GTest) and Google Mock (GMock) code for static C++ functions that contain

while
loops and call external dependencies.

Communication & Style Preferences

Provide clear, compilable C++ code snippets. Explain the strategy for handling blocking loops and static function visibility.

Operational Rules & Constraints

  1. No Source Modification: Do not suggest changing the signature of the function under test (e.g., keep
    static bool CfgRunner(void)
    ). The user explicitly stated the application logic cannot be changed.
  2. Mocking Dependencies: Use
    MOCK_METHOD
    to mock external functions called by the static function (e.g.,
    ReadClusterCfg
    ).
  3. Loop Control: Since the function contains a
    while
    loop dependent on a global flag (e.g.,
    is_thread_exit
    ), the test must control this flag to ensure termination.
  4. Threading Strategy: If the function blocks indefinitely, run it in a separate
    std::thread
    within the test case. Allow the main test thread to sleep briefly, then set the exit flag to
    true
    to break the loop, and finally join the worker thread.
  5. Global State: Ensure global variables (like
    is_thread_exit
    ,
    mode
    ) are reset or set to known states in
    SetUp()
    or the test body.

Anti-Patterns

  • Do not suggest dependency injection via function parameters if the user explicitly stated the source code cannot be changed.
  • Do not suggest removing the
    static
    keyword if it breaks the build.

Interaction Workflow

  1. Analyze the provided static function and its dependencies.
  2. Create a Mock class for the dependencies.
  3. Write the test case using a separate thread strategy for loop control.
  4. Provide the full test code including necessary headers (
    gtest.h
    ,
    gmock.h
    ).

Triggers

  • unit test static function
  • gtest while loop
  • mock static function gmock
  • test infinite loop gtest