Add contains method to ValueTokenizer

This commit is contained in:
Richard Berger
2020-06-09 12:11:53 -04:00
parent e641671da9
commit c1f6c004ca
3 changed files with 17 additions and 0 deletions

View File

@ -17,6 +17,7 @@
#include "tokenizer.h"
#include "utils.h"
#include <algorithm>
using namespace LAMMPS_NS;
@ -84,6 +85,10 @@ bool ValueTokenizer::has_next() const {
return current != tokens.cend();
}
bool ValueTokenizer::contains(const std::string & value) const {
return std::find(tokens.cbegin(), tokens.cend(), value) != tokens.cend();
}
std::string ValueTokenizer::next_string() {
if (has_next()) {
std::string value = *current;

View File

@ -91,6 +91,7 @@ public:
double next_double();
bool has_next() const;
bool contains(const std::string & value) const;
void skip(int ntokens);
size_t count() const;

View File

@ -112,3 +112,14 @@ TEST(ValueTokenizer, valid_double_with_exponential) {
ValueTokenizer values("3.14e22");
ASSERT_DOUBLE_EQ(values.next_double(), 3.14e22);
}
TEST(ValueTokenizer, contains) {
ValueTokenizer values("test word");
ASSERT_TRUE(values.contains("test"));
ASSERT_TRUE(values.contains("word"));
}
TEST(ValueTokenizer, not_contains) {
ValueTokenizer values("test word");
ASSERT_FALSE(values.contains("test2"));
}