From 30ec076b486500d538ea47d26a82934305a1d147 Mon Sep 17 00:00:00 2001 From: Pip Liggins Date: Mon, 9 Oct 2023 18:10:03 +0100 Subject: [PATCH] transformations: add Percentage (#88) --- adtl/transformations.py | 13 +++++++++++++ tests/test_transformations.py | 16 ++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/adtl/transformations.py b/adtl/transformations.py index 99db47b..afc1331 100644 --- a/adtl/transformations.py +++ b/adtl/transformations.py @@ -98,6 +98,19 @@ def getFloat( return value +def Percentage(value: float): + "transform a decimal into a percentage" + try: + value = float(value) + except (ValueError, TypeError): + return value + + if value > 1: + return value + + return value * 100 + + def yearsElapsed( birthdate: str, currentdate: str, diff --git a/tests/test_transformations.py b/tests/test_transformations.py index d77283c..384458c 100644 --- a/tests/test_transformations.py +++ b/tests/test_transformations.py @@ -44,6 +44,22 @@ def test_wordSubstituteSet_error(): transform.wordSubstituteSet("value", [20, 30]) +@pytest.mark.parametrize( + "test_value, expected", + [ + (0.1, 10), + (1, 100), + (5, 5), + ("0.5", 50), + ("five", "five"), + ("", ""), + (None, None), + ], +) +def test_Percentage(test_value, expected): + assert transform.Percentage(test_value) == expected + + @pytest.mark.parametrize( "test_date_birth, test_date_current, epoch, expected", [