Пример #1
0
        public void Zip()
        {
            Nullable <int> n  = 2;
            Nullable <int> n0 = null;

            Assert.Throws <ArgumentNullException>(() => NullableExtensions.Zip <int, int, int>(n, n, null));

            Func <int, int, int> selector = (a, b) => a + b;
            Func <int, int, int> fail     = (a, b) => throw new InvalidOperationException("Should not be called");

            Assert.True(n.Zip(n, selector).HasValue);
            Assert.False(n0.Zip(n, selector).HasValue);
            Assert.False(n.Zip(n0, selector).HasValue);
            Assert.False(n0.Zip(n0, selector).HasValue);

            Assert.Equal(4, n.Zip(n, selector).Value);

            Assert.False(n0.Zip(n, fail).HasValue);
            Assert.False(n.Zip(n0, fail).HasValue);
            Assert.False(n0.Zip(n0, fail).HasValue);

            Assert.Equal((2, 2), n.Zip(n).Value);
        }