|
31 | 31 | g2 = gradedrange([U1(0) => 2, U1(1) => 2, U1(3) => 1])
|
32 | 32 | g3 = gradedrange([U1(-1) => 1, U1(0) => 2, U1(1) => 1])
|
33 | 33 | g4 = gradedrange([U1(-1) => 1, U1(0) => 1, U1(1) => 1])
|
| 34 | + ftaxes1 = FusionTensorAxes((g1, g2), (dual(g3), dual(g4))) |
34 | 35 |
|
35 | 36 | for elt in (Float64, ComplexF64)
|
36 |
| - ft1 = FusionTensor{elt}(undef, (g1, g2), dual.((g3, g4))) |
| 37 | + ft1 = randn(elt, ftaxes1) |
37 | 38 | @test isnothing(check_sanity(ft1))
|
38 | 39 |
|
39 | 40 | # test permutedims interface
|
|
68 | 69 | @test space_isequal(domain_axis(ft1), domain_axis(ft4))
|
69 | 70 | @test ft4 ≈ ft1
|
70 | 71 |
|
| 72 | + # test permutedims! interface |
| 73 | + ft2 = randn(elt, axes(ft1)) |
| 74 | + permutedims!(ft2, ft1, (1, 2), (3, 4)) |
| 75 | + @test ft2 ≈ ft1 |
| 76 | + @test data_matrix(ft2) !== data_matrix(ft1) # check copy |
| 77 | + @test data_matrix(ft2) == data_matrix(ft1) # check copy |
| 78 | + |
| 79 | + ft2 = randn(elt, axes(ft1)) |
| 80 | + permutedims!(ft2, ft1, ((1, 2), (3, 4))) |
| 81 | + @test ft2 ≈ ft1 |
| 82 | + @test data_matrix(ft2) !== data_matrix(ft1) # check copy |
| 83 | + @test data_matrix(ft2) == data_matrix(ft1) # check copy |
| 84 | + |
| 85 | + ft2 = randn(elt, axes(ft1)) |
| 86 | + permutedims!(ft2, ft1, biperm) |
| 87 | + @test ft2 ≈ ft1 |
| 88 | + @test data_matrix(ft2) !== data_matrix(ft1) # check copy |
| 89 | + @test data_matrix(ft2) == data_matrix(ft1) # check copy |
| 90 | + |
| 91 | + # test clean errors |
| 92 | + ft2 = randn(elt, axes(ft1)) |
71 | 93 | @test_throws MethodError permutedims(ft1, (2, 3, 4, 1))
|
72 | 94 | @test_throws ArgumentError permutedims(ft1, (2, 3), (5, 4, 1))
|
| 95 | + @test_throws MethodError permutedims!(ft2, ft1, (2, 3, 4, 1)) |
| 96 | + @test_throws ArgumentError permutedims!(ft2, ft1, (2, 3), (5, 4, 1)) |
| 97 | + @test_throws ArgumentError permutedims!(ft2, ft1, (1, 2, 3), (4,)) |
| 98 | + @test_throws ArgumentError permutedims!(ft2, ft1, (1, 2), (4, 3)) |
73 | 99 | end
|
74 | 100 | end
|
75 | 101 |
|
|
0 commit comments