15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- RTLinearAllocatorTest.h --------------------------------------------===//
25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//                     The MCLinker Project
45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source
65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details.
75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===//
95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#ifndef RTLINEARALLOCATOR_TEST_H
105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#define RTLINEARALLOCATOR_TEST_H
115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <gtest.h>
135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "mcld/Support/Allocators.h"
145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
1537b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace mcldtest {
165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/** \class RTLinearAllocatorTest
18551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines *  \brief
195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *
20551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines *  \see RTLinearAllocator
215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao */
2237b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass RTLinearAllocatorTest : public ::testing::Test {
2337b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
2437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  // Constructor can do set-up work for all test here.
2537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  RTLinearAllocatorTest();
265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
2737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  // Destructor can do clean-up work that doesn't throw exceptions here.
2837b74a387bb3993387029859c2d9d051c41c724eStephen Hines  virtual ~RTLinearAllocatorTest();
295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3037b74a387bb3993387029859c2d9d051c41c724eStephen Hines  // SetUp() will be called immediately before each test.
3137b74a387bb3993387029859c2d9d051c41c724eStephen Hines  virtual void SetUp();
325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3337b74a387bb3993387029859c2d9d051c41c724eStephen Hines  // TearDown() will be called immediately after each test.
3437b74a387bb3993387029859c2d9d051c41c724eStephen Hines  virtual void TearDown();
355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
3637b74a387bb3993387029859c2d9d051c41c724eStephen Hines public:
3737b74a387bb3993387029859c2d9d051c41c724eStephen Hines  struct Data {
3837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    Data() : one(1), two(2), three(3), four(4) {}
395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
4037b74a387bb3993387029859c2d9d051c41c724eStephen Hines    Data(unsigned int pOne,
4137b74a387bb3993387029859c2d9d051c41c724eStephen Hines         unsigned int pTwo,
4237b74a387bb3993387029859c2d9d051c41c724eStephen Hines         unsigned char pThree,
4337b74a387bb3993387029859c2d9d051c41c724eStephen Hines         unsigned char pFour) {
4437b74a387bb3993387029859c2d9d051c41c724eStephen Hines      one = pOne;
4537b74a387bb3993387029859c2d9d051c41c724eStephen Hines      two = pTwo;
4637b74a387bb3993387029859c2d9d051c41c724eStephen Hines      three = pThree;
4737b74a387bb3993387029859c2d9d051c41c724eStephen Hines      four = pFour;
4837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    }
495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5037b74a387bb3993387029859c2d9d051c41c724eStephen Hines    ~Data() {
5137b74a387bb3993387029859c2d9d051c41c724eStephen Hines      one = -1;
5237b74a387bb3993387029859c2d9d051c41c724eStephen Hines      two = -2;
5337b74a387bb3993387029859c2d9d051c41c724eStephen Hines      three = -3;
5437b74a387bb3993387029859c2d9d051c41c724eStephen Hines      four = -4;
5537b74a387bb3993387029859c2d9d051c41c724eStephen Hines    }
565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
5737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    unsigned int one;
5837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    unsigned int two;
5937b74a387bb3993387029859c2d9d051c41c724eStephen Hines    unsigned char three;
6037b74a387bb3993387029859c2d9d051c41c724eStephen Hines    unsigned char four;
615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao  };
6237b74a387bb3993387029859c2d9d051c41c724eStephen Hines  enum { CHUNK_SIZE = 32 };
635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6437b74a387bb3993387029859c2d9d051c41c724eStephen Hines protected:
6537b74a387bb3993387029859c2d9d051c41c724eStephen Hines  mcld::LinearAllocator<Data, 0>* m_pTestee;
665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao};
675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
6837b74a387bb3993387029859c2d9d051c41c724eStephen Hines}  // namespace of mcldtest
695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#endif
71