private void TestParsing(string spec, IEnumerable <KeyboardEvent> expectedEvents, bool ignoreTimings = true) { var expected = expectedEvents.ToArray(); KeyAction action = new KeyAction(); action.Initialize(spec); var actual = action.ParseSpec().ToArray(); Assert.AreEqual(expected.Count(), actual.Count(), "Event count mismatch for spec: " + spec); for (int i = 0; i < expected.Length; i++) { var e = expected[i]; var a = actual[i]; Assert.AreEqual(e.KeyCode, a.KeyCode, "Key code mismatch at position " + i + " for spec: " + spec); Assert.AreEqual(e.KeyDown, a.KeyDown, "Key down mismatch at position " + i + " for spec: " + spec); if (!ignoreTimings) { Assert.AreEqual(e.Timeout, a.Timeout, "Timout mismatch at position " + i + " for spec: " + spec); } } }