示例#1
0
def test_assert_series_equal():
    srs1 = rc.Series([1, 2, 3], index=[1, 2, 3])
    assert_series_equal(srs1, srs1)

    srs2 = rc.Series([1, 1, 1], index=[1, 2, 3])
    with pytest.raises(AssertionError):
        assert_series_equal(srs1, srs2)

    srs2 = rc.Series([1, 2, 3], index=[11, 12, 13])
    with pytest.raises(AssertionError):
        assert_series_equal(srs1, srs2)

    srs2 = rc.Series([1, 2, 3], index=[1, 2, 3], sort=True)
    with pytest.raises(AssertionError):
        assert_series_equal(srs1, srs2)

    # View Series
    srs1 = rc.ViewSeries([1, 2, 3], index=[1, 2, 3])
    assert_series_equal(srs1, srs1)

    srs2 = rc.ViewSeries([1, 1, 1], index=[1, 2, 3])
    with pytest.raises(AssertionError):
        assert_series_equal(srs1, srs2)

    srs2 = rc.ViewSeries([1, 2, 3], index=[1, 2, 3], offset=9)
    with pytest.raises(AssertionError):
        assert_series_equal(srs1, srs2)

    srs2 = rc.ViewSeries([1, 2, 3], index=[11, 12, 13])
    with pytest.raises(AssertionError):
        assert_series_equal(srs1, srs2)

    srs2 = rc.ViewSeries([1, 2, 3], index=[1, 2, 3], sort=True)
    with pytest.raises(AssertionError):
        assert_series_equal(srs1, srs2)
示例#2
0
def test_from_series():
    srs = rc.Series(data=[4, 5, 6], index=['a', 'b', 9], data_name='b')
    actual = rc.ViewSeries.from_series(srs)
    expected = rc.ViewSeries([4, 5, 6], data_name='b', index=['a', 'b', 9])
    assert_series_equal(actual, expected)

    srs = rc.Series(data=[1, 2, 3],
                    data_name='a',
                    index=['a', 'b', 'e'],
                    sort=True,
                    index_name='date')
    actual = rc.ViewSeries.from_series(srs, -1)
    expected = rc.ViewSeries([1, 2, 3],
                             data_name='a',
                             index=['a', 'b', 'e'],
                             sort=True,
                             offset=-1,
                             index_name='date')
    assert_series_equal(actual, expected)

    srs = rc.Series(data=[4, 5, 6],
                    data_name='b',
                    index=['a', 'b', 9],
                    use_blist=True)
    actual = rc.ViewSeries.from_series(srs)
    expected = rc.ViewSeries([4, 5, 6], data_name='b', index=['a', 'b', 9])
    assert_series_equal(actual, expected)
示例#3
0
def test_default_empty_init():
    actual = rc.ViewSeries(data=[4, 5, 6], index=[1, 2, 3])
    assert actual.data == [4, 5, 6]
    assert actual.data_name == 'value'
    assert actual.index == [1, 2, 3]
    assert actual.index_name == 'index'
    assert actual.sort is False
    assert actual.offset == 0

    actual = rc.ViewSeries(data=[4, 5, 6],
                           index=[1, 2, 3],
                           data_name='points',
                           offset=1)
    assert actual.data == [4, 5, 6]
    assert actual.data_name == 'points'
    assert actual.index == [1, 2, 3]
    assert actual.index_name == 'index'
    assert actual.sort is False
    assert actual.offset == 1

    actual = rc.ViewSeries(data=[4, 5, 6],
                           index=[1, 2, 3],
                           index_name='dates',
                           data_name='points',
                           sort=True)
    assert actual.data == [4, 5, 6]
    assert actual.data_name == 'points'
    assert actual.index == [1, 2, 3]
    assert actual.index_name == 'dates'
    assert actual.sort is True
