// This test is intended to verify that thread states are properly maintained
// when transitional actions are performed in the debugger.  Most of the logic
// is in the test script.  This program merely provides places where the test
// can create the intended states.

#include <chrono>
#include <thread>

volatile int g_test = 0;

int addSomething(int a)
{
    return a + g_test;
}

int doNothing()
{
    int temp = 0;   // Set first breakpoint here

    while (!g_test && temp < 5)
    {
        ++temp;
        std::this_thread::sleep_for(std::chrono::seconds(2));
    }

    return temp;    // Set second breakpoint here
}

int main ()
{
    int result = doNothing();

    int i = addSomething(result);

    return 0;
}
