private void DoTest(int inputMode, Int32sRef[] terms) { Array.Sort(terms); // Up to two positive ints, shared, generally but not // monotonically increasing { if (VERBOSE) { Console.WriteLine("TEST: now test UpToTwoPositiveIntOutputs"); } UpToTwoPositiveInt64Outputs outputs = UpToTwoPositiveInt64Outputs.GetSingleton(true); IList <InputOutput <object> > pairs = new JCG.List <InputOutput <object> >(terms.Length); long lastOutput = 0; for (int idx = 0; idx < terms.Length; idx++) { // Sometimes go backwards long value = lastOutput + TestUtil.NextInt32(Random, -100, 1000); while (value < 0) { value = lastOutput + TestUtil.NextInt32(Random, -100, 1000); } object output; if (Random.nextInt(5) == 3) { long value2 = lastOutput + TestUtil.NextInt32(Random, -100, 1000); while (value2 < 0) { value2 = lastOutput + TestUtil.NextInt32(Random, -100, 1000); } IList <long> values = new JCG.List <long>(); values.Add(value); values.Add(value2); output = values; } else { output = outputs.Get(value); } pairs.Add(new InputOutput <object>(terms[idx], output)); } new FSTTesterHelper <object>(Random, dir, inputMode, pairs, outputs, false).DoTest(false); // ListOfOutputs(PositiveIntOutputs), generally but not // monotonically increasing { if (VERBOSE) { Console.WriteLine("TEST: now test OneOrMoreOutputs"); } PositiveInt32Outputs _outputs = PositiveInt32Outputs.Singleton; ListOfOutputs <long?> outputs2 = new ListOfOutputs <long?>(_outputs); IList <InputOutput <object> > pairs2 = new JCG.List <InputOutput <object> >(terms.Length); long lastOutput2 = 0; for (int idx = 0; idx < terms.Length; idx++) { int outputCount = TestUtil.NextInt32(Random, 1, 7); IList <long?> values = new JCG.List <long?>(); for (int i = 0; i < outputCount; i++) { // Sometimes go backwards long value = lastOutput2 + TestUtil.NextInt32(Random, -100, 1000); while (value < 0) { value = lastOutput2 + TestUtil.NextInt32(Random, -100, 1000); } values.Add(value); lastOutput2 = value; } object output; if (values.size() == 1) { output = values[0]; } else { output = values; } pairs2.Add(new InputOutput <object>(terms[idx], output)); } new FSTTester <object>(Random, dir, inputMode, pairs2, outputs2, false).DoTest(false); } } }