I have a bunch of unit tests that work on a class which executes some tasks asynchronously. Currently I set up the class, then execute the function in question. I then go into a blocking wait until the execution is completed, then test the data I need to. Is there a better way that I can do this?
So far my tests look similar to this:
vp.Reset(); //vp is my virtual machine bool wait = true; Dictionary<short, Command> commands = new Dictionary<short, Command>(); commands.Add(0, CommandFactory.CreateInputCommand(0, 0)); commands.Add(1, CommandFactory.CreateHaltCommand()); vp.OnHalted += () => { wait = false; }; vp.InputChannels[0] = () => { return 2; }; vp.CurrentProgram = commands; vp.ExecuteTillHalt();//asynchronous execution of program. There's also a way to make it execute synchronously while (wait) ; Assert.AreEqual(vp.Registers[0], 2);