LinearAllocatorTest.h revision 551ae4ebd3e9d137ea668fb83ae4a55b8cfba451
163abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey//===- LinearAllocatorTest.h ----------------------------------------------===//
263abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey//
363abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey//                     The MCLinker Project
463abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey//
563abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey// This file is distributed under the University of Illinois Open Source
663abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey// License. See LICENSE.TXT for details.
763abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey//
863abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey//===----------------------------------------------------------------------===//
963abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey#ifndef LINEAR_ALLOCATOR_TEST_H
1063abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey#define LINEAR_ALLOCATOR_TEST_H
1163abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey
1263abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey#include <gtest.h>
1363abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey#include "mcld/Support/Allocators.h"
1463abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey
1563abc37356728c0575d6a62a203102ae6d97953bJeff Sharkeynamespace mcldtest
1663abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey{
1763abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey
1863abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey/** \class LinearAllocatorTest
1963abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey *  \brief The testcase for LinearAllocator
2063abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey *
211b8ef7e3165ff9aa52a4905dafc8d0f83e7403f9Jeff Sharkey *  \see LinearAllocator
2263abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey */
2363abc37356728c0575d6a62a203102ae6d97953bJeff Sharkeyclass LinearAllocatorTest : public ::testing::Test
2463abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey{
2571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkeypublic:
2671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey	struct Data {
2771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey		Data()
2871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey		: one(1), two(2), three(3), four(4)
2971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey		{ }
3063abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey
3163abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey		Data( unsigned int pOne, unsigned int pTwo, unsigned char pThree, unsigned char pFour)
3271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey		{
3371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey			one = pOne;
3463abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey			two = pTwo;
3571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey			three = pThree;
3671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey			four = pFour;
3771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey		}
3871cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey
3971cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey		~Data()
4071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey		{
4171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey			one = -1;
4271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey			two = -2;
4371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey			three = -3;
4471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey			four = -4;
4571cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey		}
4663abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey
4763abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey		unsigned int one;
4867be7184762d17d243a9396dd9989369f7f7e0d1Jeff Sharkey		unsigned int two;
4967be7184762d17d243a9396dd9989369f7f7e0d1Jeff Sharkey		unsigned char three;
5071cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey		unsigned char four;
5171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey	};
5271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkeypublic:
5371cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey	// Constructor can do set-up work for all test here.
5471cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey	LinearAllocatorTest();
5563abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey
5671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey	// Destructor can do clean-up work that doesn't throw exceptions here.
5771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey	virtual ~LinearAllocatorTest();
5863abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey
5963abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey	// SetUp() will be called immediately before each test.
6063abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey	virtual void SetUp();
6171cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey
6271cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey	// TearDown() will be called immediately after each test.
6363abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey	virtual void TearDown();
6463abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey
6563abc37356728c0575d6a62a203102ae6d97953bJeff Sharkeyprotected:
6671cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey	enum TemplateArgsType { CHUNK_SIZE = 32 };
6771cb446f010e791ca77a27c416a79b5ccb3f075bJeff Sharkey	typedef mcld::LinearAllocator<Data, CHUNK_SIZE> Alloc;
6863abc37356728c0575d6a62a203102ae6d97953bJeff Sharkeyprotected:
6963abc37356728c0575d6a62a203102ae6d97953bJeff Sharkey	Alloc* m_pTestee;
702f036c55c0b72ac350e378c12b0571b22bc64dc1Jeff Sharkey};
712f036c55c0b72ac350e378c12b0571b22bc64dc1Jeff Sharkey
722f036c55c0b72ac350e378c12b0571b22bc64dc1Jeff Sharkey} // namespace of mcldtest
732f036c55c0b72ac350e378c12b0571b22bc64dc1Jeff Sharkey
741b8ef7e3165ff9aa52a4905dafc8d0f83e7403f9Jeff Sharkey#endif
751b8ef7e3165ff9aa52a4905dafc8d0f83e7403f9Jeff Sharkey
761b8ef7e3165ff9aa52a4905dafc8d0f83e7403f9Jeff Sharkey