Skip to content

Commit

Permalink
Merge pull request #30 from thombashi/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
thombashi authored Jul 3, 2016
2 parents 5326f3b + cd19723 commit fe96863
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 10 deletions.
3 changes: 3 additions & 0 deletions dataproperty/_property_extractor.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class PropertyExtractor(object):

def __init__(self):
from ._data_property import default_bool_converter
from ._data_property import default_datetime_converter

self.header_list = []
self.data_matrix = []
Expand All @@ -22,6 +23,7 @@ def __init__(self):
self.inf_value = float("inf")
self.nan_value = float("nan")
self.bool_converter = default_bool_converter
self.datetime_converter = default_datetime_converter
self.is_convert = True

def extract_data_property_matrix(self):
Expand Down Expand Up @@ -61,6 +63,7 @@ def __extract_data_property_list(self, data_list):
inf_value=self.inf_value,
nan_value=self.nan_value,
bool_converter=self.bool_converter,
datetime_converter=self.datetime_converter,
is_convert=self.is_convert)
for data in data_list
]
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

setuptools.setup(
name=project_name,
version="0.5.0",
version="0.5.1",
url="https://github.com/thombashi/" + project_name,
bugtrack_url="https://github.com/thombashi/%s/issues" % (project_name),

Expand Down
82 changes: 73 additions & 9 deletions test/test_property_extractor.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,48 @@ def prop_extractor():
return PropertyExtractor()


def bool_converter_test(value):
return str(value).lower()


def datetime_converter_test(value):
return value.strftime("%Y%m%d %H%M%S")


class Test_PropertyExtractor_extract_data_property_matrix:

@pytest.mark.parametrize(["value", "non_value"], [
@pytest.mark.parametrize(
[
"value", "none_value", "inf_value", "nan_value",
"bool_converter", "datetime_converter",
],
[
[
[None, 1],
[1.1, "a"],
[
[None, "1"],
["1.1", "a"],
[nan, inf],
["false", datetime.datetime(2017, 1, 1, 0, 0, 0)]
],
"null",
"Infinity",
"NaN",
bool_converter_test,
datetime_converter_test,
],
"null",
],
])
def test_normal(self, prop_extractor, value, non_value):
])
def test_normal(
self, prop_extractor, value, none_value, inf_value, nan_value,
bool_converter, datetime_converter):
prop_extractor.data_matrix = value
prop_extractor.none_value = non_value
prop_extractor.none_value = none_value
prop_extractor.inf_value = inf_value
prop_extractor.nan_value = nan_value
prop_extractor.bool_converter = bool_converter_test
prop_extractor.datetime_converter = datetime_converter
prop_matrix = prop_extractor.extract_data_property_matrix()

assert len(prop_matrix) == 2
assert len(prop_matrix) == 4

prop = prop_matrix[0][0]
assert prop.data == "null"
Expand All @@ -48,6 +73,7 @@ def test_normal(self, prop_extractor, value, non_value):
assert prop.format_str == "s"

prop = prop_matrix[0][1]
assert prop.data == 1
assert prop.typecode == Typecode.INT
assert prop.align.align_code == Align.RIGHT.align_code
assert prop.align.align_string == Align.RIGHT.align_string
Expand All @@ -56,6 +82,7 @@ def test_normal(self, prop_extractor, value, non_value):
assert prop.format_str == "d"

prop = prop_matrix[1][0]
assert prop.data == 1.1
assert prop.typecode == Typecode.FLOAT
assert prop.align.align_code == Align.RIGHT.align_code
assert prop.align.align_string == Align.RIGHT.align_string
Expand All @@ -64,13 +91,50 @@ def test_normal(self, prop_extractor, value, non_value):
assert prop.format_str == ".1f"

prop = prop_matrix[1][1]
assert prop.data == "a"
assert prop.typecode == Typecode.STRING
assert prop.align.align_code == Align.LEFT.align_code
assert prop.align.align_string == Align.LEFT.align_string
assert prop.str_len == 1
assert is_nan(prop.decimal_places)
assert prop.format_str == "s"

prop = prop_matrix[2][0]
assert prop.data == "NaN"
assert prop.typecode == Typecode.NAN
assert prop.align.align_code == Align.LEFT.align_code
assert prop.align.align_string == Align.LEFT.align_string
assert prop.str_len == 3
assert is_nan(prop.decimal_places)
assert prop.format_str == "s"

prop = prop_matrix[2][1]
assert prop.data == "Infinity"
assert prop.typecode == Typecode.INFINITY
assert prop.align.align_code == Align.LEFT.align_code
assert prop.align.align_string == Align.LEFT.align_string
assert prop.str_len == 8
assert is_nan(prop.decimal_places)
assert prop.format_str == "s"

prop = prop_matrix[3][0]
assert prop.data == "false"
assert prop.typecode == Typecode.BOOL
assert prop.align.align_code == Align.LEFT.align_code
assert prop.align.align_string == Align.LEFT.align_string
assert prop.str_len == 5
assert is_nan(prop.decimal_places)
assert prop.format_str == "s"

prop = prop_matrix[3][1]
assert prop.data == "20170101 000000"
assert prop.typecode == Typecode.DATETIME
assert prop.align.align_code == Align.LEFT.align_code
assert prop.align.align_string == Align.LEFT.align_string
assert prop.str_len == 15
assert is_nan(prop.decimal_places)
assert prop.format_str == "s"

@pytest.mark.parametrize(["value", "expected"], [
[None, TypeError],
])
Expand Down

0 comments on commit fe96863

Please sign in to comment.