//===- BinTreeTest.h ------------------------------------------------------===//
//
//                     The MCLinker Project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef BINTREE_TEST_H
#define BINTREE_TEST_H

#include "mcld/ADT/BinTree.h"

#include <gtest.h>

namespace mcld
{
class BinTree;

} // namespace for mcld

namespace mcldtest
{

/** \class BinTreeTest
 *  \brief Make sure the interface of BinTree , such as insert , traversal , etc..
 *
 *  \see BinTree 
 */
class BinTreeTest : public ::testing::Test
{
public:
	// Constructor can do set-up work for all test here.
	BinTreeTest();

	// Destructor can do clean-up work that doesn't throw exceptions here.
	virtual ~BinTreeTest();

	// SetUp() will be called immediately before each test.
	virtual void SetUp();

	// TearDown() will be called immediately after each test.
	virtual void TearDown();

protected:
	mcld::BinaryTree<int>* m_pTestee;
};

} // namespace of mcldtest

#endif

