From 444f48ccc0791da4bc0e7be723429a88b6f52404 Mon Sep 17 00:00:00 2001 From: zyd Date: Tue, 10 May 2022 21:22:50 +0900 Subject: [PATCH] add methods product / sum --- README.md | 4 ++-- ramda/__init__.py | 2 ++ ramda/product.py | 4 ++++ ramda/sum.py | 4 ++++ test/test_product.py | 17 +++++++++++++++++ test/test_sum.py | 21 +++++++++++++++++++++ 6 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 ramda/product.py create mode 100644 ramda/sum.py create mode 100644 test/test_product.py create mode 100644 test/test_sum.py diff --git a/README.md b/README.md index 58e3084..e8af3c2 100644 --- a/README.md +++ b/README.md @@ -370,7 +370,7 @@ R.pluck('v1', [obj1, obj2]) # [1, 3] ``` - [x] prepend -- [ ] product +- [x] product - [x] project ```python @@ -422,7 +422,7 @@ R.slice(1, None, ['a', 'b', 'c', 'd']) # ['b', 'c', 'd'] - [ ] splitWhenever - [ ] startsWith - [ ] subtract -- [ ] sum +- [x] sum - [ ] symmetricDifference - [ ] symmetricDifferenceWith - [x] T diff --git a/ramda/__init__.py b/ramda/__init__.py index e224a99..f3ff734 100644 --- a/ramda/__init__.py +++ b/ramda/__init__.py @@ -58,6 +58,7 @@ from .pipe import pipe from .pluck import pluck from .prepend import prepend +from .product import product from .project import project from .prop import prop from .props import props @@ -69,6 +70,7 @@ from .reverse import reverse from .slice import slice from .sort import sort +from .sum import sum from .T import T from .tail import tail from .toString import toString diff --git a/ramda/product.py b/ramda/product.py new file mode 100644 index 0000000..e58904c --- /dev/null +++ b/ramda/product.py @@ -0,0 +1,4 @@ +from .multiply import multiply +from .reduce import reduce + +product = reduce(multiply, 1) diff --git a/ramda/sum.py b/ramda/sum.py new file mode 100644 index 0000000..44f2560 --- /dev/null +++ b/ramda/sum.py @@ -0,0 +1,4 @@ +from .add import add +from .reduce import reduce + +sum = reduce(add, 0) diff --git a/test/test_product.py b/test/test_product.py new file mode 100644 index 0000000..83375ee --- /dev/null +++ b/test/test_product.py @@ -0,0 +1,17 @@ + +import unittest + +import ramda as R + +""" +https://github.com/ramda/ramda/blob/master/test/product.js +""" + + +class TestT(unittest.TestCase): + def test_multiplies_together_the_array_of_numbers_supplied(self): + self.assertEqual(24, R.product([1, 2, 3, 4])) + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_sum.py b/test/test_sum.py new file mode 100644 index 0000000..fa3fd52 --- /dev/null +++ b/test/test_sum.py @@ -0,0 +1,21 @@ + +import unittest + +import ramda as R + +""" +https://github.com/ramda/ramda/blob/master/test/sum.js +""" + + +class TestSum(unittest.TestCase): + def test_adds_together_the_array_of_numbers_supplied(self): + self.assertEqual(10, R.sum([1, 2, 3, 4])) + + def test_does_not_save_the_state_of_the_accumulator(self): + self.assertEqual(10, R.sum([1, 2, 3, 4])) + self.assertEqual(1, R.sum([1])) + self.assertEqual(25, R.sum([5, 5, 5, 5, 5])) + +if __name__ == '__main__': + unittest.main()