/// <exception cref="System.Exception"/>
        public virtual void TestTotalOrderBinarySearch()
        {
            TotalOrderPartitioner <Text, NullWritable> partitioner = new TotalOrderPartitioner
                                                                     <Text, NullWritable>();
            Configuration conf = new Configuration();
            Path          p    = TestTotalOrderPartitioner.WritePartitionFile <Text>("totalorderbinarysearch"
                                                                                     , conf, splitStrings);

            conf.SetBoolean(TotalOrderPartitioner.NaturalOrder, false);
            conf.SetClass(MRJobConfig.MapOutputKeyClass, typeof(Text), typeof(object));
            try
            {
                partitioner.SetConf(conf);
                NullWritable nw = NullWritable.Get();
                foreach (TestTotalOrderPartitioner.Check <Text> chk in testStrings)
                {
                    NUnit.Framework.Assert.AreEqual(chk.data.ToString(), chk.part, partitioner.GetPartition
                                                        (chk.data, nw, splitStrings.Length + 1));
                }
            }
            finally
            {
                p.GetFileSystem(conf).Delete(p, true);
            }
        }
        /// <exception cref="System.Exception"/>
        public virtual void TestTotalOrderCustomComparator()
        {
            TotalOrderPartitioner <Text, NullWritable> partitioner = new TotalOrderPartitioner
                                                                     <Text, NullWritable>();
            Configuration conf = new Configuration();

            Text[] revSplitStrings = Arrays.CopyOf(splitStrings, splitStrings.Length);
            Arrays.Sort(revSplitStrings, new TestTotalOrderPartitioner.ReverseStringComparator
                            ());
            Path p = TestTotalOrderPartitioner.WritePartitionFile <Text>("totalordercustomcomparator"
                                                                         , conf, revSplitStrings);

            conf.SetBoolean(TotalOrderPartitioner.NaturalOrder, false);
            conf.SetClass(MRJobConfig.MapOutputKeyClass, typeof(Text), typeof(object));
            conf.SetClass(MRJobConfig.KeyComparator, typeof(TestTotalOrderPartitioner.ReverseStringComparator
                                                            ), typeof(RawComparator));
            AList <TestTotalOrderPartitioner.Check <Text> > revCheck = new AList <TestTotalOrderPartitioner.Check
                                                                                  <Text> >();

            revCheck.AddItem(new TestTotalOrderPartitioner.Check <Text>(new Text("aaaaa"), 9));
            revCheck.AddItem(new TestTotalOrderPartitioner.Check <Text>(new Text("aaabb"), 9));
            revCheck.AddItem(new TestTotalOrderPartitioner.Check <Text>(new Text("aabbb"), 9));
            revCheck.AddItem(new TestTotalOrderPartitioner.Check <Text>(new Text("aaaaa"), 9));
            revCheck.AddItem(new TestTotalOrderPartitioner.Check <Text>(new Text("babbb"), 8));
            revCheck.AddItem(new TestTotalOrderPartitioner.Check <Text>(new Text("baabb"), 8));
            revCheck.AddItem(new TestTotalOrderPartitioner.Check <Text>(new Text("yai"), 1));
            revCheck.AddItem(new TestTotalOrderPartitioner.Check <Text>(new Text("yak"), 1));
            revCheck.AddItem(new TestTotalOrderPartitioner.Check <Text>(new Text("z"), 0));
            revCheck.AddItem(new TestTotalOrderPartitioner.Check <Text>(new Text("ddngo"), 4));
            revCheck.AddItem(new TestTotalOrderPartitioner.Check <Text>(new Text("hi"), 3));
            try
            {
                partitioner.SetConf(conf);
                NullWritable nw = NullWritable.Get();
                foreach (TestTotalOrderPartitioner.Check <Text> chk in revCheck)
                {
                    NUnit.Framework.Assert.AreEqual(chk.data.ToString(), chk.part, partitioner.GetPartition
                                                        (chk.data, nw, splitStrings.Length + 1));
                }
            }
            finally
            {
                p.GetFileSystem(conf).Delete(p, true);
            }
        }