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