*) The test already does some testing of the call order. I think you could extend it a bit if you store arrays of expected callback functions and context pointers in the structure and compare them when the callbacks are invoked.
It's not final yet. I could leave the existing tests alone and use a seperate context pointer for the call order. I'm also aware that the id member might be useless.