base: Add enum to_number tests
authorDaniel R. Carvalho <odanrc@yahoo.com.br>
Fri, 12 Feb 2021 14:55:46 +0000 (11:55 -0300)
committerDaniel Carvalho <odanrc@yahoo.com.br>
Mon, 15 Feb 2021 03:05:29 +0000 (03:05 +0000)
Add a test to convert a string containing a number into enums.

One of the tests has been disabled to highlight an error-prone
situation where a number that is not a valid enum manages to
be converted to an enum.

Change-Id: I7967c62feea335f3ffda40d8bf0334c20b53ee6c
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/41334
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu>
Maintainer: Bobby R. Bruce <bbruce@ucdavis.edu>

src/base/str.test.cc

index a064a87cbfce2636501f41fe9e580b8ef9f7b554..f0cd483ab849936d22d5f77f375212bd46b04d6b 100644 (file)
@@ -301,6 +301,30 @@ TEST(StrTest, ToNumber64BitIntInvalidString)
     EXPECT_FALSE(to_number(input, output));
 }
 
+TEST(StrTest, ToNumberEnum)
+{
+    enum Number
+    {
+        TWO=2,
+    };
+    Number output;
+    std::string input = "2";
+    EXPECT_TRUE(to_number(input, output));
+    EXPECT_EQ(TWO, output);
+}
+
+/** Test that trying to convert a number to an enum that is not valid fails. */
+TEST(StrTest, DISABLED_ToNumberEnumInvalid)
+{
+    enum Number
+    {
+        TWO=2,
+    };
+    Number output;
+    std::string input = "3";
+    EXPECT_FALSE(to_number(input, output));
+}
+
 TEST(StrTest, ToNumberFloat)
 {
     float output;