UniqueGCFactoryBaseTest.cpp revision 22add6ff3426df1a85089fe6a6e1597ee3b6f300
15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- UniqueGCFactoryBaseTest.cpp ----------------------------------------===//
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//===----------------------------------------------------------------------===//
9affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/MC/ContextFactory.h>
10affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/MemoryAreaFactory.h>
11affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/TargetSelect.h>
12affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/Path.h>
135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "UniqueGCFactoryBaseTest.h"
145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld;
165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcldtest;
175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Constructor can do set-up work for all test here.
205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoUniqueGCFactoryBaseTest::UniqueGCFactoryBaseTest()
215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
22affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  InitializeAllDiagnostics();
23affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
2422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  m_pConfig = new LinkerConfig("arm-none-linux-gnueabi");
255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Destructor can do clean-up work that doesn't throw exceptions here.
285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoUniqueGCFactoryBaseTest::~UniqueGCFactoryBaseTest()
295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
3022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  delete m_pConfig;
315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// SetUp() will be called immediately before each test.
345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid UniqueGCFactoryBaseTest::SetUp()
355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// TearDown() will be called immediately after each test.
395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid UniqueGCFactoryBaseTest::TearDown()
405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//==========================================================================//
445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Testcases
455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//
465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( UniqueGCFactoryBaseTest, number_constructor ) {
475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	ContextFactory *contextFactory = new ContextFactory(10);
485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	contextFactory->produce("/");
495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	contextFactory->produce("ab/c");
5022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao	ASSERT_TRUE( 2 == contextFactory->size());
515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	delete contextFactory;
525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( UniqueGCFactoryBaseTest, unique_produce ) {
555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	ContextFactory *contextFactory = new ContextFactory(10);
565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	LDContext* context1 = contextFactory->produce("/");
575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	contextFactory->produce("ab/c");
5822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao	ASSERT_TRUE( 2 == contextFactory->size());
595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	LDContext* context2 = contextFactory->produce("/");
605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	ASSERT_EQ( context1, context2 );
615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	delete contextFactory;
625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( UniqueGCFactoryBaseTest, unique_produce2 ) {
655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	ContextFactory *contextFactory = new ContextFactory(10);
665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	LDContext* context1 = contextFactory->produce("abc/def");
675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	contextFactory->produce("ab/c");
6822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao	ASSERT_TRUE( 2 == contextFactory->size());
695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	LDContext* context2 = contextFactory->produce("ttt/../abc/def");
705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	ASSERT_EQ( context1, context2 );
715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	delete contextFactory;
725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( UniqueGCFactoryBaseTest, iterator )
755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{
76affc150dc44fab1911775a49636d0ce85333b634Zonr Chang        sys::fs::Path path1(TOPDIR), path2(TOPDIR);
77affc150dc44fab1911775a49636d0ce85333b634Zonr Chang	path1.append("unittests/test1.txt");
78affc150dc44fab1911775a49636d0ce85333b634Zonr Chang	path2.append("unittests/test2.txt");
79affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	MemoryAreaFactory* memFactory = new MemoryAreaFactory(10);
81affc150dc44fab1911775a49636d0ce85333b634Zonr Chang	MemoryArea* area1 = memFactory->produce(path1, FileHandle::ReadOnly);
82affc150dc44fab1911775a49636d0ce85333b634Zonr Chang	MemoryArea* area2 = memFactory->produce(path2, FileHandle::ReadOnly);
835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	ASSERT_NE( area1, area2);
84affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
85affc150dc44fab1911775a49636d0ce85333b634Zonr Chang	MemoryArea* area3 = memFactory->produce(path1, FileHandle::ReadOnly);
86affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
87affc150dc44fab1911775a49636d0ce85333b634Zonr Chang	ASSERT_EQ(area1, area3);
885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	ASSERT_FALSE( memFactory->empty());
8922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao	ASSERT_TRUE( 2 == memFactory->size());
905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	MemoryAreaFactory::iterator aIter = memFactory->begin();
915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	ASSERT_EQ( area1, &(*aIter));
925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	++aIter;
935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	ASSERT_EQ( area2, &(*aIter));
945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	++aIter;
955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	MemoryAreaFactory::iterator aEnd = memFactory->end();
965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	ASSERT_TRUE( aEnd == aIter);
975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao	delete memFactory;
985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao}
995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
100