test_transpose.py 1.11 KB
Newer Older
rusty1s's avatar
rusty1s committed
1
2
3
from itertools import product

import pytest
rusty1s's avatar
rusty1s committed
4
import torch
5
from torch_sparse import transpose
rusty1s's avatar
rusty1s committed
6
7

from .utils import dtypes, devices, tensor
rusty1s's avatar
rusty1s committed
8
9


10
11
12
13
@pytest.mark.parametrize('dtype,device', product(dtypes, devices))
def test_transpose_matrix(dtype, device):
    row = torch.tensor([1, 0, 1, 2], device=device)
    col = torch.tensor([0, 1, 1, 0], device=device)
rusty1s's avatar
rusty1s committed
14
    index = torch.stack([row, col], dim=0)
15
    value = tensor([1, 2, 3, 4], dtype, device)
rusty1s's avatar
rusty1s committed
16
17
18

    index, value = transpose(index, value, m=3, n=2)
    assert index.tolist() == [[0, 0, 1, 1], [1, 2, 0, 1]]
19
    assert value.tolist() == [1, 4, 2, 3]
rusty1s's avatar
rusty1s committed
20
21
22


@pytest.mark.parametrize('dtype,device', product(dtypes, devices))
23
24
25
def test_transpose(dtype, device):
    row = torch.tensor([1, 0, 1, 0, 2, 1], device=device)
    col = torch.tensor([0, 1, 1, 1, 0, 0], device=device)
rusty1s's avatar
rusty1s committed
26
    index = torch.stack([row, col], dim=0)
27
28
    value = tensor([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7]], dtype,
                   device)
rusty1s's avatar
rusty1s committed
29

30
    index, value = transpose(index, value, m=3, n=2)
rusty1s's avatar
rusty1s committed
31
    assert index.tolist() == [[0, 0, 1, 1], [1, 2, 0, 1]]
32
    assert value.tolist() == [[7, 9], [5, 6], [6, 8], [3, 4]]