|
from dlib import vector, vectors, vectorss, dot |
|
try: |
|
import cPickle as pickle |
|
except ImportError: |
|
import pickle |
|
from pytest import raises |
|
|
|
|
|
def test_vector_empty_init(): |
|
v = vector() |
|
assert len(v) == 0 |
|
assert v.shape == (0, 1) |
|
assert str(v) == "" |
|
assert repr(v) == "dlib.vector([])" |
|
|
|
|
|
def test_vector_init_with_number(): |
|
v = vector(3) |
|
assert len(v) == 3 |
|
assert v.shape == (3, 1) |
|
assert str(v) == "0\n0\n0" |
|
assert repr(v) == "dlib.vector([0, 0, 0])" |
|
|
|
|
|
def test_vector_set_size(): |
|
v = vector(3) |
|
|
|
v.set_size(0) |
|
assert len(v) == 0 |
|
assert v.shape == (0, 1) |
|
|
|
v.resize(10) |
|
assert len(v) == 10 |
|
assert v.shape == (10, 1) |
|
for i in range(10): |
|
assert v[i] == 0 |
|
|
|
|
|
def test_vector_init_with_list(): |
|
v = vector([1, 2, 3]) |
|
assert len(v) == 3 |
|
assert v.shape == (3, 1) |
|
assert str(v) == "1\n2\n3" |
|
assert repr(v) == "dlib.vector([1, 2, 3])" |
|
|
|
|
|
def test_vector_getitem(): |
|
v = vector([1, 2, 3]) |
|
assert v[0] == 1 |
|
assert v[-1] == 3 |
|
assert v[1] == v[-2] |
|
|
|
|
|
def test_vector_slice(): |
|
v = vector([1, 2, 3, 4, 5]) |
|
v_slice = v[1:4] |
|
assert len(v_slice) == 3 |
|
for idx, val in enumerate([2, 3, 4]): |
|
assert v_slice[idx] == val |
|
|
|
v_slice = v[-3:-1] |
|
assert len(v_slice) == 2 |
|
for idx, val in enumerate([3, 4]): |
|
assert v_slice[idx] == val |
|
|
|
v_slice = v[1:-2] |
|
assert len(v_slice) == 2 |
|
for idx, val in enumerate([2, 3]): |
|
assert v_slice[idx] == val |
|
|
|
|
|
def test_vector_invalid_getitem(): |
|
v = vector([1, 2, 3]) |
|
with raises(IndexError): |
|
v[-4] |
|
with raises(IndexError): |
|
v[3] |
|
|
|
|
|
def test_vector_init_with_negative_number(): |
|
with raises(Exception): |
|
vector(-3) |
|
|
|
|
|
def test_dot(): |
|
v1 = vector([1, 0]) |
|
v2 = vector([0, 1]) |
|
v3 = vector([-1, 0]) |
|
assert dot(v1, v1) == 1 |
|
assert dot(v1, v2) == 0 |
|
assert dot(v1, v3) == -1 |
|
|
|
|
|
def test_vector_serialization(): |
|
v = vector([1, 2, 3]) |
|
ser = pickle.dumps(v, 2) |
|
deser = pickle.loads(ser) |
|
assert str(v) == str(deser) |
|
|
|
|
|
def generate_test_vectors(): |
|
vs = vectors() |
|
vs.append(vector([0, 1, 2])) |
|
vs.append(vector([3, 4, 5])) |
|
vs.append(vector([6, 7, 8])) |
|
assert len(vs) == 3 |
|
return vs |
|
|
|
|
|
def generate_test_vectorss(): |
|
vss = vectorss() |
|
vss.append(generate_test_vectors()) |
|
vss.append(generate_test_vectors()) |
|
vss.append(generate_test_vectors()) |
|
assert len(vss) == 3 |
|
return vss |
|
|
|
|
|
def test_vectors_serialization(): |
|
vs = generate_test_vectors() |
|
ser = pickle.dumps(vs, 2) |
|
deser = pickle.loads(ser) |
|
assert vs == deser |
|
|
|
|
|
def test_vectors_clear(): |
|
vs = generate_test_vectors() |
|
vs.clear() |
|
assert len(vs) == 0 |
|
|
|
|
|
def test_vectors_resize(): |
|
vs = vectors() |
|
vs.resize(100) |
|
assert len(vs) == 100 |
|
for i in range(100): |
|
assert len(vs[i]) == 0 |
|
|
|
|
|
def test_vectors_extend(): |
|
vs = vectors() |
|
vs.extend([vector([1, 2, 3]), vector([4, 5, 6])]) |
|
assert len(vs) == 2 |
|
|
|
|
|
def test_vectorss_serialization(): |
|
vss = generate_test_vectorss() |
|
ser = pickle.dumps(vss, 2) |
|
deser = pickle.loads(ser) |
|
assert vss == deser |
|
|
|
|
|
def test_vectorss_clear(): |
|
vss = generate_test_vectorss() |
|
vss.clear() |
|
assert len(vss) == 0 |
|
|
|
|
|
def test_vectorss_resize(): |
|
vss = vectorss() |
|
vss.resize(100) |
|
assert len(vss) == 100 |
|
for i in range(100): |
|
assert len(vss[i]) == 0 |
|
|
|
|
|
def test_vectorss_extend(): |
|
vss = vectorss() |
|
vss.extend([generate_test_vectors(), generate_test_vectors()]) |
|
assert len(vss) == 2 |
|
|