blob: 304713be447353a356b0dc77590ba833c4dad2fe [file] [log] [blame]
from util import *
import re
send_gdb('when')
expect_gdb(re.compile(r'Current event: (\d+)'))
t = eval(last_match().group(1));
if t < 1 or t > 10000:
failed('ERROR in first "when"')
send_gdb('when-ticks')
expect_gdb(re.compile(r'Current tick: (\d+)'))
ticks = eval(last_match().group(1));
if ticks != 0:
failed('ERROR in first "when-ticks"')
send_gdb('when-tid')
expect_gdb(re.compile(r'Current tid: (\d+)'))
tid = eval(last_match().group(1));
send_gdb('b main')
expect_gdb('Breakpoint 1')
send_gdb('c')
send_gdb('when')
expect_gdb(re.compile(r'Current event: (\d+)'))
t2 = eval(last_match().group(1));
if t2 < 1 or t2 > 10000:
failed('ERROR in second "when"')
if t2 <= t:
failed('ERROR ... "when" failed to advance')
send_gdb('when-ticks')
expect_gdb(re.compile(r'Current tick: (\d+)'))
ticks2 = eval(last_match().group(1));
if ticks2 < 0 or ticks2 > 1000000:
failed('ERROR in second "when-ticks"')
if ticks2 <= ticks:
failed('ERROR ... "when-ticks" failed to advance')
send_gdb('when-tid')
expect_gdb(re.compile(r'Current tid: (\d+)'))
tid2 = eval(last_match().group(1));
if tid2 != tid:
failed('ERROR ... tid changed')
# Ensure 'when' terminates a diversion
send_gdb('call strlen("abcd")')
send_gdb('when')
expect_gdb(re.compile(r'Current event: (\d+)'))
t3 = eval(last_match().group(1));
if t3 != t2:
failed('ERROR ... diversion changed event')
send_gdb('call strlen("abcd")')
send_gdb('when-ticks')
expect_gdb(re.compile(r'Current tick: (\d+)'))
ticks3 = eval(last_match().group(1));
if ticks3 != ticks2:
failed('ERROR ... diversion changed ticks')
send_gdb('call strlen("abcd")')
send_gdb('when-tid')
expect_gdb(re.compile(r'Current tid: (\d+)'))
tid3 = eval(last_match().group(1));
if tid3 != tid2:
failed('ERROR ... diversion changed tid')
ok()