def test_equality():
    """
    Only equals other immutable lists of the same value
    """
    assert immutable.List() == immutable.List()
    assert immutable.List([1, 2]) == immutable.List([1, 2])
    assert immutable.List() != []
def test_extend():
    """
    Can extend with a regular iterable
    """
    lst = immutable.List()
    new = lst.extend([1, 2])
    assert lst == immutable.List()
    assert new == immutable.List([1, 2])
 def test_unshift_many(self):
     a = immutable.List((1, 2, 3))
     self.assertEqual(list(a), [1, 2, 3])
     self.assertEqual(len(a), 3)
     b = a.unshift(0, 1, 2)
     self.assertEqual(list(a), [1, 2, 3])
     self.assertEqual(list(b), [0, 1, 2, 1, 2, 3])
def test_list_with_items_creation():
    """
    Can initialize with a list, which will be copied
    """
    original = list([1, 2, 3])
    immut = immutable.List(original)
    assert immut._internal == original
    assert immut._internal is not original
def test_list_append():
    """
    Appending operation does not affect the old list
    """
    lst = immutable.List()
    new_list = lst.append(1)
    assert lst._internal == []
    assert new_list._internal == [1]
    def test_thru(self):
        def sum(collection):
            return reduce(lambda l, r: l + r, collection)

        a = immutable.List((1, 2, 3))
        self.assertEqual(list(a), [1, 2, 3])
        b = a.thru(sum)
        self.assertEqual(list(a), [1, 2, 3])
        self.assertEqual(b, 6)
def test_index_fn():
    im = immutable.List([1, 2, 3])
    assert im.index(2) == 1
def test_remove():
    im = immutable.List([1, 2, 3])
    new = im.remove(2)
    assert im == immutable.List([1, 2, 3])
    assert new == immutable.List([1, 3])
 def test_clear(self):
     a = immutable.List((1, 2, 3))
     self.assertEqual(list(a), [1, 2, 3])
     b = a.clear()
     self.assertEqual(list(a), [1, 2, 3])
     self.assertEqual(list(b), [])
Exemple #10
0
def test_str():
    """
    Will print the list instead of <class List>
    """
    assert str(immutable.List([1, 2, 3])) == '[1, 2, 3]'
Exemple #11
0
def test_index():
    """
    Can index and retrieve an item
    """
    assert immutable.List([1])[0] == 1
    assert immutable.List([1, 2])[-1] == 2
 def test_delete(self):
     a = immutable.List((1, 2, 3))
     self.assertEqual(list(a), [1, 2, 3])
     b = a.delete(2)
     self.assertEqual(list(a), [1, 2, 3])
     self.assertEqual(list(b), [1, 2])
Exemple #13
0
def test_sort_with_reverse():
    lst = immutable.List([1, 2, 3])
    assert lst.sort(reverse=True) == immutable.List([3, 2, 1])
Exemple #14
0
def test_sort_with_key():
    lst = immutable.List([1, 2, 3])
    # Fake reverse sorting for integers!
    assert lst.sort(key=lambda x: -x) == immutable.List([3, 2, 1])
Exemple #15
0
def test_sort():
    lst = immutable.List([3, 2, 1])
    assert lst.sort() == immutable.List([1, 2, 3])
    assert lst == immutable.List([3, 2, 1])
Exemple #16
0
def test_in():
    assert 1 in immutable.List([1, 2, 3])
    assert immutable.List([1]) in immutable.List([
        immutable.List([1])
    ])
Exemple #17
0
def test_pop_zero():
    lst = immutable.List([1, 2, 3])
    val, new_list = lst.pop(0)
    assert val == 1
    assert new_list == immutable.List([2, 3])
    assert lst == immutable.List([1, 2, 3])
Exemple #18
0
def test_iterable():
    """
    Must be a valid iterable
    """
    im = immutable.List([0, 1, 2])
    assert [val for val in im] == [0, 1, 2]
Exemple #19
0
def test_count():
    lst = [1, 2, 3, 4]
    im = immutable.List(lst)
    assert lst.count(1) == im.count(1)
    assert lst.count('a') == im.count('a')
Exemple #20
0
def test_insert_start_and_end():
    im = immutable.List([])
    new = im.insert(0, 'a')
    assert im == immutable.List()
    assert new == immutable.List(['a'])
Exemple #21
0
def test_empty_list_creation():
    """
    Defaults to initializing with an empty list
    """
    assert immutable.List()._internal == []
Exemple #22
0
def test_repr():
    """
    Should implement similar to list repr
    """
    assert immutable.List(['a', 1]).__repr__() == list(['a', 1]).__repr__()
Exemple #23
0
def test_slice():
    """
    Can slice a list
    """
    assert immutable.List([1, 2, 3])[1:] == immutable.List([2, 3])
Exemple #24
0
def test_pop():
    lst = immutable.List([1, 2, 3])
    val, new_list = lst.pop(1)
    assert val == 2
    assert new_list == immutable.List([1, 3])
    assert lst == immutable.List([1, 2, 3])
Exemple #25
0
def test_insert_middle():
    im = immutable.List([1, 2, 3, 4])
    new = im.insert(1, 'b')
    assert im == immutable.List([1, 2, 3, 4])
    assert new == immutable.List([1, 'b', 2, 3, 4])
 def test_insert(self):
     a = immutable.List((1, 2, 3))
     self.assertEqual(list(a), [1, 2, 3])
     b = a.insert(1, 4)
     self.assertEqual(list(a), [1, 2, 3])
     self.assertEqual(list(b), [1, 4, 2, 3])
Exemple #27
0
def test_set_raises_typeerror():
    with pytest.raises(TypeError):
        immutable.List([1, 2])[0] = 3
Exemple #28
0
def test_reverse():
    im = immutable.List([1, 2, 3])
    new = im.reverse()
    assert im == immutable.List([1, 2, 3])
    assert new == immutable.List([3, 2, 1])
Exemple #29
0
def test_pop_default():
    lst = immutable.List([1, 2, 3])
    val, new_list = lst.pop()
    assert val == 3
    assert new_list == immutable.List([1, 2])
    assert lst == immutable.List([1, 2, 3])
Exemple #30
0
def test_reverse_slice():
    im = immutable.List([1, 2, 3])
    sl = im[::-1]
    assert sl == immutable.List([3, 2, 1])