diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2013-04-15 11:34:00 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2013-04-15 12:47:53 +0200 |
commit | 2cd8a90bd4d171ed2404822b6046455a94d4b6ed (patch) | |
tree | ed8eda56d54cb13d777be1cfa294c85ddd76e583 /tests/manual/v4/auto | |
parent | 5bf33901429e64ab91f30037e25ec04aab4b4c11 (diff) | |
parent | bec019b5fe35e1701c944eb340df458d5e3d1cdb (diff) |
Merge branch 'master' of ssh://codereview.qt-project.org:29418/playground/v4vm into v4
This is the initial merge of the v4vm JS engine, designed specifically for QML.
The engine is tested on Linux and Mac OS X, works on x86, x86-64 and ARM.
Change-Id: I826b72cfa3d3575007b70d78604080582db568db
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'tests/manual/v4/auto')
-rw-r--r-- | tests/manual/v4/auto/auto.pro | 4 | ||||
-rw-r--r-- | tests/manual/v4/auto/executableallocator/executableallocator.pro | 4 | ||||
-rw-r--r-- | tests/manual/v4/auto/executableallocator/tst_executableallocator.cpp | 97 |
3 files changed, 105 insertions, 0 deletions
diff --git a/tests/manual/v4/auto/auto.pro b/tests/manual/v4/auto/auto.pro new file mode 100644 index 0000000000..3b189275b9 --- /dev/null +++ b/tests/manual/v4/auto/auto.pro @@ -0,0 +1,4 @@ +TEMPLATE=subdirs +SUBDIRS=\ + executableallocator + diff --git a/tests/manual/v4/auto/executableallocator/executableallocator.pro b/tests/manual/v4/auto/executableallocator/executableallocator.pro new file mode 100644 index 0000000000..196398020d --- /dev/null +++ b/tests/manual/v4/auto/executableallocator/executableallocator.pro @@ -0,0 +1,4 @@ +TEMPLATE = app +TARGET = tst_executableallocator +SOURCES = tst_executableallocator.cpp +QT = core v4-private testlib diff --git a/tests/manual/v4/auto/executableallocator/tst_executableallocator.cpp b/tests/manual/v4/auto/executableallocator/tst_executableallocator.cpp new file mode 100644 index 0000000000..1d8617e4a2 --- /dev/null +++ b/tests/manual/v4/auto/executableallocator/tst_executableallocator.cpp @@ -0,0 +1,97 @@ + +#include <QtTest> +#include <QtCore> +#include <stdlib.h> +#include <assert.h> + +#include <private/qv4executableallocator.h> + +using namespace QQmlJS::VM; + +class tst_ExecutableAllocator : public QObject +{ + Q_OBJECT +private slots: + void singleAlloc(); + void mergeNext(); + void mergePrev(); + void multipleChunks(); +}; + +void tst_ExecutableAllocator::singleAlloc() +{ + ExecutableAllocator allocator; + ExecutableAllocator::Allocation *p = allocator.allocate(256); + QCOMPARE(allocator.freeAllocationCount(), 1); + QCOMPARE(allocator.chunkCount(), 1); + allocator.free(p); + QCOMPARE(allocator.freeAllocationCount(), 0); + QCOMPARE(allocator.chunkCount(), 0); +} + +void tst_ExecutableAllocator::mergeNext() +{ + ExecutableAllocator allocator; + + ExecutableAllocator::Allocation *first = allocator.allocate(10); + QCOMPARE(allocator.freeAllocationCount(), 1); + QCOMPARE(allocator.chunkCount(), 1); + + ExecutableAllocator::Allocation *second = allocator.allocate(10); + QCOMPARE(allocator.freeAllocationCount(), 1); + QCOMPARE(allocator.chunkCount(), 1); + + allocator.free(second); + QCOMPARE(allocator.freeAllocationCount(), 1); + QCOMPARE(allocator.chunkCount(), 1); + + allocator.free(first); + QCOMPARE(allocator.freeAllocationCount(), 0); + QCOMPARE(allocator.chunkCount(), 0); +} + +void tst_ExecutableAllocator::mergePrev() +{ + ExecutableAllocator allocator; + + ExecutableAllocator::Allocation *first = allocator.allocate(10); + QCOMPARE(allocator.freeAllocationCount(), 1); + + ExecutableAllocator::Allocation *second = allocator.allocate(10); + QCOMPARE(allocator.freeAllocationCount(), 1); + + ExecutableAllocator::Allocation *third = allocator.allocate(10); + QCOMPARE(allocator.freeAllocationCount(), 1); + + allocator.free(first); + QCOMPARE(allocator.freeAllocationCount(), 2); + + allocator.free(second); + QCOMPARE(allocator.freeAllocationCount(), 2); + + allocator.free(third); + QCOMPARE(allocator.freeAllocationCount(), 0); +} + +void tst_ExecutableAllocator::multipleChunks() +{ + ExecutableAllocator allocator; + + ExecutableAllocator::Allocation *first = allocator.allocate(10); + QCOMPARE(allocator.chunkCount(), 1); + + ExecutableAllocator::Allocation *second = allocator.allocate(8 * 1024 * 1024); + QCOMPARE(allocator.chunkCount(), 2); + + ExecutableAllocator::Allocation *third = allocator.allocate(1024); + QCOMPARE(allocator.chunkCount(), 2); + + allocator.free(first); + allocator.free(second); + allocator.free(third); + QCOMPARE(allocator.chunkCount(), 0); + QCOMPARE(allocator.freeAllocationCount(), 0); +} + +QTEST_MAIN(tst_ExecutableAllocator) +#include "tst_executableallocator.moc" |