public void FrequencyTest3()
        {
            var input = new int[]
            {
                1, 2, 3, 4, 3, 2, 3, 3, 3, 3, 2, 2, 2, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 3,
                3, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2
            };
            var buckets = new string[] { "a", "b", "c", "Z1", "Z2" };
            Func <int, IEnumerable <string>, string> bucketSelector = BucketSelector;
            var expected = new KeyValuePair <string, int>[]
            {
                new KeyValuePair <string, int>("a", 13),
                new KeyValuePair <string, int>("b", 23),
                new KeyValuePair <string, int>("c", 12),
                new KeyValuePair <string, int>("Z1", 1),
                new KeyValuePair <string, int>("Z2", 0)
            };
            var actual = MathTool.Frequency(input, buckets, bucketSelector);

            if (IsDebugEnabled)
            {
                log.Debug(@"expected=[{0}], actual=[{1}]", expected.CollectionToString(), actual.CollectionToString());
            }

            Assert.IsTrue(expected.SequenceEqual(actual));
        }