|
1 | 1 | import numpy as np
|
2 | 2 | import pytest
|
3 | 3 |
|
| 4 | +import pandas as pd |
4 | 5 | from pandas import (
|
5 | 6 | DataFrame,
|
6 | 7 | DatetimeIndex,
|
@@ -118,6 +119,33 @@ def test_series_from_index_different_dtypes(using_copy_on_write):
|
118 | 119 | assert ser._mgr._has_no_reference(0)
|
119 | 120 |
|
120 | 121 |
|
| 122 | +@pytest.mark.parametrize("fastpath", [False, True]) |
| 123 | +@pytest.mark.parametrize("dtype", [None, "int64"]) |
| 124 | +@pytest.mark.parametrize("idx", [None, pd.RangeIndex(start=0, stop=3, step=1)]) |
| 125 | +def test_series_from_block_manager(using_copy_on_write, idx, dtype, fastpath): |
| 126 | + ser = Series([1, 2, 3], dtype="int64") |
| 127 | + ser_orig = ser.copy() |
| 128 | + ser2 = Series(ser._mgr, dtype=dtype, fastpath=fastpath, index=idx) |
| 129 | + assert np.shares_memory(get_array(ser), get_array(ser2)) |
| 130 | + if using_copy_on_write: |
| 131 | + assert not ser2._mgr._has_no_reference(0) |
| 132 | + |
| 133 | + ser2.iloc[0] = 100 |
| 134 | + if using_copy_on_write: |
| 135 | + tm.assert_series_equal(ser, ser_orig) |
| 136 | + else: |
| 137 | + expected = Series([100, 2, 3]) |
| 138 | + tm.assert_series_equal(ser, expected) |
| 139 | + |
| 140 | + |
| 141 | +def test_series_from_block_manager_different_dtype(using_copy_on_write): |
| 142 | + ser = Series([1, 2, 3], dtype="int64") |
| 143 | + ser2 = Series(ser._mgr, dtype="int32") |
| 144 | + assert not np.shares_memory(get_array(ser), get_array(ser2)) |
| 145 | + if using_copy_on_write: |
| 146 | + assert ser2._mgr._has_no_reference(0) |
| 147 | + |
| 148 | + |
121 | 149 | @pytest.mark.parametrize("func", [lambda x: x, lambda x: x._mgr])
|
122 | 150 | @pytest.mark.parametrize("columns", [None, ["a"]])
|
123 | 151 | def test_dataframe_constructor_mgr_or_df(using_copy_on_write, columns, func):
|
|
0 commit comments