Skip to content

Commit d30428d

Browse files
committed
Fix data type unit tests for versions of Python prior to 3.6
Prior to 3.6 dictionaries are not ordered by default
1 parent 51739fc commit d30428d

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

examples/data_types.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
1313
This example demonstrates tableformatter working with these data types in the simplest possible manner.
1414
"""
15+
from collections import OrderedDict
1516
import numpy as np
1617
import pandas as pd
1718
import tableformatter as tf
@@ -36,18 +37,21 @@
3637
print(tf.generate_table(np_rec_array))
3738

3839
d = {'col1': [1, 5], 'col2': [2, 6], 'col3': [3, 7], 'col4': [4, 8]}
39-
pandas_dataframe = pd.DataFrame(data=d)
40+
od = OrderedDict(sorted(d.items(), key=lambda t: t[0]))
41+
pandas_dataframe = pd.DataFrame(data=od)
4042
print("Data type: Pandas DataFrame")
4143
print(pandas_dataframe)
4244
print(tf.generate_table(pandas_dataframe))
4345

44-
iterable_of_dicts = [ {1: 'a', 2: 'b', 3: 'c', 4: 'd'},
45-
{5: 'e', 6: 'f', 7: 'g', 8: 'h'}]
46+
d1 = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
47+
d2 = {5: 'e', 6: 'f', 7: 'g', 8: 'h'}
48+
iterable_of_dicts = [ OrderedDict(sorted(d1.items(), key=lambda t: t[0])),
49+
OrderedDict(sorted(d2.items(), key=lambda t: t[0]))]
4650
print("Data type: iterable of dicts (dict keys iterated through as column values)")
4751
print(iterable_of_dicts)
4852
print(tf.generate_table(iterable_of_dicts))
4953

50-
dict_of_iterables = d
54+
dict_of_iterables = od
5155
print("Data type: dict of iterables (dict keys iterated through as rows where each key must be a hashable iterable)")
5256
print(dict_of_iterables)
5357
print(tf.generate_table(dict_of_iterables))

tests/test_data_types.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"""
33
Unit testing the variety of data types supported by tableformatter.
44
"""
5+
from collections import OrderedDict
56
import numpy as np
67
import pandas as pd
78
import tableformatter as tf
@@ -27,7 +28,8 @@
2728
[5, 6, 7, 8]]
2829
np_2d_array = np.array(iteralbe_of_iterables)
2930
d = {'col1': [1, 5], 'col2': [2, 6], 'col3': [3, 7], 'col4': [4, 8]}
30-
df = pd.DataFrame(data=d)
31+
od = OrderedDict(sorted(d.items(), key=lambda t: t[0]))
32+
df = pd.DataFrame(data=od)
3133

3234

3335
def test_iterable_of_iterables():
@@ -36,22 +38,23 @@ def test_iterable_of_iterables():
3638

3739

3840
def test_numpy_2d_array():
39-
np_2d_array = np.array(iteralbe_of_iterables)
4041
table = tf.generate_table(np_2d_array)
4142
assert table == EXPECTED_BASIC
4243

4344

4445
def test_iterable_of_dicts():
45-
iterable_of_dicts = [{1: 'a', 2: 'b', 3: 'c', 4: 'd'},
46-
{5: 'e', 6: 'f', 7: 'g', 8: 'h'}]
46+
d1 = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
47+
d2 = {5: 'e', 6: 'f', 7: 'g', 8: 'h'}
48+
iterable_of_dicts = [OrderedDict(sorted(d1.items(), key=lambda t: t[0])),
49+
OrderedDict(sorted(d2.items(), key=lambda t: t[0]))]
4750
table = tf.generate_table(iterable_of_dicts)
4851
assert table == EXPECTED_BASIC
4952

5053

5154
def test_numpy_record_array():
5255
np_rec_array = np.rec.array([(1, 2., 'Hello'),
5356
(2, 3., "World")],
54-
dtype=[('foo', 'i4'), ('bar', 'f4'), ('baz', 'U10')])
57+
dtype=[('foo', 'i4'), ('bar', 'f4'), ('baz', 'U10')])
5558
table = tf.generate_table(np_rec_array)
5659
expected = '''
5760
╔═════╤═════╤═══════╗
@@ -70,7 +73,7 @@ def test_pandas_dataframe():
7073

7174

7275
def test_dict_of_iterables():
73-
table = tf.generate_table(d)
76+
table = tf.generate_table(od)
7477
assert table == EXPECTED_WITH_HEADERS
7578

7679

0 commit comments

Comments
 (0)