@@ -451,6 +451,19 @@ def test_set_names_unset(self, idx, nm, prop):
451451 result = set_default_names (data )
452452 assert getattr (result .index , prop ) == nm
453453
454+ @pytest .mark .parametrize ("idx" , [
455+ pd .Index ([], name = 'index' ),
456+ pd .MultiIndex .from_arrays ([['foo' ], ['bar' ]],
457+ names = ('level_0' , 'level_1' )),
458+ pd .MultiIndex .from_arrays ([['foo' ], ['bar' ]],
459+ names = ('foo' , 'level_1' ))
460+ ])
461+ def test_warns_non_roundtrippable_names (self , idx ):
462+ df = pd .DataFrame ([[]], index = idx )
463+ df .index .name = 'index'
464+ with tm .assert_produces_warning ():
465+ set_default_names (df )
466+
454467 def test_timestamp_in_columns (self ):
455468 df = pd .DataFrame ([[1 , 2 ]], columns = [pd .Timestamp ('2016' ),
456469 pd .Timedelta (10 , unit = 's' )])
@@ -481,7 +494,8 @@ def test_mi_falsey_name(self):
481494class TestTableOrientReader (object ):
482495
483496 @pytest .mark .parametrize ("index_nm" , [
484- None , "idx" , pytest .param ("index" , marks = pytest .mark .xfail )])
497+ None , "idx" , pytest .param ("index" , marks = pytest .mark .xfail ),
498+ 'level_0' ])
485499 @pytest .mark .parametrize ("vals" , [
486500 {'ints' : [1 , 2 , 3 , 4 ]},
487501 {'objects' : ['a' , 'b' , 'c' , 'd' ]},
@@ -492,7 +506,7 @@ class TestTableOrientReader(object):
492506 pytest .param ({'floats' : [1. , 2. , 3. , 4. ]}, marks = pytest .mark .xfail ),
493507 {'floats' : [1.1 , 2.2 , 3.3 , 4.4 ]},
494508 {'bools' : [True , False , False , True ]}])
495- def test_read_json_table_orient (self , index_nm , vals ):
509+ def test_read_json_table_orient (self , index_nm , vals , recwarn ):
496510 df = DataFrame (vals , index = pd .Index (range (4 ), name = index_nm ))
497511 out = df .to_json (orient = "table" )
498512 result = pd .read_json (out , orient = "table" )
@@ -504,7 +518,7 @@ def test_read_json_table_orient(self, index_nm, vals):
504518 {'timedeltas' : pd .timedelta_range ('1H' , periods = 4 , freq = 'T' )},
505519 {'timezones' : pd .date_range ('2016-01-01' , freq = 'd' , periods = 4 ,
506520 tz = 'US/Central' )}])
507- def test_read_json_table_orient_raises (self , index_nm , vals ):
521+ def test_read_json_table_orient_raises (self , index_nm , vals , recwarn ):
508522 df = DataFrame (vals , index = pd .Index (range (4 ), name = index_nm ))
509523 out = df .to_json (orient = "table" )
510524 with tm .assert_raises_regex (NotImplementedError , 'can not yet read ' ):
@@ -530,7 +544,9 @@ def test_comprehensive(self):
530544 result = pd .read_json (out , orient = "table" )
531545 tm .assert_frame_equal (df , result )
532546
533- @pytest .mark .parametrize ("index_names" , [[None , None ], ['foo' , 'bar' ]])
547+ @pytest .mark .parametrize ("index_names" , [
548+ [None , None ], ['foo' , 'bar' ], ['foo' , None ], [None , 'foo' ],
549+ ['index' , 'foo' ]])
534550 def test_multiindex (self , index_names ):
535551 # GH 18912
536552 df = pd .DataFrame (
0 commit comments