فهرست منبع

calcex figure: overload round()

Fabian Peter Hammerle 8 سال پیش
والد
کامیت
f290d85384
3فایلهای تغییر یافته به همراه19 افزوده شده و 2 حذف شده
  1. 6 0
      ioex/calcex.py
  2. 2 2
      setup.py
  3. 11 0
      tests/calcex/test_figure.py

+ 6 - 0
ioex/calcex.py

@@ -170,3 +170,9 @@ class Figure(object):
 
     def __div__(self, divisor):
         return self.__truediv__(divisor)
+
+    def __round__(self, *params, **kwargs):
+        return type(self)(
+            value=round(self.value, *params, **kwargs),
+            unit=self.unit,
+        )

+ 2 - 2
setup.py

@@ -5,12 +5,12 @@ import glob
 setup(
     name = 'ioex',
     packages = ['ioex'],
-    version = '0.10.1',
+    version = '0.11.0',
     description = 'extension for python\'s build-in input / output interface',
     author = 'Fabian Peter Hammerle',
     author_email = 'fabian.hammerle@gmail.com',
     url = 'https://github.com/fphammerle/ioex',
-    download_url = 'https://github.com/fphammerle/ioex/tarball/0.10',
+    download_url = 'https://github.com/fphammerle/ioex/tarball/0.11.0',
     keywords = [],
     classifiers = [],
     scripts = glob.glob('scripts/*'),

+ 11 - 0
tests/calcex/test_figure.py

@@ -220,3 +220,14 @@ def test_div(a, b, expected_quotient):
     generated_quotient = a / b
     assert expected_quotient == generated_quotient
     assert isinstance(generated_quotient.value, type(expected_quotient.value))
+
+
+@pytest.mark.xfail(sys.version_info < (3,), reason="can not overload round() before python3")
+@pytest.mark.parametrize(('source_figure', 'params', 'expected_figure'), [
+    [Figure(12.345, 'm'), [], Figure(12, 'm')],
+    [Figure(12.345, 'm'), [1], Figure(12.3, 'm')],
+    [Figure(12.345, 'm'), [2], Figure(12.35, 'm')],
+    [Figure(12.345, 'm'), [-1], Figure(10, 'm')],
+])
+def test_round(source_figure, params, expected_figure):
+    assert expected_figure == round(source_figure, *params)