def test_eq():
    ## good to define __eq__ early, so you can use it in tests
    sa1 = SparseArray([0, 2, 4, 0, 1])
    sa2 = SparseArray([0, 2, 4, 0, 1])
    sa3 = SparseArray([0, 2, 3, 0, 1])

    assert sa1 == sa2
    assert not sa1 == sa3
def test_set_index3():
    sa = SparseArray([0, 1, 0, 2, 0, 3])
    sa[-1] = 0

    assert sa == SparseArray([0, 1, 0, 2, 0, 0])

    with pytest.raises(IndexError):
        sa[-8] = 8
def test_index():
    sa1 = SparseArray([1, 0, 4, 0, 0, 5, 0, 6])
    sa2 = SparseArray([0, 3, 6, 3, 0, 0, 8, 0, 9, 0, 0])
    assert sa1[1] == 0
    assert sa2[10] == 0
    assert sa1[5] == 5
    print(sa2[3], sa2[4], sa2[5])
    assert sa2[3] == 3
def test_append():
    sa = SparseArray([0, 1, 0, 3, 4, 0])
    assert len(sa) == 6

    sa.append(8)
    assert len(sa) == 7
    assert sa == SparseArray([0, 1, 0, 3, 4, 0, 8])
    assert sa != SparseArray([0, 1, 0, 3, 4, 0])
def test_delete():
    sa = SparseArray([1, 2, 3, 4])
    del sa[2]
    assert sa[1] == 2
    assert sa[2] == 4
    sa2 = SparseArray([1, 0, 0, 4, 5, 3])
    del sa2[1]
    print(sa2)
    assert sa2[2] == 4
def test_set_element_outside():
    """
    if an element is set outside the current size, the array is expanded
    to fit - makes sense for sparse, as yo know the missing values are zero
    """
    sa = SparseArray([1, 0, 2])
    sa[5] = 2
    assert len(sa) == 6
    assert sa == SparseArray([1, 0, 2, 0, 0, 2])

    # add one just on the end
    sa[6] = 10
    assert sa[6] == 10
    assert sa == SparseArray([1, 0, 2, 0, 0, 2, 10])
def test_initial_storage():
    sp = SparseArray(test_list)
    assert 0 not in sp.storage.values()
    assert len(sp) == len(test_list)
    
    for i in range(len(test_list)):
        assert test_list[i] == sp[i]
def test_add():
    sa = SparseArray([0, 1, 0])

    answer = sa.size
    answer += 1

    assert answer == 4
def test_slice():
    sp = SparseArray(test_list)
    assert sp[1::2] == test_list[1::2]
    assert sp[::-1] == test_list[::-1]
    assert sp[::] == test_list[::]
    assert sp[0:3] == test_list[0:3]
    assert sp[6:0:-2] == test_list[6:0:-2]
Beispiel #10
0
def experiment_fill(n):
    sparse_array = SparseArray(n)
    seq = [i for i in range(n)]
    start_time = time.time()
    sparse_array.fill(seq)
    end_time = time.time()
    return end_time - start_time
Beispiel #11
0
def test_getvalue():
    sa = SparseArray([7,29,0,0,0,0,13,0,0,72])
    test_a = sa[6]
    test_b = sa[1]
    test_c = sa[5]
    assert test_a == 13
    assert test_b == 29
    assert test_c == 0
Beispiel #12
0
def experiment_setitem(n):
    sparse_array = SparseArray(n)
    for i in range(n):
        sparse_array[i - 1] = i
    start_time = time.time()
    sparse_array[n - 1] = "This one"
    end_time = time.time()
    return end_time - start_time
Beispiel #13
0
def experiment_getitem(n):
    sparse_array = SparseArray(n)
    for i, e in enumerate([i for i in range(n)]):
        sparse_array[i] = e
    start_time = time.time()
    x = sparse_array[n - 1]
    end_time = time.time()
    return end_time - start_time
def test_get_index():
    sa = SparseArray([0, 1, 2, 3, 4, 0])

    assert sa[0] == 0
    assert sa[2] == 2
    assert sa[5] == 0
    assert sa[-1] == 0
    assert sa[-2] == 4
Beispiel #15
0
def test_sparsearray_del():
    """ Tests that you can delete an element from the sparse array """
    sa = SparseArray(my_array)
    del sa[4]
    print(sa)

    assert sa[4] == 0
    assert len(sa) == 8
def test_append():
    sp = SparseArray(test_list)
    sp.append(20)
    assert sp[len(sp) - 1] == 20

    sp.append(0)
    assert sp[len(sp) - 1] == 0

    assert 0 not in sp.storage.values()
