i have a part program that describes how "poco" can use "regex" to manipulate data, it is good because it is cross environment,
but in order to do something a "stub" program must be made in order to call this routines and test the result, the routines are already there.
= = = = = = = = = = = = = = = =
// [login to view URL]
#include <Poco/RegularExpression.h>
#include <gtest/gtest.h>
TEST(RegularExpressionTest, match)
{
Poco::RegularExpression re1("[0-9]+");
EXPECT_TRUE([login to view URL]("123"));
EXPECT_FALSE([login to view URL]("abc"));
EXPECT_TRUE([login to view URL]("abc123", 3));
}
TEST(RegularExpressionTest, matchPos)
{
Poco::RegularExpression re1("[0-9]+");
Poco::RegularExpression::Match pos;
EXPECT_EQ(1, [login to view URL]("123", 0, pos));
EXPECT_EQ(0, [login to view URL]);
EXPECT_EQ(3, [login to view URL]);
EXPECT_EQ(1, [login to view URL]("ab12de90cd12d", 0, pos));
EXPECT_EQ(2, [login to view URL]);
EXPECT_EQ(2, [login to view URL]);
EXPECT_EQ(0, [login to view URL]("abcd", 0, pos));
EXPECT_EQ(std::string::npos, [login to view URL]);
Poco::RegularExpression re2("([0-9]+) ([0-9]+)");
Poco::RegularExpression::MatchVec posVec;
EXPECT_EQ(3, [login to view URL]("123 456", 0, posVec));
EXPECT_EQ(0, posVec[0].offset);
EXPECT_EQ(7, posVec[0].length);
EXPECT_EQ(0, posVec[1].offset);
EXPECT_EQ(3, posVec[1].length);
EXPECT_EQ(4, posVec[2].offset);
EXPECT_EQ(3, posVec[2].length);
}
TEST(RegularExpressionTest, extract)
{
std::string s;
Poco::RegularExpression re1("[0-9]+");
Poco::RegularExpression re2("([0-9]+) ([0-9]+)");
EXPECT_EQ(1, [login to view URL]("123", s));
EXPECT_EQ("123", s);
EXPECT_EQ(1, [login to view URL]("ab12de", 0, s));
EXPECT_EQ("12", s);
EXPECT_EQ(0, [login to view URL]("abcd", 0, s));
EXPECT_EQ("", s);
std::vector<std::string> vec;
[login to view URL]("123 456", 0, vec);
// FIXME: split?
EXPECT_EQ("123 456", vec[0]);
EXPECT_EQ("123", vec[1]);
EXPECT_EQ("456", vec[2]);
}
TEST(RegularExpressionTest, subst)
{
std::string s = "123";
Poco::RegularExpression re1("[0-9]+");
Poco::RegularExpression re2("([0-9]+) ([0-9]+)");
[login to view URL](s, "ABC");
EXPECT_EQ("ABC", s);
s = "123 456";
[login to view URL](s, "$2 $1");
EXPECT_EQ("456 123", s);
}
TEST(RegularExpressionTest, options)
{
Poco::RegularExpression re1("ABC");
EXPECT_FALSE([login to view URL]("abc", 0));
Poco::RegularExpression re2("ABC", Poco::RegularExpression::RE_CASELESS);
EXPECT_TRUE([login to view URL]("abc", 0));
}