示例#4
0
def test_from_dataframe():
    df = rc.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]}, index=['a', 'b', 9])
    actual = rc.ViewSeries.from_dataframe(df, 'b')
    expected = rc.ViewSeries([4, 5, 6], data_name='b', index=['a', 'b', 9])
    assert_series_equal(actual, expected)

    df = rc.DataFrame({
        'a': [1, 2, 3],
        'b': [4, 5, 6]
    },
                      index=['a', 'b', 'e'],
                      sort=True,
                      index_name='date')
    actual = rc.ViewSeries.from_dataframe(df, 'a', -1)
    expected = rc.ViewSeries([1, 2, 3],
                             data_name='a',
                             index=['a', 'b', 'e'],
                             sort=True,
                             offset=-1,
                             index_name='date')
    assert_series_equal(actual, expected)

    df = rc.DataFrame({
        'a': [1, 2, 3],
        'b': [4, 5, 6]
    },
                      index=['a', 'b', 9],
                      use_blist=True)
    actual = rc.ViewSeries.from_dataframe(df, 'b')
    expected = rc.ViewSeries([4, 5, 6], data_name='b', index=['a', 'b', 9])
    assert_series_equal(actual, expected)
示例#5
0
def test_bad_initialization():
    # cannot initialize empty
    with pytest.raises(ValueError):
        rc.ViewSeries()

    # data with no index not allowed
    with pytest.raises(ValueError):
        rc.ViewSeries(data=[1, 2, 3])

    # index with no data not allowed
    with pytest.raises(ValueError):
        rc.ViewSeries(index=[1, 2, 3])

    # wrong length of index
    with pytest.raises(ValueError):
        rc.ViewSeries([1, 2, 3], index=[1])

    with pytest.raises(ValueError):
        rc.ViewSeries(data=[2], index=['b', 'c', 'a'])

    # index is not a list
    with pytest.raises(TypeError):
        rc.ViewSeries({'a': [1]}, index=1)

    # bad data type
    with pytest.raises(TypeError):
        rc.ViewSeries(data=(1, 2, 3), index=[4, 5, 6])

    with pytest.raises(TypeError):
        rc.ViewSeries(data={'data': [1, 2, 3]}, index=[4, 5, 6])

    # index not a list
    with pytest.raises(TypeError):
        rc.ViewSeries(data=[2], index='b')
示例#6
0
def test_get_square_brackets_offset():
    srs = rc.ViewSeries([10, 11, 12],
                        index=['a', 'b', 'c'],
                        sort=False,
                        offset=1)

    # by index
    assert srs['b'] == 11
    assert srs[['a', 'c']] == [10, 12]
    assert srs['b':'c'] == [11, 12]
    assert srs['a':'b'] == [10, 11]

    # by location
    assert srs[1] == 10
    assert srs[2] == 11
    assert srs[3] == 12
    assert srs[-2] == 10
    assert srs[-1] == 11
    assert srs[0] == 12

    assert srs[[0, 2]] == [12, 11]
    assert srs[1:2] == [10, 11]
    assert srs[-3:-2] == [10]
    assert srs[-1:0] == [11, 12]
    assert srs[-2:0] == [10, 11, 12]

    # sort = True
    srs = rc.ViewSeries([10, 11, 12],
                        index=['a', 'b', 'c'],
                        sort=True,
                        offset=1)

    # by index
    assert srs['b'] == 11
    assert srs[['a', 'c']] == [10, 12]
    assert srs['b':'c'] == [11, 12]
    assert srs['a':'b'] == [10, 11]

    # by location
    assert srs[1] == 10
    assert srs[2] == 11
    assert srs[3] == 12
    assert srs[-2] == 10
    assert srs[-1] == 11
    assert srs[0] == 12

    assert srs[[0, 2]] == [12, 11]
    assert srs[1:2] == [10, 11]
    assert srs[-3:-2] == [10]
    assert srs[-1:0] == [11, 12]
    assert srs[-2:0] == [10, 11, 12]
