summaryrefslogtreecommitdiffstats
path: root/src/ml/dlib/tools/python/test/test_sparse_vector.py
blob: 124e68d5db8abc0fe465e18abbc2ea3f758375f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
from dlib import pair, make_sparse_vector, sparse_vector, sparse_vectors, sparse_vectorss
try:
    import cPickle as pickle  # Use cPickle on Python 2.7
except ImportError:
    import pickle
from pytest import approx


def test_pair():
    p = pair(4, .9)
    assert p.first == 4
    assert p.second == .9

    p.first = 3
    p.second = .4

    assert p.first == 3
    assert p.second == .4

    assert str(p) == "3: 0.4"
    assert repr(p) == "dlib.pair(3, 0.4)"

    deser = pickle.loads(pickle.dumps(p, 2))
    assert deser.first == p.first
    assert deser.second == p.second


def test_sparse_vector():
    sv = sparse_vector()
    sv.append(pair(3, .1))
    sv.append(pair(3, .2))
    sv.append(pair(2, .3))
    sv.append(pair(1, .4))

    assert len(sv) == 4
    make_sparse_vector(sv)

    assert len(sv) == 3
    assert sv[0].first == 1
    assert sv[0].second == .4
    assert sv[1].first == 2
    assert sv[1].second == .3
    assert sv[2].first == 3
    assert sv[2].second == approx(.3)

    assert str(sv) == "1: 0.4\n2: 0.3\n3: 0.3"
    assert repr(sv) == "< dlib.sparse_vector containing: \n1: 0.4\n2: 0.3\n3: 0.3 >"


def test_sparse_vectors():
    svs = sparse_vectors()
    assert len(svs) == 0

    svs.resize(5)
    for sv in svs:
        assert len(sv) == 0

    svs.clear()
    assert len(svs) == 0

    svs.extend([sparse_vector([pair(1, 2), pair(3, 4)]), sparse_vector([pair(5, 6), pair(7, 8)])])

    assert len(svs) == 2
    assert svs[0][0].first == 1
    assert svs[0][0].second == 2
    assert svs[0][1].first == 3
    assert svs[0][1].second == 4
    assert svs[1][0].first == 5
    assert svs[1][0].second == 6
    assert svs[1][1].first == 7
    assert svs[1][1].second == 8

    deser = pickle.loads(pickle.dumps(svs, 2))
    assert deser == svs


def test_sparse_vectorss():
    svss = sparse_vectorss()
    assert len(svss) == 0

    svss.resize(5)
    for svs in svss:
        assert len(svs) == 0

    svss.clear()
    assert len(svss) == 0

    svss.extend([sparse_vectors([sparse_vector([pair(1, 2), pair(3, 4)]), sparse_vector([pair(5, 6), pair(7, 8)])])])

    assert len(svss) == 1
    assert svss[0][0][0].first == 1
    assert svss[0][0][0].second == 2
    assert svss[0][0][1].first == 3
    assert svss[0][0][1].second == 4
    assert svss[0][1][0].first == 5
    assert svss[0][1][0].second == 6
    assert svss[0][1][1].first == 7
    assert svss[0][1][1].second == 8

    deser = pickle.loads(pickle.dumps(svss, 2))
    assert deser == svss