#include "test-harness.h"

.void() think;
.float nextthink;
.float frame;
entity self;
float time;

$frame frame0 frame1 frame2 frame3

void
state0 (void)
[$frame1, state1]
{
	if (self.frame != $frame1 || self.think != state1
		|| self.nextthink != 0.1f) {
		printf ("state0: %g %x %g\n", self.frame, self.think, self.nextthink);
		exit (1);
	}
}

void
state1 (void)
[$frame2, state2, 0.2f]
{
	if (self.frame != $frame2 || self.think != state2
		|| self.nextthink != 0.2f) {
		printf ("state1: %g %x %g\n", self.frame, self.think, self.nextthink);
		exit (1);
	}
}

void
state2 (void)
[$frame0, state0, 0.5f]
{
	if (self.frame != $frame0 || self.think != state0
		|| self.nextthink != 0.5f) {
		printf ("state2: %g %x %g\n", self.frame, self.think, self.nextthink);
		exit (1);
	}
}

int
main ()
{
	self = spawn ();
	state0();
	while (self.frame != $frame0) {
		self.think();
	}
	return 0;
}
