searchengine/util/tsrc/cpixtoolsunittest/src/memorytest.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 06 Jul 2010 15:30:04 +0300
changeset 10 afe194b6b1cd
parent 0 671dee74050a
permissions -rw-r--r--
Revision: 201025 Kit: 2010127

/*
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: 
*
*/


#include "cpixmemtools.h"
#include "itk.h"
#include <iostream>

typedef Cpt::poly_forward_iterator<const char*> poly_zoo_iterator;
typedef Cpt::auto_iterator<const char*, poly_zoo_iterator> zoo_iterator;

const char* ZooAnimals[] = {
	"ape",
	"snake",
	"bird",
	NULL
};

class poly_zoo_iterator_ : public poly_zoo_iterator {
public: 
	poly_zoo_iterator_() : i_(0) {}
	virtual ~poly_zoo_iterator_() {
		std::cout<<"Iterator down."<<std::endl; 
	}
	virtual const char* operator++(int) {
		return ZooAnimals[i_++]; 
	}
	virtual operator bool() {
		return ZooAnimals[i_];
	}
private: 
	int i_;
};

zoo_iterator ZooIterator() {
	return zoo_iterator( new poly_zoo_iterator_() );
}

void TestAutoIterator(Itk::TestMgr * testMgr) {
	zoo_iterator i = ZooIterator(); 
	while (i) {
		std::cout<<"Animal: "<<i++<<std::endl;
	}
}
 
Itk::TesterBase * CreateMemTests()
{
    using namespace Itk;

    SuiteTester
        * geoTests = new SuiteTester("mem");

    geoTests->add("autoiterator",
				  TestAutoIterator,
                  "autoiterator");
    
    return geoTests;
}