This code shows a simple test that reports how long it takes to add an object to a sequence.
class ISequenceAddTimingTest : public ITimingTest {
public:
ISequenceAddTimingTest();
virtual ~ISequenceAddTimingTest();
protected:
virtual void timingSetup();
virtual void timingTest();
virtual void timingCleanup();
private:
IString **fObject; // Array of pointers to objects to be added
long fObjectArraySize; // Number of items in fObject
IString **fNextObject; // Pointer to next pointer to add
ISequence<IString> fSequence; // Deque to add to
};
ISequenceAddTimingTest::ISequenceAddTimingTest()
{
fObject = NULL;
fObjectArraySize = 0;
}
ISequenceAddTimingTest::~ISequenceAddTimingTest()
{
timingCleanup(); // Just in case timingSetup was called without timingCleanup
}
void ISequenceAddTimingTest::timingSetup()
{
timingCleanup(); // Just in case timingSetup was called without timingCleanup
fObjectArraySize = timingCount();
fObject = new IString*[fObjectArraySize];
for (long i=0; i < fObjectArraySize; i++)
fObject[i] = new IString;
fNextObject = &fObject[0];
}
void ISequenceAddTimingTest::timingTest()
{
fSequence.add(**fNextObject++);
}
void ISequenceAddTimingTest::timingCleanup()
{
if (fObject != NULL) {
for (long i=0; i < fObjectArraySize; i++)
delete fobject[i];
delete[] fobject;
fObject= NULL;
}
}
RunTestImplementationMacro(ISequenceAddTimingTest);