예제 #1
0
//! 子クラスタの取得、設定のテスト
TEST_F( ClusterInfoTest, test_setAndGetChildren )
{
	ClusterInfo c;

	ClusterInfo c1;
	c1.addMember( 1 );
	c1.addMember( 100 );

	ClusterInfo c2;
	c2.addMember( 10 );
	c2.addMember( 11 );
	c2.addMember( 12 );

	// 初期状態
	ASSERT_EQ( NULL, c.getChild1() );
	ASSERT_EQ( NULL, c.getChild2() );
	ASSERT_EQ( 0, c.getMembers()->size() );

	// 子クラスタを設定
	c.setChildren( &c1, &c2 );
	ASSERT_EQ( &c1, c.getChild1() );
	ASSERT_EQ( &c2, c.getChild2() );
	ASSERT_EQ( 5, c.getMembers()->size() );
	ASSERT_EQ( 1, c.getMembers()->at( 0 ) );
	ASSERT_EQ( 10, c.getMembers()->at( 1 ) );
	ASSERT_EQ( 11, c.getMembers()->at( 2 ) );
	ASSERT_EQ( 12, c.getMembers()->at( 3 ) );
	ASSERT_EQ( 100, c.getMembers()->at( 4 ) );

	// 両方NULLを設定(メンバは変わらない)
	c.setChildren( NULL, NULL );
	ASSERT_EQ( NULL, c.getChild1() );
	ASSERT_EQ( NULL, c.getChild2() );
	ASSERT_EQ( 5, c.getMembers()->size() );
	ASSERT_EQ( 1, c.getMembers()->at( 0 ) );
	ASSERT_EQ( 10, c.getMembers()->at( 1 ) );
	ASSERT_EQ( 11, c.getMembers()->at( 2 ) );
	ASSERT_EQ( 12, c.getMembers()->at( 3 ) );
	ASSERT_EQ( 100, c.getMembers()->at( 4 ) );

	// 片方NULLのみを設定(メンバは変わる)
	c.setChildren( NULL, &c1 );
	ASSERT_EQ( NULL, c.getChild1() );
	ASSERT_EQ( &c1, c.getChild2() );
	ASSERT_EQ( 2, c.getMembers()->size() );
	ASSERT_EQ( 1, c.getMembers()->at( 0 ) );
	ASSERT_EQ( 100, c.getMembers()->at( 1 ) );

	return;
}