Skip to content

Commit

Permalink
TestLibrary: added tests showing failure to detect iterator of container
Browse files Browse the repository at this point in the history
  • Loading branch information
firewave committed Jul 12, 2024
1 parent ed54609 commit 4f9d74d
Showing 1 changed file with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions test/testlibrary.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -803,6 +803,8 @@ class TestLibrary : public TestFixture {
" <type string=\"std-like\"/>\n"
" <access indexOperator=\"array-like\"/>\n"
" </container>\n"
" <container id=\"E\" startPattern=\"std :: E\"/>\n"
" <container id=\"F\" startPattern=\"std :: F\" itEndPattern=\":: iterator\"/>\n"
"</def>";

Library library;
Expand All @@ -811,6 +813,8 @@ class TestLibrary : public TestFixture {
const Library::Container& A = library.containers().at("A");
const Library::Container& B = library.containers().at("B");
const Library::Container& C = library.containers().at("C");
const Library::Container& E = library.containers().at("E");
const Library::Container& F = library.containers().at("F");

ASSERT_EQUALS(A.type_templateArgNo, 1);
ASSERT_EQUALS(A.size_templateArgNo, 4);
Expand Down Expand Up @@ -851,6 +855,14 @@ class TestLibrary : public TestFixture {
ASSERT_EQUALS(C.stdStringLike, true);
ASSERT_EQUALS(C.arrayLike_indexOp, true);

ASSERT_EQUALS(E.startPattern, "std :: E");
ASSERT_EQUALS(E.endPattern, "");
ASSERT_EQUALS(E.itEndPattern, "");

ASSERT_EQUALS(F.startPattern, "std :: F");
ASSERT_EQUALS(F.endPattern, "");
ASSERT_EQUALS(F.itEndPattern, ":: iterator");

{
const SimpleTokenizer var(*this, "std::A<int> a;");
ASSERT_EQUALS(&A, library.detectContainer(var.tokens()));
Expand Down Expand Up @@ -914,6 +926,68 @@ class TestLibrary : public TestFixture {
ASSERT(!library.detectIterator(var.tokens()));
ASSERT(!library.detectContainerOrIterator(var.tokens()));
}

{
const SimpleTokenizer var(*this, "std::E e;");
ASSERT(library.detectContainer(var.tokens()));
ASSERT(!library.detectIterator(var.tokens()));
bool isIterator;
ASSERT_EQUALS(&E, library.detectContainerOrIterator(var.tokens(), &isIterator));
ASSERT(!isIterator);
ASSERT(!library.detectContainerOrIterator(var.tokens(), nullptr, true));
}

{
const SimpleTokenizer var(*this, "E e;");
ASSERT(!library.detectContainer(var.tokens()));
ASSERT(!library.detectIterator(var.tokens()));
ASSERT(!library.detectContainerOrIterator(var.tokens()));
ASSERT_EQUALS(&E, library.detectContainerOrIterator(var.tokens(), nullptr, true));
}

{
const SimpleTokenizer var(*this, "std::E::iterator I;");
ASSERT(!library.detectContainer(var.tokens()));
ASSERT(!library.detectIterator(var.tokens()));
ASSERT(!library.detectContainerOrIterator(var.tokens()));
ASSERT(!library.detectContainerOrIterator(var.tokens(), nullptr, true));
}

{
const SimpleTokenizer var(*this, "std::E::size_type p;");
ASSERT(!library.detectContainer(var.tokens()));
ASSERT(!library.detectIterator(var.tokens()));
ASSERT(!library.detectContainerOrIterator(var.tokens()));
ASSERT(!library.detectContainerOrIterator(var.tokens(), nullptr, true));
}

{
const SimpleTokenizer var(*this, "std::F f;");
ASSERT(library.detectContainer(var.tokens()));
ASSERT(!library.detectIterator(var.tokens()));
bool isIterator;
ASSERT_EQUALS(&F, library.detectContainerOrIterator(var.tokens(), &isIterator));
ASSERT(!isIterator);
}

{
const SimpleTokenizer var(*this, "std::F::iterator I;");
ASSERT(!library.detectContainer(var.tokens()));
TODO_ASSERT(library.detectIterator(var.tokens()));
bool isIterator;
TODO_ASSERT_EQUALS((intptr_t)&F, 0, (intptr_t)library.detectContainerOrIterator(var.tokens(), &isIterator));
TODO_ASSERT(isIterator);
}

{
const SimpleTokenizer var(*this, "F::iterator I;");
ASSERT(!library.detectContainer(var.tokens()));
ASSERT(!library.detectIterator(var.tokens()));
ASSERT(!library.detectContainerOrIterator(var.tokens()));
bool isIterator;
TODO_ASSERT_EQUALS((intptr_t)&F, 0, (intptr_t)library.detectContainerOrIterator(var.tokens(), &isIterator, true));
TODO_ASSERT(isIterator);
}
}

#define LOADLIBERROR(xmldata, errorcode) loadLibError(xmldata, errorcode, __FILE__, __LINE__)
Expand Down

0 comments on commit 4f9d74d

Please sign in to comment.