From eeaa1eadebe85ce1d0d7604b58c6ef70fb3e5f3e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 29 Jul 2024 11:57:09 -0400 Subject: [PATCH] add test for value tokenizer to check limits --- unittest/utils/test_tokenizer.cpp | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/unittest/utils/test_tokenizer.cpp b/unittest/utils/test_tokenizer.cpp index 6db4a5fe5e..6b4e182cdb 100644 --- a/unittest/utils/test_tokenizer.cpp +++ b/unittest/utils/test_tokenizer.cpp @@ -11,11 +11,14 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "fmt/format.h" #include "lmptype.h" #include "tokenizer.h" #include "gmock/gmock.h" #include "gtest/gtest.h" +#include + using namespace LAMMPS_NS; using ::testing::Eq; @@ -348,32 +351,47 @@ TEST(ValueTokenizer, bad_double) TEST(ValueTokenizer, valid_int) { - ValueTokenizer values("10"); + ValueTokenizer values(fmt::format("10 -{} {}", MAXSMALLINT, MAXSMALLINT)); ASSERT_EQ(values.next_int(), 10); + ASSERT_EQ(values.next_int(), -MAXSMALLINT); + ASSERT_EQ(values.next_int(), MAXSMALLINT); } TEST(ValueTokenizer, valid_tagint) { - ValueTokenizer values("42"); + ValueTokenizer values(fmt::format("42 -{} {} -{} {}", MAXSMALLINT, MAXSMALLINT, MAXTAGINT, MAXTAGINT)); ASSERT_EQ(values.next_tagint(), 42); + ASSERT_EQ(values.next_tagint(), -MAXSMALLINT); + ASSERT_EQ(values.next_tagint(), MAXSMALLINT); + ASSERT_EQ(values.next_tagint(), -MAXTAGINT); + ASSERT_EQ(values.next_tagint(), MAXTAGINT); } TEST(ValueTokenizer, valid_bigint) { - ValueTokenizer values("42"); + ValueTokenizer values(fmt::format("42 -{} {} -{} {}", MAXSMALLINT, MAXSMALLINT, MAXBIGINT, MAXBIGINT)); ASSERT_EQ(values.next_bigint(), 42); + ASSERT_EQ(values.next_bigint(), -MAXSMALLINT); + ASSERT_EQ(values.next_bigint(), MAXSMALLINT); + ASSERT_EQ(values.next_bigint(), -MAXBIGINT); + ASSERT_EQ(values.next_bigint(), MAXBIGINT); } TEST(ValueTokenizer, valid_double) { - ValueTokenizer values("3.14"); + ValueTokenizer values("3.14 -0.00002 .1 " + std::to_string(MAXBIGINT)); ASSERT_DOUBLE_EQ(values.next_double(), 3.14); + ASSERT_DOUBLE_EQ(values.next_double(), -0.00002); + ASSERT_DOUBLE_EQ(values.next_double(), 0.1); + ASSERT_DOUBLE_EQ(values.next_double(), MAXBIGINT); } TEST(ValueTokenizer, valid_double_with_exponential) { - ValueTokenizer values("3.14e22"); + ValueTokenizer values(fmt::format("3.14e22 {} {}", DBL_MAX, DBL_MIN)); ASSERT_DOUBLE_EQ(values.next_double(), 3.14e22); + ASSERT_DOUBLE_EQ(values.next_double(), DBL_MAX); + ASSERT_DOUBLE_EQ(values.next_double(), DBL_MIN); } TEST(ValueTokenizer, contains)