# Path: raccoon/utils.py
# def assert_series_equal(left, right, data_function=None, data_args=None):
#     """
#     For unit testing equality of two Series.
# 
#     :param left: first Series
#     :param right: second Series
#     :param data_function: if provided will use this function to assert compare the df.data
#     :param data_args: arguments to pass to the data_function
#     :return: nothing
#     """
#     assert type(left) == type(right)
#     if data_function:
#         data_args = {} if not data_args else data_args
#         data_function(left.data, right.data, **data_args)
#     else:
#         assert left.data == right.data
#     assert left.index == right.index
#     assert left.data_name == right.data_name
#     assert left.index_name == right.index_name
#     assert left.sort == right.sort
#     if isinstance(left, rc.ViewSeries):
#         assert left.offset == right.offset
#     if isinstance(left, rc.Series):
#         assert left.dropin == right.dropin


import pytest
import raccoon as rc
from raccoon.utils import assert_series_equal
    from blist import blist
    actual = srs.__repr__()
    assert actual == expected

    # __str__ produces the standard table
    expected = 'index      boo\n-------  -----\nrow1      1\nrow2      2.55\nrow3      3.1'
    actual = srs.__str__()
    assert actual == expected

    # print() method will pass along any argument for the tabulate.tabulate function
    srs.print()


def test_sort_index():
    srs = rc.Series([4, 5, 6], index=[10, 8, 9], sort=False, dropin=blist)
    srs.sort_index()
    assert isinstance(srs.index, blist)
    assert_series_equal(srs, rc.Series([5, 6, 4], index=[8, 9, 10], sort=False, dropin=blist))


def test_select_index():
    # simple index, not sort, blist
    srs = rc.Series([1, 2, 3, 4, 5, 6], index=['a', 'b', 'c', 'd', 'e', 'f'], dropin=blist)
    actual = srs.select_index('c', 'value')
    assert actual == ['c']


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])

# Path: raccoon/utils.py
# def assert_series_equal(left, right, data_function=None, data_args=None):
#     """
#     For unit testing equality of two Series.
# 
#     :param left: first Series
#     :param right: second Series
#     :param data_function: if provided will use this function to assert compare the df.data
#     :param data_args: arguments to pass to the data_function
#     :return: nothing
#     """
#     assert type(left) == type(right)
#     if data_function:
#         data_args = {} if not data_args else data_args
#         data_function(left.data, right.data, **data_args)
#     else:
#         assert left.data == right.data
#     assert left.index == right.index
#     assert left.data_name == right.data_name
#     assert left.index_name == right.index_name
#     assert left.sort == right.sort
#     if isinstance(left, rc.ViewSeries):
#         assert left.offset == right.offset
#     if isinstance(left, rc.Series):
#         assert left.dropin == right.dropin


# Path: tests/test_dropin/test_series_blist.py
import pytest
import raccoon as rc
from raccoon.utils import assert_series_equal
    from blist import blist

    actual = srs.__repr__()
    assert actual == expected

    # __str__ produces the standard table
    expected = 'index      boo\n-------  -----\nrow1      1\nrow2      2.55\nrow3      3.1'
    actual = srs.__str__()
    assert actual == expected

    # print() method will pass along any argument for the tabulate.tabulate function
    srs.print()


def test_sort_index():
    srs = rc.Series([4, 5, 6], index=[10, 8, 9], sort=False, dropin=blist)
    srs.sort_index()
    assert isinstance(srs.index, blist)
    assert_series_equal(srs, rc.Series([5, 6, 4], index=[8, 9, 10], sort=False, dropin=blist))


def test_select_index():
    # simple index, not sort, blist
    srs = rc.Series([1, 2, 3, 4, 5, 6], index=['a', 'b', 'c', 'd', 'e', 'f'], dropin=blist)
    actual = srs.select_index('c', 'value')
    assert actual == ['c']


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)