示例#7
0
def test_sorted_init():
    # sort always defaults to False
    df = rc.ViewSeries([5, 4, 6], index=[12, 11, 13])
    assert df.sort is False

    # initializing with sort does not change the data or index. The sort is a flag to speed up gets
    df = rc.ViewSeries([5, 4, 6], index=[12, 11, 13], sort=True)
    assert df.sort is True
    assert df.index == [12, 11, 13]
    assert df.data == [5, 4, 6]

    # cannot change sort status
    df = rc.ViewSeries([5, 4, 6], index=[12, 11, 13], sort=False)
    with pytest.raises(AttributeError):
        df.sort = True
示例#8
0
def test_index_view():
    data = [4, 5, 6]
    index = ['a', 'b', 'c']

    actual = rc.ViewSeries(data, index)
    result = actual.index
    assert result == ['a', 'b', 'c']
    assert isinstance(result, list)

    # test that a view is returned
    assert result is index
    assert result is actual.index

    # modify
    result[1] = 'new'
    assert actual.index == ['a', 'new', 'c']
    assert index == ['a', 'new', 'c']

    # index too long
    with pytest.raises(ValueError):
        actual.index = [1, 3, 4, 5, 6]

    assert actual.index_name == 'index'
    actual.index_name = 'new name'
    assert actual.index_name == 'new name'

    actual = rc.Series([4, 5, 6], index=['a', 'b', 'c'], index_name='letters')
    assert actual.index_name == 'letters'
示例#9
0
def test_get_square_brackets():
    srs = rc.ViewSeries([10, 11, 12], index=['a', 'b', 'c'], sort=False)

    # by index
    assert srs['b'] == 11
    assert srs[['a', 'c']] == [10, 12]
    assert srs['b':'c'] == [11, 12]
    assert srs['a':'b'] == [10, 11]

    # by location
    assert srs[1] == 11
    assert srs[[0, 2]] == [10, 12]
    assert srs[1:2] == [11, 12]
    assert srs[-3:-2] == [10, 11]
示例#10
0
def test_views():
    # assert that df.data is data and df.index are copies and do not alter input data
    data = [4, 5, 6]
    index = ['a', 'b', 'c']
    actual = rc.ViewSeries(data=data, index=index)

    assert actual.data is data
    assert actual.index is index

    # change input data, no change to ViewSeries
    data.append(7)
    index.append('e')

    assert actual.data == [4, 5, 6, 7]
    assert actual.index == ['a', 'b', 'c', 'e']
    assert actual.data is data
    assert actual.index is index
示例#11
0
def test_not_implemented():
    """
    These are all the tests that are implemented in the Series class that are not in ViewSeries
    """
    ser = rc.ViewSeries(data=[4, 5, 6], index=[1, 2, 3])

    with pytest.raises(AttributeError):
        ser.blist

    with pytest.raises(AttributeError):
        ser.sort = True

    with pytest.raises(AttributeError):
        ser.sort_index()

    with pytest.raises(AttributeError):
        ser.set(1, 2)

    with pytest.raises(AttributeError):
        ser.delete(1)
示例#12
0
def test_data_view():
    data = [4, 5, 6]
    index = ['a', 'b', 'c']
    actual = rc.ViewSeries(data, index)

    assert isinstance(actual.data, list)
    assert data is actual.data
    assert actual.data == [4, 5, 6]

    # test data is a copy
    new = actual.data
    new[0] = 99
    assert actual.data == new
    assert data == new

    # changing the data can cause issues
    new.append(88)
    assert new == [99, 5, 6, 88]
    assert actual.data == [99, 5, 6, 88]
    assert actual.index == ['a', 'b', 'c']

    with pytest.raises(AttributeError):
        actual.data = [4, 5]
