bahaghari/lib: update percentage

Also reordered the arguments to make it more "functional".
This commit is contained in:
Gabriel Arazas 2024-03-02 17:18:15 +08:00
parent fc2f27eea8
commit 9d122c32c0
No known key found for this signature in database
GPG Key ID: ADE0C41DAB221FCC
2 changed files with 35 additions and 7 deletions

View File

@ -93,14 +93,22 @@ rec {
Type: percentage :: Number -> Number -> Number
Example:
percentage 4 100.0
percentage 100.0 4
=> 4
percentage 5 200.0
percentage 200.0 5
=> 10
percentage 55.4 58
=> 32.132
percentage 0 24654
=> 0
*/
percentage = number: value:
number / (100.0 / value);
percentage = value: number:
if value == 0
then 0
else number / (100.0 / value);
/* Given a number, round up (or down) its number to the nearest integer.

View File

@ -12,7 +12,7 @@ pkgs.lib.runTests {
};
testMathPowZero = {
expr = lib.math.pow 34 0;
expr = lib.math.pow 31 0;
expected = 1;
};
@ -27,15 +27,35 @@ pkgs.lib.runTests {
};
testMathPercentage = {
expr = lib.math.percentage 100 50;
expr = lib.math.percentage 50 100;
expected = 50;
};
testMathPercentage2 = {
expr = lib.math.percentage 453 13;
expr = lib.math.percentage 13 453;
expected = 58.89;
};
testMathPercentageNegative = {
expr = lib.math.percentage (-20) 500;
expected = -100;
};
testMathPercentageNegative2 = {
expr = lib.math.percentage (-64) 843;
expected = -539.52;
};
testMathPercentageZero = {
expr = lib.math.percentage 0 45723;
expected = 0;
};
testMathPercentageZero2 = {
expr = lib.math.percentage 0 (-3423);
expected = 0;
};
testMathGrow = {
expr = lib.math.grow 500 12;
expected = 72;