Skip to content

Commit c47ceeb

Browse files
authored
Merge pull request #18 from ichiro-its/add-support-to-clamp-number
Add support to clamp number
2 parents f0f9589 + 51d4bdf commit c47ceeb

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

include/keisan/number.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ double scale_number(double value, double source, double target);
3030
double map_number(
3131
double value, double source_min, double source_max, double target_min, double target_max);
3232

33+
double clamp_number(double value, double min, double max);
34+
3335
} // namespace keisan
3436

3537
#endif // KEISAN__NUMBER_HPP_

src/number.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
#include <keisan/number.hpp>
2222

23+
#include <algorithm>
2324
#include <cmath>
2425

2526
namespace keisan
@@ -45,4 +46,9 @@ double map_number(
4546
value - source_min, source_max - source_min, target_max - target_min);
4647
}
4748

49+
double clamp_number(double value, double min_value, double max_value)
50+
{
51+
return std::max(std::min(value, max_value), min_value);
52+
}
53+
4854
} // namespace keisan

test/number_test.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,19 @@ TEST(MapNumberTest, OutsideTest) {
9696
keisan::map_number(-9.3, -6.5, 4.75, -6.5 * 5.0, 4.75 * 5.0),
9797
-9.3 * 5.0);
9898
}
99+
100+
TEST(ClampNumberTest, InsideTest) {
101+
ASSERT_DOUBLE_EQ(
102+
keisan::clamp_number(5.0, 1.0, 10.0),
103+
5.0);
104+
}
105+
106+
TEST(ClampNumberTest, OutsideTest) {
107+
ASSERT_DOUBLE_EQ(
108+
keisan::clamp_number(0.0, 1.0, 10.0),
109+
1.0);
110+
111+
ASSERT_DOUBLE_EQ(
112+
keisan::clamp_number(15.0, 1.0, 10.0),
113+
10.0);
114+
}

0 commit comments

Comments
 (0)