blob: 203abc120c44a5c374ba9a31ec7323e2f8df1906 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "ExecutorsTestSupport.h"
using namespace std;
using namespace decaf;
using namespace decaf::lang;
using namespace decaf::lang::exceptions;
using namespace decaf::util;
using namespace decaf::util::concurrent;
///////////////////////////////////////////////////////////////////////////////
const int ExecutorsTestSupport::SHORT_DELAY_MS = 50;
const int ExecutorsTestSupport::SMALL_DELAY_MS = 50 * 5;
const int ExecutorsTestSupport::MEDIUM_DELAY_MS = 50 * 10;
const int ExecutorsTestSupport::LONG_DELAY_MS = 50 * 50;
const std::string ExecutorsTestSupport::TEST_STRING = "a test string";
///////////////////////////////////////////////////////////////////////////////
ExecutorsTestSupport::ExecutorsTestSupport() : threadFailed(false) {
}
///////////////////////////////////////////////////////////////////////////////
ExecutorsTestSupport::~ExecutorsTestSupport() {
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::setUp() {
threadFailed = false;
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::tearDown() {
CPPUNIT_ASSERT(!threadFailed);
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::unexpectedException() {
CPPUNIT_FAIL("Unexpected exception");
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::unexpectedException(Throwable& ex) {
CPPUNIT_FAIL(std::string("Unexpected exception: ") + ex.getMessage());
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::threadFail(const std::string& reason) {
threadFailed = true;
CPPUNIT_FAIL(reason);
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::threadShouldThrow() {
threadFailed = true;
CPPUNIT_FAIL("should throw exception");
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::threadUnexpectedException() {
threadFailed = true;
CPPUNIT_FAIL("Unexpected exception");
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::threadUnexpectedException(Throwable& ex) {
threadFailed = true;
CPPUNIT_FAIL(std::string("Unexpected exception: ") + ex.getMessage());
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::threadAssertFalse(bool b) {
if (b) {
threadFailed = true;
CPPUNIT_ASSERT(!b);
}
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::threadAssertTrue(bool b) {
if (!b) {
threadFailed = true;
CPPUNIT_ASSERT(b);
}
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::threadAssertEquals(long long x, long long y) {
if (x != y) {
threadFailed = true;
CPPUNIT_ASSERT_EQUAL(x, y);
}
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::shouldThrow() {
CPPUNIT_FAIL("Should throw exception");
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::joinPool(ExecutorService& exec) {
try {
exec.shutdown();
CPPUNIT_ASSERT(exec.awaitTermination(LONG_DELAY_MS * 2, TimeUnit::MILLISECONDS));
} catch(InterruptedException& ie) {
CPPUNIT_FAIL("Unexpected exception");
}
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::joinPool(ExecutorService* exec) {
try {
exec->shutdown();
CPPUNIT_ASSERT(exec->awaitTermination(LONG_DELAY_MS, TimeUnit::MILLISECONDS));
} catch(InterruptedException& ie) {
CPPUNIT_FAIL("Unexpected exception");
}
}
///////////////////////////////////////////////////////////////////////////////
void ExecutorsTestSupport::destroyRemaining(ArrayList<Runnable*> leftovers) {
try {
Pointer< Iterator<Runnable*> > iter( leftovers.iterator() );
while(iter->hasNext()) {
delete iter->next();
}
} catch(Exception& e) {
CPPUNIT_FAIL("Unexpected exception");
}
}