@@ -374,6 +374,13 @@ Base.convert(::Type{Int}, a::WeirdInteger) = a
374
374
@test_throws OverflowError OffsetArray {Float64, 1, typeof(ao)} (ao, (- 2 , )) # inner Constructor
375
375
@test_throws OverflowError OffsetArray (ao, (- 2 , )) # convinient constructor accumulate offsets
376
376
377
+ @testset " OffsetRange" begin
378
+ local r = 1 : 100
379
+ local a = OffsetVector (r, 4 )
380
+ @test first (r) in a
381
+ @test ! (last (r) + 1 in a)
382
+ end
383
+
377
384
# disallow OffsetVector(::Array{<:Any, N}, offsets) where N != 1
378
385
@test_throws ArgumentError OffsetVector (zeros (2 ,2 ), (2 , 2 ))
379
386
@test_throws ArgumentError OffsetVector (zeros (2 ,2 ), 2 , 2 )
@@ -1512,6 +1519,44 @@ end
1512
1519
1513
1520
amin, amax = extrema (parent (A))
1514
1521
@test clamp .(A, (amax+ amin)/ 2 , amax) == OffsetArray (clamp .(parent (A), (amax+ amin)/ 2 , amax), axes (A))
1522
+
1523
+ @testset " mapreduce for OffsetRange" begin
1524
+ for r in Any[5 : 100 , IdOffsetRange (1 : 100 , 4 ), IdOffsetRange (4 : 5 ), # AbstractUnitRanges
1525
+ 2 : 4 : 14 , 1.5 : 1.0 : 10.5 , # AbstractRanges
1526
+ ]
1527
+
1528
+ a = OffsetVector (r, 2 );
1529
+ @test mapreduce (identity, + , a) == mapreduce (identity, + , r)
1530
+ @test mapreduce (x -> x^ 2 , (x,y) -> x, a) == mapreduce (x -> x^ 2 , (x,y) -> x, r)
1531
+
1532
+ b = mapreduce (identity, + , a, dims = 1 )
1533
+ br = mapreduce (identity, + , r, dims = 1 )
1534
+ @test no_offset_view (b) == no_offset_view (br)
1535
+ @test axes (b, 1 ) == first (axes (a,1 )): first (axes (a,1 ))
1536
+
1537
+ @test mapreduce (identity, + , a, init = 3 ) == mapreduce (identity, + , r, init = 3 )
1538
+ if VERSION >= v " 1.2"
1539
+ @test mapreduce ((x,y) -> x* y, + , a, a) == mapreduce ((x,y) -> x* y, + , r, r)
1540
+ @test mapreduce ((x,y) -> x* y, + , a, a, init = 10 ) == mapreduce ((x,y) -> x* y, + , r, r, init = 10 )
1541
+ end
1542
+
1543
+ for f in [sum, minimum, maximum]
1544
+ @test f (a) == f (r)
1545
+
1546
+ b = f (a, dims = 1 );
1547
+ br = f (r, dims = 1 )
1548
+ @test no_offset_view (b) == no_offset_view (br)
1549
+ @test axes (b, 1 ) == first (axes (a,1 )): first (axes (a,1 ))
1550
+
1551
+ b = f (a, dims = 2 );
1552
+ br = f (r, dims = 2 )
1553
+ @test no_offset_view (b) == no_offset_view (br)
1554
+ @test axes (b, 1 ) == axes (a,1 )
1555
+ end
1556
+
1557
+ @test extrema (a) == extrema (r)
1558
+ end
1559
+ end
1515
1560
end
1516
1561
1517
1562
# v = OffsetArray([1,1e100,1,-1e100], (-3,))*1000
0 commit comments