|
2 | 2 | from datetime import datetime as dt
|
3 | 3 | from pandas.util.testing import assert_frame_equal, assert_series_equal
|
4 | 4 | from arctic.date import DateRange
|
| 5 | +from arctic.exceptions import NoDataFoundException |
5 | 6 | import pandas as pd
|
6 | 7 | import numpy as np
|
7 | 8 | import random
|
@@ -41,6 +42,51 @@ def test_overwrite_dataframe(chunkstore_lib):
|
41 | 42 | assert_frame_equal(dg, read_df)
|
42 | 43 |
|
43 | 44 |
|
| 45 | +def test_overwrite_dataframe_monthly(chunkstore_lib): |
| 46 | + df = DataFrame(data={'data': [1, 2, 3, 4, 5, 6]}, |
| 47 | + index=MultiIndex.from_tuples([(dt(2016, 1, 5), 1), |
| 48 | + (dt(2016, 2, 5), 1), |
| 49 | + (dt(2016, 3, 5), 1), |
| 50 | + (dt(2016, 4, 5), 1), |
| 51 | + (dt(2016, 5, 5), 1), |
| 52 | + (dt(2016, 6, 5), 1)], |
| 53 | + names=['date', 'id']) |
| 54 | + ) |
| 55 | + |
| 56 | + dg = DataFrame(data={'data': [1, 2, 3, 4, 5, 6]}, |
| 57 | + index=MultiIndex.from_tuples([(dt(2016, 1, 1), 1), |
| 58 | + (dt(2016, 2, 2), 1), |
| 59 | + (dt(2016, 3, 3), 1), |
| 60 | + (dt(2016, 4, 4), 1), |
| 61 | + (dt(2016, 5, 5), 1), |
| 62 | + (dt(2016, 6, 6), 1)], |
| 63 | + names=['date', 'id']) |
| 64 | + ) |
| 65 | + chunkstore_lib.write('test_df', df, 'M') |
| 66 | + chunkstore_lib.write('test_df', dg, 'M') |
| 67 | + read_df = chunkstore_lib.read('test_df') |
| 68 | + assert_frame_equal(dg, read_df) |
| 69 | + |
| 70 | + |
| 71 | +def test_overwrite_series(chunkstore_lib): |
| 72 | + s = pd.Series([1], index=pd.date_range('2016-01-01', |
| 73 | + '2016-01-01', |
| 74 | + name='date'), |
| 75 | + name='vals') |
| 76 | + |
| 77 | + chunkstore_lib.write('test', s, 'D') |
| 78 | + chunkstore_lib.write('test', s + 1, 'D') |
| 79 | + assert_series_equal(chunkstore_lib.read('test'), s + 1) |
| 80 | + |
| 81 | + |
| 82 | +def test_overwrite_series_monthly(chunkstore_lib): |
| 83 | + s = pd.Series([1, 2], index=pd.Index(data=[dt(2016, 1, 1), dt(2016, 2, 1)], name='date'), name='vals') |
| 84 | + |
| 85 | + chunkstore_lib.write('test', s, 'M') |
| 86 | + chunkstore_lib.write('test', s + 1, 'M') |
| 87 | + assert_series_equal(chunkstore_lib.read('test'), s + 1) |
| 88 | + |
| 89 | + |
44 | 90 | def test_write_read_with_daterange(chunkstore_lib):
|
45 | 91 | df = DataFrame(data={'data': [1, 2, 3]},
|
46 | 92 | index=MultiIndex.from_tuples([(dt(2016, 1, 1), 1),
|
@@ -686,3 +732,41 @@ def test_read_chunk_range(chunkstore_lib):
|
686 | 732 |
|
687 | 733 | df2 = chunkstore_lib.read('test', chunk_range=DateRange(None, None))
|
688 | 734 | assert_frame_equal(df, df2)
|
| 735 | + |
| 736 | + |
| 737 | +def test_read_data_doesnt_exist(chunkstore_lib): |
| 738 | + with pytest.raises(NoDataFoundException) as e: |
| 739 | + chunkstore_lib.read('some_data') |
| 740 | + assert('No data found' in str(e)) |
| 741 | + |
| 742 | + |
| 743 | +def test_invalid_type(chunkstore_lib): |
| 744 | + with pytest.raises(Exception) as e: |
| 745 | + chunkstore_lib.write('some_data', str("Cannot write a string"), 'D') |
| 746 | + assert('Can only chunk Series and DataFrames' in str(e)) |
| 747 | + |
| 748 | + |
| 749 | +def test_append_no_data(chunkstore_lib): |
| 750 | + with pytest.raises(NoDataFoundException) as e: |
| 751 | + chunkstore_lib.append('some_data', "") |
| 752 | + assert('Symbol does not exist.' in str(e)) |
| 753 | + |
| 754 | + |
| 755 | +def test_append_no_new_data(chunkstore_lib): |
| 756 | + df = DataFrame(data={'data': [1, 2, 3, 4, 5, 6, 7, 8, 9]}, |
| 757 | + index=MultiIndex.from_tuples([(dt(2016, 1, 1), 1), |
| 758 | + (dt(2016, 1, 2), 1), |
| 759 | + (dt(2016, 1, 3), 1), |
| 760 | + (dt(2016, 2, 1), 1), |
| 761 | + (dt(2016, 2, 2), 1), |
| 762 | + (dt(2016, 2, 3), 1), |
| 763 | + (dt(2016, 3, 1), 1), |
| 764 | + (dt(2016, 3, 2), 1), |
| 765 | + (dt(2016, 3, 3), 1)], |
| 766 | + names=['date', 'id']) |
| 767 | + ) |
| 768 | + |
| 769 | + chunkstore_lib.write('test', df, 'D') |
| 770 | + chunkstore_lib.append('test', df) |
| 771 | + r = chunkstore_lib.read('test') |
| 772 | + assert_frame_equal(df, r) |
0 commit comments