| //===- GCFactoryListTraitsTest.h ------------------------------------------===// |
| // |
| // The MCLinker Project |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| #ifndef MCLD_GC_FACTORY_LIST_TRAITS_TEST_H |
| #define MCLD_GC_FACTORY_LIST_TRAITS_TEST_H |
| |
| #include <gtest.h> |
| |
| #include <mcld/Support/GCFactoryListTraits.h> |
| |
| #include <llvm/ADT/ilist_node.h> |
| |
| #include <mcld/Support/GCFactory.h> |
| |
| namespace mcldtest |
| { |
| |
| /** \class GCFactoryListTraitsTest |
| * \brief |
| * |
| * \see GCFactoryListTraits |
| */ |
| class GCFactoryListTraitsTest : public ::testing::Test |
| { |
| public: |
| /** \class GCFactoryListTraitsTest |
| * \brief Node used in the test |
| * |
| */ |
| class NodeFactory; |
| |
| class Node : public llvm::ilist_node<Node> |
| { |
| friend class NodeFactory; |
| private: |
| unsigned m_Init; |
| unsigned m_Value; |
| |
| private: |
| Node(unsigned pInit) : m_Init(pInit), m_Value(pInit) { } |
| |
| public: |
| unsigned getInitialValue() const { |
| return m_Init; |
| } |
| |
| inline unsigned getValue() const |
| { return m_Value; } |
| |
| inline void setValue(unsigned pValue) |
| { m_Value = pValue; } |
| }; |
| |
| class NodeFactory : public mcld::GCFactory<Node, 0> { |
| public: |
| NodeFactory() : mcld::GCFactory<Node, 0>(16) { } |
| |
| Node *produce(unsigned pInit) { |
| Node *result = allocate(); |
| new (result) Node(pInit); |
| return result; |
| } |
| }; |
| |
| // Constructor can do set-up work for all test here. |
| GCFactoryListTraitsTest(); |
| |
| // Destructor can do clean-up work that doesn't throw exceptions here. |
| virtual ~GCFactoryListTraitsTest(); |
| |
| // SetUp() will be called immediately before each test. |
| virtual void SetUp(); |
| |
| // TearDown() will be called immediately after each test. |
| virtual void TearDown(); |
| |
| const llvm::iplist<Node, mcld::GCFactoryListTraits<Node> > &getNodeList() const |
| { return m_pNodeList; } |
| |
| llvm::iplist<Node, mcld::GCFactoryListTraits<Node> > &getNodeList() |
| { return m_pNodeList; } |
| |
| protected: |
| NodeFactory m_NodeFactory; |
| Node **m_pNodesAlloc; |
| |
| llvm::iplist<Node, mcld::GCFactoryListTraits<Node> > m_pNodeList; |
| }; |
| |
| } // namespace of mcldtest |
| |
| #endif |
| |