1//===- LinearAllocatorTest.h ----------------------------------------------===//
2//
3//                     The MCLinker Project
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9#ifndef LINEAR_ALLOCATOR_TEST_H
10#define LINEAR_ALLOCATOR_TEST_H
11
12#include <gtest.h>
13#include "mcld/Support/Allocators.h"
14
15namespace mcldtest {
16
17/** \class LinearAllocatorTest
18 *  \brief The testcase for LinearAllocator
19 *
20 *  \see LinearAllocator
21 */
22class LinearAllocatorTest : public ::testing::Test {
23 public:
24  struct Data {
25    Data() : one(1), two(2), three(3), four(4) {}
26
27    Data(unsigned int pOne,
28         unsigned int pTwo,
29         unsigned char pThree,
30         unsigned char pFour) {
31      one = pOne;
32      two = pTwo;
33      three = pThree;
34      four = pFour;
35    }
36
37    ~Data() {
38      one = -1;
39      two = -2;
40      three = -3;
41      four = -4;
42    }
43
44    unsigned int one;
45    unsigned int two;
46    unsigned char three;
47    unsigned char four;
48  };
49
50 public:
51  // Constructor can do set-up work for all test here.
52  LinearAllocatorTest();
53
54  // Destructor can do clean-up work that doesn't throw exceptions here.
55  virtual ~LinearAllocatorTest();
56
57  // SetUp() will be called immediately before each test.
58  virtual void SetUp();
59
60  // TearDown() will be called immediately after each test.
61  virtual void TearDown();
62
63 protected:
64  enum TemplateArgsType { CHUNK_SIZE = 32 };
65  typedef mcld::LinearAllocator<Data, CHUNK_SIZE> Alloc;
66
67 protected:
68  Alloc* m_pTestee;
69};
70
71}  // namespace of mcldtest
72
73#endif
74