public void TestBadInput()
        {
            AvgResultsExitOperation op = new AvgResultsExitOperation();
            Object[] objArr = { null };

            try
            {
                op.Apply(new List<object>{objArr});
                Assert.Fail("expected rte");
            }
            catch (IllegalStateException rte)
            {
                // good
            }

            try
            {
                op.Apply(new List<object> {new object()});
                Assert.Fail("expected rte");
            }
            catch (IllegalStateException rte)
            {
                // good
            }
        }
        public void TestMultipleResults()
        {
            AvgResultsExitOperation op = new AvgResultsExitOperation();

            Object[] objArr1 = { null, 3 };
            Object[] objArr2 = { 2.5, 2 };

            IList result = op.Apply(new List<object> { objArr1, objArr2});
            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(2.5, result[0]);

            objArr1[0] = 2.0;

            result = op.Apply(new List<object> {objArr1, objArr2});
            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(2.2, result[0]);
        }
        public void TestEmptyList()
        {
            AvgResultsExitOperation op = new AvgResultsExitOperation();

            IList result = op.Apply(new List<object>());
            Assert.AreEqual(1, result.Count);
            Assert.IsNull(result[0]);
        }
        public void TestSingleResult()
        {
            AvgResultsExitOperation op = new AvgResultsExitOperation();

            Object[] objArr = { null, 3 };

            IList result = op.Apply(new List<object> {objArr});
            Assert.AreEqual(1, result.Count);
            Assert.IsNull(result[0]);

            objArr[0] = 9.0;

            result = op.Apply(new List<object>{objArr});
            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(9.0, result[0]);
        }