from nose.tools import assert_equal

import numpy as np

from skip_list import IndexableSkipList

#def test_skip_list():
if 1:
    N = 5
    indices = np.arange(N)**2
    values = np.random.randint(1000, size=N).astype(np.float)
    # Test trivial insertion
    slist = IndexableSkipList()
    slist.multiple_insert(indices, values)
    assert_equal(list(slist.iteritems()), zip(indices, values))
    assert_equal(len(slist), N)
    # Test trivial insertion
    for i, v in zip(indices, values):
        slist[i + 1] = v - 1
        assert_equal(slist[i + 1], v - 1)

    l = list(slist.iteritems())
    # Test removal of elements
    slist.pop(l[-2][0])
    l.remove(l[-2])
    assert_equal(list(slist.iteritems()), l)
    slist.pop(l[1][0])
    l.remove(l[1])
    assert_equal(list(slist.iteritems()), l)
    slist.pop(l[1][0])
    l.remove(l[1])