Merge pull request #3065 from burner/algorithm_comparision_dscanner_suggestions

algorithm_comparison maintenance
This commit is contained in:
Andrei Alexandrescu 2015-03-22 22:53:07 -07:00
commit 27fc16df0d

View file

@ -541,7 +541,7 @@ body
static assert(is(typeof(clamp(-1L, -2L, 2UL)) == long)); static assert(is(typeof(clamp(-1L, -2L, 2UL)) == long));
// user-defined types // user-defined types
import std.datetime; import std.datetime : Date;
assert(clamp(Date(1982, 1, 4), Date(1012, 12, 21), Date(2012, 12, 21)) == Date(1982, 1, 4)); assert(clamp(Date(1982, 1, 4), Date(1012, 12, 21), Date(2012, 12, 21)) == Date(1982, 1, 4));
assert(clamp(Date(1982, 1, 4), Date.min, Date.max) == Date(1982, 1, 4)); assert(clamp(Date(1982, 1, 4), Date.min, Date.max) == Date(1982, 1, 4));
// UFCS style // UFCS style
@ -588,7 +588,7 @@ if (isInputRange!R1 && isInputRange!R2 && !(isSomeString!R1 && isSomeString!R2))
} }
} }
// Specialization for strings (for speed purposes) /// ditto
int cmp(alias pred = "a < b", R1, R2)(R1 r1, R2 r2) if (isSomeString!R1 && isSomeString!R2) int cmp(alias pred = "a < b", R1, R2)(R1 r1, R2 r2) if (isSomeString!R1 && isSomeString!R2)
{ {
import core.stdc.string : memcmp; import core.stdc.string : memcmp;
@ -663,11 +663,8 @@ int cmp(alias pred = "a < b", R1, R2)(R1 r1, R2 r2) if (isSomeString!R1 && isSom
{ {
int result; int result;
debug(string) printf("string.cmp.unittest\n");
result = cmp("abc", "abc"); result = cmp("abc", "abc");
assert(result == 0); assert(result == 0);
// result = cmp(null, null);
// assert(result == 0);
result = cmp("", ""); result = cmp("", "");
assert(result == 0); assert(result == 0);
result = cmp("abc", "abcd"); result = cmp("abc", "abcd");
@ -797,7 +794,8 @@ range of range (of range...) comparisons.
{ {
import std.algorithm.iteration : map; import std.algorithm.iteration : map;
import std.math : approxEqual; import std.math : approxEqual;
import std.internal.test.dummyrange; import std.internal.test.dummyrange : ReferenceForwardRange,
ReferenceInputRange, ReferenceInfiniteForwardRange;
debug(std_algorithm) scope(success) debug(std_algorithm) scope(success)
writeln("unittest @", __FILE__, ":", __LINE__, " done."); writeln("unittest @", __FILE__, ":", __LINE__, " done.");
@ -906,7 +904,7 @@ enum EditOp : char
remove = 'r' remove = 'r'
} }
struct Levenshtein(Range, alias equals, CostType = size_t) private struct Levenshtein(Range, alias equals, CostType = size_t)
{ {
void deletionIncrement(CostType n) void deletionIncrement(CostType n)
{ {
@ -1300,7 +1298,7 @@ MaxType!T max(T...)(T args)
assert(max(a, f) == 5); assert(max(a, f) == 5);
//Test user-defined types //Test user-defined types
import std.datetime; import std.datetime : Date;
assert(max(Date(2012, 12, 21), Date(1982, 1, 4)) == Date(2012, 12, 21)); assert(max(Date(2012, 12, 21), Date(1982, 1, 4)) == Date(2012, 12, 21));
assert(max(Date(1982, 1, 4), Date(2012, 12, 21)) == Date(2012, 12, 21)); assert(max(Date(1982, 1, 4), Date(2012, 12, 21)) == Date(2012, 12, 21));
assert(max(Date(1982, 1, 4), Date.min) == Date(1982, 1, 4)); assert(max(Date(1982, 1, 4), Date.min) == Date(1982, 1, 4));