public void EventSequence()
{
var calls = new List<string>();
var pipeline = new CompilerPipeline();
pipeline.Before += delegate { calls.Add("before"); };
pipeline.BeforeStep += delegate { calls.Add("before step"); };
pipeline.Add(new ActionStep(() => calls.Add("step")));
pipeline.AfterStep += delegate { calls.Add("after step"); };
pipeline.After += delegate { calls.Add("after"); };
pipeline.Run(new CompilerContext());
Assert.AreEqual(
new string[] {"before", "before step", "step", "after step", "after"},
calls.ToArray());
}