Alien-SmokeQt
view release on metacpan or search on metacpan
generator/parser/tests/test_generator.cpp view on Meta::CPAN
parse(QByteArray("template<int num> struct No {}; No<9> n;"));
}
void testDynamicArray()
{
parse(QByteArray("struct Bla { int val; } blaArray[] = { {5} };"));
}
void testSmartPointer()
{
parse(QByteArray("template<class T> struct SmartPointer { T* operator ->() const {} template<class Target> SmartPointer<Target> cast() {} T& operator*() {} } ; class B{int i;}; class C{}; SmartPointer<B> bPointer;"));
}
void testSimpleExpression()
{
parse(QByteArray("struct Cont { int& a; Cont* operator -> () {} double operator*(); }; Cont c; Cont* d = &c; void test() { c.a = 5; d->a = 5; (*d).a = 5; c.a(5, 1, c); c.b<Fulli>(); }"));
}
void testThis()
{
parse(QByteArray("struct Cont { operator int() {} }; void test( int c = 5 ) { this->test( Cont(), 1, 5.5, 6); }"));
}
void testCasts()
{
parse(QByteArray("struct Cont2 {}; struct Cont { int& a; Cont* operator -> () {} double operator*(); }; Cont c; Cont* d = &c; void test() { c.a = 5; d->a = 5; (*d).a = 5; c.a(5, 1, c); c(); c.a = dynamic_cast<const Cont2*>(d); }"));
}
void testOperators()
{
parse(QByteArray("struct Cont2 {int operator[] {} operator()() {}}; struct Cont3{}; struct Cont { Cont3 operator[](int i) {} Cont3 operator()() {} Cont3 operator+(const Cont3& c3 ) {} }; Cont c; Cont2 operator+( const Cont& c, const Cont& c2){} C...
}
void testEmptyFor()
{
parse(QByteArray("void test() { for (;;) {} }"));
}
private:
ParseSession* lastSession;
ParseSession* lastGeneratedSession;
TranslationUnitAST* parseOriginal(const QByteArray& unit)
{
Parser parser(&control);
lastSession = new ParseSession();
lastSession->setContentsAndGenerateLocationTable(tokenizeFromByteArray(unit));
return parser.parse(lastSession);
}
TranslationUnitAST* parseGenerated(const QByteArray& unit)
{
Parser parser(&control);
lastGeneratedSession = new ParseSession();
lastGeneratedSession->setContentsAndGenerateLocationTable(tokenizeFromByteArray(unit));
return parser.parse(lastGeneratedSession);
}
void compareTokenStreams()
{
std::size_t cursor = 1;
forever {
QVERIFY(cursor < lastSession->token_stream->size());
QVERIFY(cursor < lastGeneratedSession->token_stream->size());
const Token& t1 = lastSession->token_stream->token( cursor );
const Token& t2 = lastGeneratedSession->token_stream->token( cursor );
QCOMPARE(t1, t2);
if (t1.kind == Token_EOF)
break;
++cursor;
}
}
};
#include "test_generator.moc"
QTEST_MAIN(TestGenerator)
( run in 3.713 seconds using v1.01-cache-2.11-cpan-524268b4103 )