blob: 3f467cf8b14b546e60d7267ed4ec451a557b2dd2 [file] [log] [blame]
Daniel Pettib6c885b2014-09-12 10:04:28 -07001#include <stdint.h>
2
3#include <string>
4
5#include "gtest/gtest.h"
6
John Park33858a32018-09-28 23:05:48 -07007#include "aos/util/string_to_num.h"
Daniel Pettib6c885b2014-09-12 10:04:28 -07008
9namespace aos {
10namespace util {
11namespace testing {
12
13TEST(StringToNumTest, CorrectNumber) {
14 int result;
Daniel Petti5aa29792014-12-27 17:48:07 -050015 ASSERT_TRUE(StringToNumber<int>(::std::string("42"), &result));
Daniel Pettib6c885b2014-09-12 10:04:28 -070016 EXPECT_EQ(result, 42);
17}
18
19TEST(StringToNumTest, NegativeTest) {
20 int result;
Daniel Petti5aa29792014-12-27 17:48:07 -050021 ASSERT_TRUE(StringToNumber<int>(::std::string("-42"), &result));
Daniel Pettib6c885b2014-09-12 10:04:28 -070022 EXPECT_EQ(result, -42);
23}
24
25TEST(StringToNumTest, NonNumber) {
26 int result;
Daniel Petti5aa29792014-12-27 17:48:07 -050027 ASSERT_FALSE(StringToNumber<int>(::std::string("Daniel"), &result));
Daniel Pettib6c885b2014-09-12 10:04:28 -070028}
29
30TEST(StringToNumTest, NumberWithText) {
31 int result;
Daniel Petti5aa29792014-12-27 17:48:07 -050032 ASSERT_FALSE(StringToNumber<int>(::std::string("42Daniel"), &result));
Daniel Pettib6c885b2014-09-12 10:04:28 -070033}
34
35TEST(StringToNumTest, OverflowTest) {
36 uint32_t result;
37 // 2 << 32 should overflow.
Daniel Petti5aa29792014-12-27 17:48:07 -050038 ASSERT_FALSE(StringToNumber<uint32_t>(::std::string("4294967296"), &result));
39}
40
41TEST(StringToNumTest, FloatingPointTest) {
42 double result;
Brian Silverman84c01032015-09-20 16:58:01 -040043 ASSERT_TRUE(StringToNumber<double>(::std::string("3.1415927"), &result));
Daniel Petti5aa29792014-12-27 17:48:07 -050044 EXPECT_EQ(result, 3.1415927);
Daniel Pettib6c885b2014-09-12 10:04:28 -070045}
46
47} // testing
48} // util
49} // aos