| Index: test/cctest/test-libplatform-task-queue.cc
|
| diff --git a/test/cctest/test-cpu.cc b/test/cctest/test-libplatform-task-queue.cc
|
| similarity index 63%
|
| copy from test/cctest/test-cpu.cc
|
| copy to test/cctest/test-libplatform-task-queue.cc
|
| index 06966c68c86296e510edb8899f4d7deb0343f108..4695af8737f1e977f2e7fc8f788dad0e6e16d9fb 100644
|
| --- a/test/cctest/test-cpu.cc
|
| +++ b/test/cctest/test-libplatform-task-queue.cc
|
| @@ -28,28 +28,58 @@
|
| #include "v8.h"
|
|
|
| #include "cctest.h"
|
| -#include "cpu.h"
|
| +#include "libplatform/task-queue.h"
|
| +#include "test-libplatform.h"
|
|
|
| using namespace v8::internal;
|
|
|
|
|
| -TEST(FeatureImplications) {
|
| - // Test for features implied by other features.
|
| - CPU cpu;
|
| +TEST(TaskQueueBasic) {
|
| + TaskQueue queue;
|
|
|
| - // ia32 and x64 features
|
| - CHECK(!cpu.has_sse() || cpu.has_mmx());
|
| - CHECK(!cpu.has_sse2() || cpu.has_sse());
|
| - CHECK(!cpu.has_sse3() || cpu.has_sse2());
|
| - CHECK(!cpu.has_ssse3() || cpu.has_sse3());
|
| - CHECK(!cpu.has_sse41() || cpu.has_sse3());
|
| - CHECK(!cpu.has_sse42() || cpu.has_sse41());
|
| + TestTask* task = new TestTask;
|
| + queue.Append(task);
|
| + CHECK_EQ(task, queue.GetNext());
|
| + delete task;
|
|
|
| - // arm features
|
| - CHECK(!cpu.has_vfp3_d32() || cpu.has_vfp3());
|
| + queue.Terminate();
|
| + CHECK_EQ(NULL, queue.GetNext());
|
| }
|
|
|
|
|
| -TEST(NumberOfProcessorsOnline) {
|
| - CHECK_GT(CPU::NumberOfProcessorsOnline(), 0);
|
| +class ReadQueueTask : public TestTask {
|
| + public:
|
| + explicit ReadQueueTask(TaskQueue* queue) : TestTask(true), queue_(queue) {}
|
| + virtual ~ReadQueueTask() {}
|
| +
|
| + virtual void Run() V8_OVERRIDE {
|
| + TestTask::Run();
|
| + CHECK_EQ(NULL, queue_->GetNext());
|
| + }
|
| +
|
| + private:
|
| + TaskQueue* queue_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ReadQueueTask);
|
| +};
|
| +
|
| +
|
| +TEST(TaskQueueTerminateMultipleReaders) {
|
| + TaskQueue queue;
|
| + ReadQueueTask* read1 = new ReadQueueTask(&queue);
|
| + ReadQueueTask* read2 = new ReadQueueTask(&queue);
|
| +
|
| + TestThread thread1(read1);
|
| + TestThread thread2(read2);
|
| +
|
| + thread1.Start();
|
| + thread2.Start();
|
| +
|
| + thread1.Signal();
|
| + thread2.Signal();
|
| +
|
| + queue.Terminate();
|
| +
|
| + thread1.Join();
|
| + thread2.Join();
|
| }
|
|
|