From 2866365a32b69f7bb5ccc1de2438f7769d5f903f Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Sun, 30 Jan 2011 23:16:06 +0100 Subject: [PATCH 1/3] Cosmetic change to zip unittests. This only untangles two sections, no functional changes. --- std/range.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/std/range.d b/std/range.d index 4312c44bda3..7ad45b648ef 100644 --- a/std/range.d +++ b/std/range.d @@ -3218,15 +3218,15 @@ unittest assert(a == [1, 2, 3]); assert(b == [2., 1, 3]); + // Test infiniteness propagation. + static assert(isInfinite!(typeof(zip(repeat(1), repeat(1))))); + // Test stopping policies with both value and reference. auto a1 = [1, 2]; auto a2 = [1, 2, 3]; auto stuff = tuple(tuple(a1, a2), tuple(filter!"a"(a1), filter!"a"(a2))); - // Test infiniteness propagation. - static assert(isInfinite!(typeof(zip(repeat(1), repeat(1))))); - alias Zip!(immutable int[], immutable float[]) FOO; foreach(t; stuff.expand) { From 9e26dcfc81562872781088af8a91c0563930ef14 Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Sun, 30 Jan 2011 23:34:07 +0100 Subject: [PATCH 2/3] Fixed Zip.empty for StoppingPolicy.longest. Previously, it would never return true. Fixes 5506. --- std/range.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/range.d b/std/range.d index 7ad45b648ef..aa8757f3897 100644 --- a/std/range.d +++ b/std/range.d @@ -2873,7 +2873,7 @@ stopping policy. { if (!ranges[i].empty) return false; } - break; + return true; case StoppingPolicy.requireSameLength: foreach (i, Unused; R[1 .. $]) { From c056bf2687a39160da02ec73ee98c6ff4c3d03cc Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Sun, 30 Jan 2011 23:36:12 +0100 Subject: [PATCH 3/3] Augmented the unittests for Zip. I assumed that zLongest was orginially intended to test the StoppingPolicy.longest case, even though it previously had requireSameLength. --- std/range.d | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/std/range.d b/std/range.d index aa8757f3897..7b45aaaa050 100644 --- a/std/range.d +++ b/std/range.d @@ -3242,14 +3242,18 @@ unittest assert(0); } catch { /* It's supposed to throw.*/ } - auto zLongest = zip(StoppingPolicy.requireSameLength, arr1, arr2); + auto zLongest = zip(StoppingPolicy.longest, arr1, arr2); assert(!zLongest.ranges[0].empty); assert(!zLongest.ranges[1].empty); zLongest.popFront(); zLongest.popFront(); + assert(!zLongest.empty); assert(zLongest.ranges[0].empty); assert(!zLongest.ranges[1].empty); + + zLongest.popFront(); + assert(zLongest.empty); } // Doesn't work yet. Issues w/ emplace.