private static bool DrivePartitionAlgorithm_Sequential(PartitionAlgorithmTest t) { bool passed = true; // // These tests ensure that all of the source elements are represented in the output. // We use different combinations of consumption and data/partition sizes. // // -- IEnumerable data source -- passed &= t.RunPartA1_IEnumerable(1024 * 2, 8); // even # of data elements passed &= t.RunPartA1_IEnumerable(1023 * 3, 8); // odd # of data elements passed &= t.RunPartA1_IEnumerable(1024 * 2, 3); // strange partition count passed &= t.RunPartA1_IEnumerable(0, 8); // empty data size passed &= t.RunPartA1_IEnumerable(1, 8); // small data size passed &= t.RunPartA1_IEnumerable(2048, 1); // one partition // Do a ref and value type: passed &= t.RunPartA2_IEnumerable_DrainOneThenNext <object>(1024, 4, delegate { return(new object()); }); passed &= t.RunPartA2_IEnumerable_DrainOneThenNext <float>(1024, 4, delegate(int i) { return((float)i); }); passed &= t.RunPartA2_IEnumerable_DrainOneThenNext <object>(1024 * 8, 8, delegate { return(new object()); }); passed &= t.RunPartA2_IEnumerable_DrainOneThenNext <float>(1024 * 8, 8, delegate(int i) { return((float)i); }); passed &= t.RunPartA3_IEnumerable_DrainAllEvenly <object>(1024, 4, delegate { return(new object()); }); passed &= t.RunPartA3_IEnumerable_DrainAllEvenly <float>(1024, 4, delegate(int i) { return((float)i); }); passed &= t.RunPartA3_IEnumerable_DrainAllEvenly <object>(1024 * 8, 8, delegate { return(new object()); }); passed &= t.RunPartA3_IEnumerable_DrainAllEvenly <float>(1024 * 8, 8, delegate(int i) { return((float)i); }); passed &= t.RunPartA3_IEnumerable_DrainAllEvenly <long>(1024 * 8, 8, delegate(int i) { return((long)i); }); // @BUGBUG: disabled. Marshal.SizeOf throws for non-integral data types. // passed &= RunPartA3_IEnumerable_DrainAllEvenly<DateTime>(1024 * 8, 8, delegate(int i) { return new DateTime((long)i); }); return(passed); }
internal static bool DrivePartitionAlgorithm_Parallel(PartitionAlgorithmTest t) { bool passed = true; // -- IEnumerable data source -- // Concurrent: passed &= t.RunPartC1_IEnumerable_InParallel <object>(1024 * 8, 8, delegate { return(new object()); }); passed &= t.RunPartC1_IEnumerable_InParallel <float>(1024 * 8, 8, delegate(int i) { return((float)i); }); passed &= t.RunPartC1_IEnumerable_InParallel <object>(1024 * 8, 4, delegate { return(new object()); }); passed &= t.RunPartC1_IEnumerable_InParallel <float>(1024 * 8, 4, delegate(int i) { return((float)i); }); return(passed); }