def test_set_item():
    sa = SparseArray([1, 0, 4, 0, 0, 5, 0, 6])
    assert sa[1] == 0
    sa[1] = 2
    assert sa[1] == 2
    print("pre addition: " + str(len(sa)))
    sa[10] = 0
    print(len(sa))
    print(sa[10])
    assert sa[8] == 0
    assert sa[10] == 0
def test_construction():
    sa = SparseArray((1, 0, 0, 0, 2, 0, 0, 0, 5))

    assert len(sa) == 9
    assert sa[0] == 1
    assert sa[1] == 0
    assert sa[2] == 0
    assert sa[3] == 0
    assert sa[4] == 2
    assert sa[5] == 0
    assert sa[6] == 0
    assert sa[7] == 0
    assert sa[8] == 5
def test_set_item():
    sp = SparseArray(test_list)
    assert test_list[3] == sp[3]
    
    sp[3] = 9
    assert test_list[3] != sp[3]
    assert sp[3] == 9
    
    sp[2] = 9
    assert test_list[2] != sp[2]
    assert sp[2] == 9

    sp[0] = 0
    assert sp[0] == 0
    assert 0 not in sp.storage.values()
def test_set_item_out_of_range():
    sa = SparseArray((1, 0, 0, 0, 2, 0, 0, 0, 5))

    try:
        sa[9] = 1
    except IndexError:
        pass
    else:
        assert False

    try:
        sa[10] = 0
    except IndexError:
        pass
    else:
        assert False
def test_set_item():
    sa = SparseArray((1, 0, 0, 0, 2, 0, 0, 0, 5))
    sa[1] = 2
    sa[4] = 0
    sa[7] = 10
    sa[8] = 6

    assert len(sa) == 9
    assert sa[0] == 1
    assert sa[1] == 2
    assert sa[2] == 0
    assert sa[3] == 0
    assert sa[4] == 0
    assert sa[5] == 0
    assert sa[6] == 0
    assert sa[7] == 10
    assert sa[8] == 6
def test_exceptions():
    sp = SparseArray(test_list)

    try:
        sp[300]
    except IndexError as ie:
        assert str(ie) == "SparseArray index out of range."

    try:
        sp[900] = 2353
    except IndexError as ie:
        assert str(ie) == "SparseArray index out of range."        
    
    try:
        sp[-80] = 2
    except IndexError as ie:
        assert str(ie) == "SparseArray index out of range."        

    try:
        sp["Cresenta"]
    except TypeError as te:
        assert str(te) == "SparseArray indicies must be integers or slices, not str"
Beispiel #23
0
app = Flask(__name__)
api = Api(app)

one_result = api.model('Occurrence', {
    'word': fields.String,
    'occurrence': fields.String,
})

results_fields = api.model('Result', {
    'result': fields.List(fields.Nested(one_result)),
})

parser = reqparse.RequestParser()
parser.add_argument('query', type=str, help='words separated by comma, ex: x,y,z')

sparse_array = SparseArray(os.environ['INPUT'])


@api.route('/api')
class HelloWorld(Resource):
    @api.marshal_with(results_fields)
    @api.expect(parser)
    def get(self):
        args = parser.parse_args()
        result = sparse_array.compute(args['query'].split(","))
        output = []
        for word, occurrence in result.items():
            output.append({'word': word, 'occurrence': occurrence})
        return {'result': output}

 def test_get(self):
     self.sa = SparseArray( (1,0,0,0,2,0,0,0,5) )
     assert self.sa[4] == 2
 def test_del(self):
     self.sa = SparseArray( (1,0,0,0,2,0,0,0,5) )
     del(self.sa[0])
     assert self.sa[:] == (0,0,0,2,0,9,0,5)        
 def test_append(self):
     self.sa = SparseArray( (1,0,0,0,2,0,0,0,5) )
     self.sa.append(7)
     assert self.sa[:] == (1,0,0,0,2,0,0,0,5,7) 
 def test_set(self):
     self.sa = SparseArray( (1,0,0,0,2,0,0,0,5) )
     self.sa[6] = 9
     assert self.sa[6] == 9
 def test_splice(self):
     self.sa = SparseArray( (1,0,0,0,2,0,0,0,5) )
     assert self.sa[2:5] == (0,0,2)
Beispiel #29
0
def test_sparsearray_len():
    """ Tests that length is returned properly """
    sa = SparseArray(my_array)
    print(sa)
    assert len(sa) == len(my_array)
Beispiel #30
0
def test_sparsearray_set():
    """test that value set properly"""
    sa = SparseArray(my_array)
    sa[5] = 12
    sa[3] = 0  #the zero won't store
    assert sa[5] == 12