示例#13
0
def test_value():
    # single int
    srs = rc.ViewSeries([5, 6, 7, 8], index=[2, 4, 6, 8])
    assert srs.value(2) == 7
    assert srs.value(2, int_as_index=True) == 5

    # single int w/offset
    srs = rc.ViewSeries([5, 6, 7, 8], index=[2, 4, 6, 8], offset=1)
    assert srs.value(2) == 6
    assert srs.value(2, int_as_index=True) == 5

    # list of values
    srs = rc.ViewSeries([5, 6, 7, 8], index=[2, 4, 6, 8], offset=0)
    assert srs.value([2, 3]) == [7, 8]
    assert srs.value([2, 4], int_as_index=True) == [5, 6]

    # list of values w/offset. Note offset has no effect on index
    srs = rc.ViewSeries([5, 6, 7, 8], index=[2, 4, 6, 8], offset=1)
    assert srs.value([2, 3]) == [6, 7]
    assert srs.value([2, 4], int_as_index=True) == [5, 6]

    # list of booleans
    srs = rc.ViewSeries([5, 6, 7, 8], index=[2, 4, 6, 8], offset=0)
    assert srs.value([False, True, True, False]) == [6, 7]

    # note that offset has no effect on boolean list
    srs = rc.ViewSeries([5, 6, 7, 8], index=[2, 4, 6, 8], offset=1)
    assert srs.value([False, True, True, False]) == [6, 7]
    assert srs.value([True, False, False, True]) == [5, 8]

    # slice no offset
    srs = rc.ViewSeries([5, 6, 7, 8], index=[2, 4, 6, 8], offset=0)
    assert srs.value(slice(1, 3)) == [6, 7, 8]
    assert srs.value(slice(2, 3)) == [7, 8]
    assert srs.value(slice(-3, -1)) == [6, 7, 8]
    assert srs.value(slice(-3, -2)) == [6, 7]
    assert srs.value(slice(2, 4), int_as_index=True) == [5, 6]

    # slice w/offset
    srs = rc.ViewSeries([5, 6, 7, 8], index=[2, 4, 6, 8], offset=1)
    assert srs.value(slice(1, 3)) == [5, 6, 7]
    assert srs.value(slice(2, 3)) == [6, 7]
    assert srs.value(slice(-3, -1)) == [5, 6, 7]
    assert srs.value(slice(-2, 0)) == [6, 7, 8]
    assert srs.value(slice(-3, -2)) == [5, 6]
    assert srs.value(slice(2, 4), int_as_index=True) == [5, 6]

    # slice out of bounds. Uses standard python logic
    # slice w/offset
    srs = rc.ViewSeries([5, 6, 7, 8], index=[2, 4, 6, 8], offset=1)
    assert srs.value(slice(2, 9)) == [6, 7, 8]
    assert srs.value(slice(-30, -1)) == [5, 6, 7]
    assert srs.value(slice(-2, 0)) == [6, 7, 8]
    assert srs.value(slice(-30, -20)) == []

    # lower bound too low
    with pytest.raises(IndexError):
        srs.value(slice(0, 4))

    # end before beginning
    with pytest.raises(IndexError):
        srs.value(slice(4, 2))
示例#14
0
def test_mixed_type_init():
    rc.ViewSeries(data=(1, 2, 3), index=[4, 5, 6])
示例#15
0
def test_from_series():
    srs = rc.Series(data=[4, 5, 6], data_name='b', index=['a', 'b', 9], dropin=blist)
    actual = rc.ViewSeries.from_series(srs)
    expected = rc.ViewSeries([4, 5, 6], data_name='b', index=['a', 'b', 9])
    assert_series_equal(actual, expected)
示例#16
0
def test_from_dataframe():
    df = rc.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]}, index=['a', 'b', 9], dropin=blist)
    actual = rc.ViewSeries.from_dataframe(df, 'b')
    expected = rc.ViewSeries([4, 5, 6], data_name='b', index=['a', 'b', 9])
    assert_series_equal(actual, expected)