#include "unittest/TestUndoStateDelta.h"

#define stemobject_implementation TestUndoStateDelta

stemobject_vtable_begin();
stemobject_vtable_entry(dispose);
stemobject_vtable_entry(revert);
stemobject_vtable_entry(apply);
stemobject_vtable_end();

TestUndoStateDelta * TestUndoStateDelta_create(void) {
	stemobject_create_implementation(init)
}

bool TestUndoStateDelta_init(TestUndoStateDelta * self) {
	call_super(init, self);
	self->revertCallCount = 0;
	self->applyCallCount = 0;
	self->disposeCallCount = 0;
	self->lastTarget = NULL;
	return true;
}

void TestUndoStateDelta_dispose(TestUndoStateDelta * self) {
	self->disposeCallCount++;
}

void TestUndoStateDelta_revert(TestUndoStateDelta * self, void * target) {
	self->revertCallCount++;
	self->lastTarget = target;
}

void TestUndoStateDelta_apply(TestUndoStateDelta * self, void * target) {
	self->applyCallCount++;
	self->lastTarget = target;
}
