|
593 | 593 | @test m2 == m1 |
594 | 594 | end |
595 | 595 |
|
| 596 | +@testset "IO" begin |
| 597 | + # Empty IO |
| 598 | + buf = IOBuffer() |
| 599 | + v = fill(0xaa, 25) |
| 600 | + @test iszero(readbytes!(buf, MemoryView(v))) |
| 601 | + @test all(==(0xaa), v) |
| 602 | + |
| 603 | + # Buffer running EOF |
| 604 | + data = b"Hello, world!" |
| 605 | + buf = IOBuffer(data) |
| 606 | + @test readbytes!(buf, MemoryView(v)) == length(data) |
| 607 | + @test v == vcat(data, fill(0xaa, 25 - length(data))) |
| 608 | + |
| 609 | + # With nb being lower |
| 610 | + data = b"Hello, world!" |
| 611 | + buf = IOBuffer(data) |
| 612 | + v = fill(0xaa, 25) |
| 613 | + readbytes!(buf, MemoryView(v), 7) |
| 614 | + @test v[1:8] == b"Hello, \xaa" |
| 615 | + |
| 616 | + # With nb being higher than the vector length |
| 617 | + data = b"Hello, world!" |
| 618 | + buf = IOBuffer(data) |
| 619 | + v = fill(0xaa, 8) |
| 620 | + readbytes!(buf, MemoryView(v), 10) |
| 621 | + @test v == b"Hello, w" |
| 622 | +end |
| 623 | + |
| 624 | +@testset "Base arrays" begin |
| 625 | + @testset "Memory construction" begin |
| 626 | + v = ImmutableMemoryView([5, 2, 1]) |
| 627 | + @test Memory(v) isa Memory{Int} |
| 628 | + @test Memory(v) == v |
| 629 | + |
| 630 | + @test Memory{Int}(v) isa Memory{Int} |
| 631 | + @test Memory{Int}(v) == v |
| 632 | + @test Memory{Int}(v) !== parent(v) |
| 633 | + |
| 634 | + @test isempty(Memory{Int}(v[1:0])) |
| 635 | + end |
| 636 | + |
| 637 | + @testset "Vector construction" begin |
| 638 | + v = ImmutableMemoryView(["abc", "def", "hi"]) |
| 639 | + @test Vector(v) isa Vector{String} |
| 640 | + @test Vector(v) == v |
| 641 | + |
| 642 | + @test Vector{String}(v) isa Vector{String} |
| 643 | + @test Vector{String}(v) == v |
| 644 | + |
| 645 | + @test isempty(Vector{String}(v[1:0])) |
| 646 | + end |
| 647 | + |
| 648 | + @testset "Vector/Memory copying" begin |
| 649 | + v = [5, 1, 3, 6, 7, 2] |
| 650 | + m = ImmutableMemoryView([6, 2, 1]) |
| 651 | + @test copyto!(v, m) === v |
| 652 | + @test v == [6, 2, 1, 6, 7, 2] |
| 653 | + |
| 654 | + @test copy!(v, m) === v |
| 655 | + @test v == m |
| 656 | + |
| 657 | + @test_throws MethodError copy!(Memory{Int}(undef, 2), m) |
| 658 | + |
| 659 | + v = Memory{Int}(undef, 3) |
| 660 | + @test copy!(v, m) === v |
| 661 | + @test v == m |
| 662 | + end |
| 663 | + |
| 664 | + @testset "Vector append!" begin |
| 665 | + m = ImmutableMemoryView([7, 2, 1]) |
| 666 | + v = Int[] |
| 667 | + @test append!(v, m) === v |
| 668 | + @test v == m |
| 669 | + |
| 670 | + m = m[1:0] |
| 671 | + append!(v, m) |
| 672 | + @test v == [7, 2, 1] |
| 673 | + |
| 674 | + @test append!(v, MemoryView([2, 1])) === v |
| 675 | + @test v == [7, 2, 1, 2, 1] |
| 676 | + end |
| 677 | +end |
| 678 | + |
596 | 679 | @testset "MemoryKind" begin |
597 | 680 | @test MemoryKind(Vector{Int16}) == IsMemory(MutableMemoryView{Int16}) |
598 | 681 | @test MemoryKind(typeof(codeunits(view("abc", 2:3)))) == |
|
650 | 733 | end |
651 | 734 | end |
652 | 735 |
|
653 | | -Aqua.test_all(MemoryViews) |
| 736 | +Aqua.test_all(MemoryViews; ambiguities = false) |
0 commit comments