add unit tests for ArgInfo class
This commit is contained in:
@ -6,6 +6,10 @@ add_executable(test_mempool test_mempool.cpp)
|
||||
target_link_libraries(test_mempool PRIVATE lammps GTest::GMockMain GTest::GMock GTest::GTest)
|
||||
add_test(MemPool test_mempool)
|
||||
|
||||
add_executable(test_argutils test_argutils.cpp)
|
||||
target_link_libraries(test_argutils PRIVATE lammps GTest::GMockMain GTest::GMock GTest::GTest)
|
||||
add_test(ArgUtils test_argutils)
|
||||
|
||||
add_executable(test_utils test_utils.cpp)
|
||||
target_link_libraries(test_utils PRIVATE lammps GTest::GMockMain GTest::GMock GTest::GTest)
|
||||
add_test(Utils test_utils)
|
||||
|
||||
172
unittest/utils/test_argutils.cpp
Normal file
172
unittest/utils/test_argutils.cpp
Normal file
@ -0,0 +1,172 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||
https://lammps.sandia.gov/, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||
certain rights in this software. This software is distributed under
|
||||
the GNU General Public License.
|
||||
|
||||
See the README file in the top-level LAMMPS directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#include "arg_info.h"
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include <string>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using ::testing::StrEq;
|
||||
|
||||
TEST(ArgInfo, plain)
|
||||
{
|
||||
ArgInfo arg("text");
|
||||
ASSERT_EQ(arg.get_dim(), 0);
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::NONE);
|
||||
ASSERT_EQ(arg.get_index1(), -1);
|
||||
ASSERT_EQ(arg.get_index2(), -1);
|
||||
ASSERT_THAT(arg.get_name(), StrEq("text"));
|
||||
}
|
||||
|
||||
TEST(ArgInfo, copy_name)
|
||||
{
|
||||
char *name=nullptr;
|
||||
ArgInfo arg("text");
|
||||
ASSERT_THAT(arg.get_name(), StrEq("text"));
|
||||
name = arg.copy_name();
|
||||
ASSERT_THAT(name, StrEq("text"));
|
||||
delete[] name;
|
||||
}
|
||||
|
||||
TEST(ArgInfo, compute0)
|
||||
{
|
||||
ArgInfo arg("c_text");
|
||||
ASSERT_EQ(arg.get_dim(), 0);
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::COMPUTE);
|
||||
ASSERT_EQ(arg.get_index1(), -1);
|
||||
ASSERT_EQ(arg.get_index2(), -1);
|
||||
ASSERT_THAT(arg.get_name(), StrEq("text"));
|
||||
}
|
||||
|
||||
TEST(ArgInfo, compute1)
|
||||
{
|
||||
ArgInfo arg("c_1[5]", ArgInfo::COMPUTE);
|
||||
ASSERT_EQ(arg.get_dim(), 1);
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::COMPUTE);
|
||||
ASSERT_EQ(arg.get_index1(), 5);
|
||||
ASSERT_EQ(arg.get_index2(), -1);
|
||||
ASSERT_THAT(arg.get_name(), StrEq("1"));
|
||||
}
|
||||
|
||||
TEST(ArgInfo, compute2)
|
||||
{
|
||||
ArgInfo arg("c_text[02][05]", ArgInfo::COMPUTE | ArgInfo::FIX);
|
||||
ASSERT_EQ(arg.get_dim(), 2);
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::COMPUTE);
|
||||
ASSERT_EQ(arg.get_index1(), 2);
|
||||
ASSERT_EQ(arg.get_index2(), 5);
|
||||
ASSERT_THAT(arg.get_name(), StrEq("text"));
|
||||
}
|
||||
|
||||
TEST(ArgInfo, fix0)
|
||||
{
|
||||
ArgInfo arg("f_2");
|
||||
ASSERT_EQ(arg.get_dim(), 0);
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::FIX);
|
||||
ASSERT_EQ(arg.get_index1(), -1);
|
||||
ASSERT_EQ(arg.get_index2(), -1);
|
||||
ASSERT_THAT(arg.get_name(), StrEq("2"));
|
||||
}
|
||||
|
||||
TEST(ArgInfo, fix1)
|
||||
{
|
||||
ArgInfo arg("f_text[5]", ArgInfo::FIX | ArgInfo::VARIABLE);
|
||||
ASSERT_EQ(arg.get_dim(), 1);
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::FIX);
|
||||
ASSERT_EQ(arg.get_index1(), 5);
|
||||
ASSERT_EQ(arg.get_index2(), -1);
|
||||
ASSERT_THAT(arg.get_name(), StrEq("text"));
|
||||
}
|
||||
|
||||
TEST(ArgInfo, fix2)
|
||||
{
|
||||
ArgInfo arg("f_text[02][05]", ArgInfo::FIX);
|
||||
ASSERT_EQ(arg.get_dim(), 2);
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::FIX);
|
||||
ASSERT_EQ(arg.get_index1(), 2);
|
||||
ASSERT_EQ(arg.get_index2(), 5);
|
||||
ASSERT_THAT(arg.get_name(), StrEq("text"));
|
||||
}
|
||||
|
||||
TEST(ArgInfo, variable0)
|
||||
{
|
||||
ArgInfo arg("v_text");
|
||||
ASSERT_EQ(arg.get_dim(), 0);
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::VARIABLE);
|
||||
ASSERT_EQ(arg.get_index1(), -1);
|
||||
ASSERT_EQ(arg.get_index2(), -1);
|
||||
ASSERT_THAT(arg.get_name(), StrEq("text"));
|
||||
}
|
||||
|
||||
TEST(ArgInfo, variable1)
|
||||
{
|
||||
ArgInfo arg("v_text_1[5]", ArgInfo::VARIABLE);
|
||||
ASSERT_EQ(arg.get_dim(), 1);
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::VARIABLE);
|
||||
ASSERT_EQ(arg.get_index1(), 5);
|
||||
ASSERT_EQ(arg.get_index2(), -1);
|
||||
ASSERT_THAT(arg.get_name(), StrEq("text_1"));
|
||||
}
|
||||
|
||||
TEST(ArgInfo, variable2)
|
||||
{
|
||||
ArgInfo arg("v_x[02][05]");
|
||||
ASSERT_EQ(arg.get_dim(), 2);
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::VARIABLE);
|
||||
ASSERT_EQ(arg.get_index1(), 2);
|
||||
ASSERT_EQ(arg.get_index2(), 5);
|
||||
ASSERT_THAT(arg.get_name(), StrEq("x"));
|
||||
}
|
||||
|
||||
TEST(ArgInfo, unsupported)
|
||||
{
|
||||
ArgInfo arg("v_text[02][05]", ArgInfo::COMPUTE | ArgInfo::FIX);
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::NONE);
|
||||
}
|
||||
|
||||
TEST(ArgInfo, no_bracket1)
|
||||
{
|
||||
ArgInfo arg("v_text[2");
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::UNKNOWN);
|
||||
}
|
||||
|
||||
TEST(ArgInfo, no_bracket2)
|
||||
{
|
||||
ArgInfo arg("v_text[2][1");
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::UNKNOWN);
|
||||
}
|
||||
|
||||
TEST(ArgInfo, no_bracket3)
|
||||
{
|
||||
ArgInfo arg("v_text[2[1]");
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::UNKNOWN);
|
||||
}
|
||||
|
||||
TEST(ArgInfo, none)
|
||||
{
|
||||
ArgInfo arg("x_text");
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::NONE);
|
||||
}
|
||||
|
||||
TEST(ArgInfo, bad_idx1)
|
||||
{
|
||||
ArgInfo arg("c_1[a]");
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::UNKNOWN);
|
||||
}
|
||||
|
||||
TEST(ArgInfo, bad_idx2)
|
||||
{
|
||||
ArgInfo arg("c_1[1][b]");
|
||||
ASSERT_EQ(arg.get_type(), ArgInfo::UNKNOWN);
|
||||
}
|
||||
Reference in New Issue
Block a user