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/MsgHandling.h> 12affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/TargetSelect.h> 13affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/Path.h> 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "UniqueGCFactoryBaseTest.h" 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld; 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcldtest; 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Constructor can do set-up work for all test here. 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoUniqueGCFactoryBaseTest::UniqueGCFactoryBaseTest() 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 23affc150dc44fab1911775a49636d0ce85333b634Zonr Chang InitializeAllDiagnostics(); 24affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 25affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_pLDInfo = new MCLDInfo("arm-none-linux-gnueabi", 10, 10); 26affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_pLineInfo = new DiagnosticLineInfo(); 2767e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao mcld::InitializeDiagnosticEngine(*m_pLDInfo, m_pLineInfo, NULL); 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Destructor can do clean-up work that doesn't throw exceptions here. 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoUniqueGCFactoryBaseTest::~UniqueGCFactoryBaseTest() 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 33cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao delete m_pLDInfo; 34cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao delete m_pLineInfo; 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// SetUp() will be called immediately before each test. 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid UniqueGCFactoryBaseTest::SetUp() 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// TearDown() will be called immediately after each test. 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid UniqueGCFactoryBaseTest::TearDown() 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//==========================================================================// 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Testcases 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( UniqueGCFactoryBaseTest, number_constructor ) { 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ContextFactory *contextFactory = new ContextFactory(10); 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao contextFactory->produce("/"); 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao contextFactory->produce("ab/c"); 545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 2, contextFactory->size()); 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete contextFactory; 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( UniqueGCFactoryBaseTest, unique_produce ) { 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ContextFactory *contextFactory = new ContextFactory(10); 605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDContext* context1 = contextFactory->produce("/"); 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao contextFactory->produce("ab/c"); 625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 2, contextFactory->size()); 635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDContext* context2 = contextFactory->produce("/"); 645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( context1, context2 ); 655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete contextFactory; 665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( UniqueGCFactoryBaseTest, unique_produce2 ) { 695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ContextFactory *contextFactory = new ContextFactory(10); 705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDContext* context1 = contextFactory->produce("abc/def"); 715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao contextFactory->produce("ab/c"); 725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 2, contextFactory->size()); 735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao LDContext* context2 = contextFactory->produce("ttt/../abc/def"); 745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( context1, context2 ); 755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete contextFactory; 765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( UniqueGCFactoryBaseTest, iterator ) 795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 80affc150dc44fab1911775a49636d0ce85333b634Zonr Chang sys::fs::Path path1(TOPDIR), path2(TOPDIR); 81affc150dc44fab1911775a49636d0ce85333b634Zonr Chang path1.append("unittests/test1.txt"); 82affc150dc44fab1911775a49636d0ce85333b634Zonr Chang path2.append("unittests/test2.txt"); 83affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao MemoryAreaFactory* memFactory = new MemoryAreaFactory(10); 85affc150dc44fab1911775a49636d0ce85333b634Zonr Chang MemoryArea* area1 = memFactory->produce(path1, FileHandle::ReadOnly); 86affc150dc44fab1911775a49636d0ce85333b634Zonr Chang MemoryArea* area2 = memFactory->produce(path2, FileHandle::ReadOnly); 875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_NE( area1, area2); 88affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 89affc150dc44fab1911775a49636d0ce85333b634Zonr Chang MemoryArea* area3 = memFactory->produce(path1, FileHandle::ReadOnly); 90affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 91affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_EQ(area1, area3); 925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( memFactory->empty()); 935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 2, memFactory->size()); 945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao MemoryAreaFactory::iterator aIter = memFactory->begin(); 955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( area1, &(*aIter)); 965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ++aIter; 975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( area2, &(*aIter)); 985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ++aIter; 995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao MemoryAreaFactory::iterator aEnd = memFactory->end(); 1005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( aEnd == aIter); 1015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete memFactory; 1025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 104