void FTestIdentityInterface::Test(UWorld* InWorld, const FOnlineAccountCredentials& InAccountCredentials)
{
	// Toggle the various tests to run
	bRunLoginTest = true;

	AccountCredentials = InAccountCredentials;

	OnlineIdentity = Online::GetIdentityInterface(InWorld, SubsystemName.Len() ? FName(*SubsystemName, FNAME_Find) : NAME_None);
	if (OnlineIdentity.IsValid())
	{
		// Add delegates for the various async calls
		OnlineIdentity->AddOnLoginCompleteDelegate(LocalUserIdx, OnLoginCompleteDelegate);
		
		// kick off next test
		StartNextTest();
	}
	else
	{
		UE_LOG(LogOnline, Warning,
			TEXT("Failed to get online identity interface for %s"), *SubsystemName);

		// done with the test
		FinishTest();
	}
}
void FTestFriendsInterface::StartNextTest()
{
    if (bReadFriendsList)
    {
        OnlineSub->GetFriendsInterface()->ReadFriendsList(0, FriendsListName);
    }
    else if (bAcceptInvites && InvitesToAccept.Num() > 0)
    {
        OnlineSub->GetFriendsInterface()->AcceptInvite(0, *InvitesToAccept[0], FriendsListName);
    }
    else if (bSendInvites && InvitesToSend.Num() > 0)
    {
        OnlineSub->GetFriendsInterface()->SendInvite(0, *InvitesToSend[0], FriendsListName);
    }
    else if (bDeleteFriends && FriendsToDelete.Num() > 0)
    {
        OnlineSub->GetFriendsInterface()->DeleteFriend(0, *FriendsToDelete[0], FriendsListName);
    }
    else if (bDeleteFriendsList)
    {
        OnlineSub->GetFriendsInterface()->DeleteFriendsList(0, FriendsListName);
    }
    else
    {
        FinishTest();
    }

}
void FTestUserInterface::Test(const TArray<FString>& InUserIds)
{
	UE_LOG(LogOnline, Display, TEXT("FTestUserInterface::Test"));

	OnlineSub = IOnlineSubsystem::Get(SubsystemName.Len() ? FName(*SubsystemName, FNAME_Find) : NAME_None);
	if (OnlineSub != NULL &&
		OnlineSub->GetIdentityInterface().IsValid() &&
		OnlineSub->GetUserInterface().IsValid())
	{
		// Add our delegate for the async call
		OnQueryUserInfoCompleteDelegate = FOnQueryUserInfoCompleteDelegate::CreateRaw(this, &FTestUserInterface::OnQueryUserInfoComplete);
		OnlineSub->GetUserInterface()->AddOnQueryUserInfoCompleteDelegate(0, OnQueryUserInfoCompleteDelegate);

		// list of users to query
		for (int32 Idx=0; Idx < InUserIds.Num(); Idx++)
		{
			TSharedPtr<FUniqueNetId> UserId = OnlineSub->GetIdentityInterface()->CreateUniquePlayerId(InUserIds[Idx]);
			if (UserId.IsValid())
			{
				QueryUserIds.Add(UserId.ToSharedRef());
			}
		}

		// kick off next test
		StartNextTest();
	}
	else
	{
		UE_LOG(LogOnline, Warning,
			TEXT("Failed to get user interface for %s"), *SubsystemName);
		
		FinishTest();
	}
}
示例#4
0
 void ScnSimulLive::OnFinishTest(iCore::MsgTimer*)
 {
     //std::cout << "xxxxxxxxxxxxxxxxxxxxxxx Finish SimulLive test xxxxxxxxxxxxxxxxxxxxxxxx\n";
     m_tSubsGenerator.Stop();
     m_prof.Statistic.Finish();
     if (m_prof.m_OutStatistic)
         std::cout << m_prof.Statistic.getAsString();
     FinishTest();
 }
示例#5
0
文件: test15.c 项目: melanj/lesstif
static Boolean
Test2(Widget W)
{
    Dimension h,w;
    Dimension ch,cw,bw,mw;
    Position cx,cy;
    WidgetList kids;
    Cardinal numkids;
    int i;
    XmString string;
    XmFontList font_list;

    fprintf(stderr,"Test 2 starting...\n");
    XtVaGetValues(W,
                  XmNchildren, &kids,
                  XmNnumChildren, &numkids,
                  NULL);
    XtVaSetValues(kids[TOPLABEL],
                  XmNbottomAttachment, XmATTACH_NONE,
                  NULL);
    for (i = 1; i<numkids; i++)
    {
        XtUnmanageChild(kids[i]);
    }
    XtVaGetValues(kids[TOPLABEL],
                  XmNlabelString, &string,
                  XmNfontList, &font_list,
                  XmNborderWidth, &bw,
                  XmNmarginWidth, &mw,
                  XmNwidth, &cw,
                  NULL);
    ExpectedResults[1].width = XmStringWidth(font_list,string) + 2 * mw;
    XmStringFree(string);

    ExpectedResults[0].request_mode = CWWidth | CWHeight;
    ExpectedResults[0].x = 0;
    ExpectedResults[0].y = 0;
    ExpectedResults[0].width = ExpectedResults[1].width + 2 * bw;
    ExpectedResults[0].height = 19;

    ExpectedResults[1].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[1].x = 0;
    ExpectedResults[1].y = 0;
    ExpectedResults[1].height = 17;

    ExpectedResults[2].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[2].request_mode = 0;
    ExpectedResults[2].x = 0;
    ExpectedResults[2].y = 0;
    ExpectedResults[2].width = 0;
    ExpectedResults[2].height = 0;

    printf("Test 2 Unmanage all but the first child\n");
    FinishTest(W);
    return(True);
}
void FTestUserInterface::StartNextTest()
{
	if (bQueryUserInfo)
	{
		OnlineSub->GetUserInterface()->QueryUserInfo(0, QueryUserIds);
	}
	else
	{
		FinishTest();
	}
}
/**
 * Step through the various tests that should be run and initiate the next one
 */
void FTestEntitlementsInterface::StartNextTest()
{
	if (bQueryEntitlements)
	{
		EntitlementsOSS->QueryEntitlements(*UserId, FString());
	}
	else
	{
		FinishTest();
	}
}
void FTestIdentityInterface::StartNextTest()
{
	if (bRunLoginTest)
	{
		// no external account credentials so use internal secret key for login
		OnlineIdentity->Login(LocalUserIdx, AccountCredentials);
	}
	else
	{
		// done with the test
		FinishTest();
	}
}
void FTestEntitlementsInterface::Test(UWorld* InWorld)
{
	IOnlineSubsystem* OSS = Online::GetSubsystem(InWorld, SubsystemName.Len() ? FName(*SubsystemName, FNAME_Find) : NAME_None);

	IdentityOSS = OSS->GetIdentityInterface();
	if (IdentityOSS.IsValid())
	{
		UserId = IdentityOSS->GetUniquePlayerId(LocalUserIdx);
	}
	if (UserId.IsValid() && UserId->IsValid())
	{
		EntitlementsOSS = OSS->GetEntitlementsInterface();
		if (EntitlementsOSS.IsValid())
		{
			// Add delegates for the various async calls
			OnQueryEntitlementsCompleteDelegateHandle = EntitlementsOSS->AddOnQueryEntitlementsCompleteDelegate_Handle(OnQueryEntitlementsCompleteDelegate);

			// kick off next test
			StartNextTest();
		}
		else
		{
			UE_LOG(LogOnline, Warning, TEXT("Entitlement test failed. Failed to get entitlement service API"));

			// done with the test
			FinishTest();
		}
	}
	else
	{
		UE_LOG(LogOnline, Warning, TEXT("Entitlement test failed. No logged in user"));

		// done with the test
		FinishTest();
	}
}
void FTestFriendsInterface::Test(const TArray<FString>& Invites)
{
    OnlineSub = IOnlineSubsystem::Get(SubsystemName.Len() ? FName(*SubsystemName, FNAME_Find) : NAME_None);
    if (OnlineSub != NULL &&
            OnlineSub->GetIdentityInterface().IsValid() &&
            OnlineSub->GetFriendsInterface().IsValid())
    {
        // don't affect default friends list for MCP
        if (SubsystemName.Equals(TEXT("MCP"),ESearchCase::IgnoreCase))
        {
            FriendsListName = TEXT("TestFriends");
        }

        // Add our delegate for the async call
        OnReadFriendsCompleteDelegate = FOnReadFriendsListCompleteDelegate::CreateRaw(this, &FTestFriendsInterface::OnReadFriendsComplete);
        OnAcceptInviteCompleteDelegate = FOnAcceptInviteCompleteDelegate::CreateRaw(this, &FTestFriendsInterface::OnAcceptInviteComplete);
        OnSendInviteCompleteDelegate = FOnSendInviteCompleteDelegate::CreateRaw(this, &FTestFriendsInterface::OnSendInviteComplete);
        OnDeleteFriendCompleteDelegate = FOnDeleteFriendCompleteDelegate::CreateRaw(this, &FTestFriendsInterface::OnDeleteFriendComplete);
        OnDeleteFriendsListCompleteDelegate = FOnDeleteFriendsListCompleteDelegate::CreateRaw(this, &FTestFriendsInterface::OnDeleteFriendsListComplete);

        OnlineSub->GetFriendsInterface()->AddOnReadFriendsListCompleteDelegate(0, OnReadFriendsCompleteDelegate);
        OnlineSub->GetFriendsInterface()->AddOnAcceptInviteCompleteDelegate(0, OnAcceptInviteCompleteDelegate);
        OnlineSub->GetFriendsInterface()->AddOnSendInviteCompleteDelegate(0, OnSendInviteCompleteDelegate);
        OnlineSub->GetFriendsInterface()->AddOnDeleteFriendCompleteDelegate(0, OnDeleteFriendCompleteDelegate);
        OnlineSub->GetFriendsInterface()->AddOnDeleteFriendsListCompleteDelegate(0, OnDeleteFriendsListCompleteDelegate);

        // list of pending users to send invites to
        for (int32 Idx=0; Idx < Invites.Num(); Idx++)
        {
            TSharedPtr<FUniqueNetId> FriendId = OnlineSub->GetIdentityInterface()->CreateUniquePlayerId(Invites[Idx]);
            if (FriendId.IsValid())
            {
                InvitesToSend.Add(FriendId);
            }
        }

        // kick off next test
        StartNextTest();
    }
    else
    {
        UE_LOG(LogOnline, Warning,
               TEXT("Failed to get friends interface for %s"), *SubsystemName);

        FinishTest();
    }
}
示例#11
0
文件: test15.c 项目: melanj/lesstif
static Boolean
Test1(Widget W)
{
    Dimension h,w;
    Dimension ch,cw,bw;
    Position cx,cy;
    WidgetList kids;
    Cardinal numkids;

    XtVaGetValues(W,
                  XmNchildren, &kids,
                  XmNnumChildren, &numkids,
                  XmNwidth, &w,
                  XmNheight, &h,
                  NULL);

    ExpectedResults[0].request_mode = CWWidth | CWHeight;
    ExpectedResults[0].x = 0;
    ExpectedResults[0].y = 0;
    ExpectedResults[0].width = w * 2;
    ExpectedResults[0].height = h * 2;

    XtVaGetValues(kids[TOPLABEL],
                  XmNborderWidth, &bw,
                  NULL);
    ExpectedResults[1].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[1].x = 0;
    ExpectedResults[1].y = 0;
    ExpectedResults[1].width = w * 2 - 2 * bw;
    ExpectedResults[1].height = h * 2 - 4 * bw - 17;

    ExpectedResults[2].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[2].x = 0;
    ExpectedResults[2].y = h * 2 - 2 * bw - 17;
    ExpectedResults[2].width = w * 2 - 2 * bw;
    ExpectedResults[2].height = 17;

    XtVaSetValues(W,
                  XmNwidth, w * 2,
                  XmNheight, h * 2,
                  NULL);

    printf("Test 1 double form height and width\n");
    FinishTest(W);
    return(True);
}
示例#12
0
void AFunctionalTest::Tick(float DeltaSeconds)
{
	// already requested not to tick. 
	if (bIsRunning == false)
	{
		return;
	}

	TimeLeft -= DeltaSeconds;
	if (TimeLimit > 0.f && TimeLeft <= 0.f)
	{
		FinishTest(TimesUpResult, TimesUpMessage.ToString());
	}
	else
	{
		Super::Tick(DeltaSeconds);
	}
}
void FTestFriendsInterface::StartNextTest()
{
	if (bReadFriendsList)
	{
		FOnReadFriendsListComplete Delegate = FOnReadFriendsListComplete::CreateRaw(this, &FTestFriendsInterface::OnReadFriendsComplete);
		OnlineSub->GetFriendsInterface()->ReadFriendsList(0, FriendsListName, Delegate);
	}
	else if (bQueryRecentPlayers)
	{
		if (OnlineSub->GetIdentityInterface().IsValid() &&
			OnlineSub->GetIdentityInterface()->GetUniquePlayerId(0).IsValid())
		{
			OnlineSub->GetFriendsInterface()->QueryRecentPlayers(*OnlineSub->GetIdentityInterface()->GetUniquePlayerId(0), RecentPlayersNamespace);
		}
		bQueryRecentPlayers = false;
	}
	else if (bAcceptInvites && InvitesToAccept.Num() > 0)
	{
		FOnAcceptInviteComplete Delegate = FOnAcceptInviteComplete::CreateRaw(this, &FTestFriendsInterface::OnAcceptInviteComplete);
		OnlineSub->GetFriendsInterface()->AcceptInvite(0, *InvitesToAccept[0], FriendsListName, Delegate);
	}
	else if (bSendInvites && InvitesToSend.Num() > 0)
	{
		FOnSendInviteComplete OnSendInviteCompleteDelegate = FOnSendInviteComplete::CreateRaw(this, &FTestFriendsInterface::OnSendInviteComplete);
		OnlineSub->GetFriendsInterface()->SendInvite(0, *InvitesToSend[0], FriendsListName, OnSendInviteCompleteDelegate);
	}
	else if (bDeleteFriends && FriendsToDelete.Num() > 0)
	{
		OnlineSub->GetFriendsInterface()->DeleteFriend(0, *FriendsToDelete[0], FriendsListName);
	}
	else if (bDeleteFriendsList)
	{
		FOnDeleteFriendsListComplete Delegate = FOnDeleteFriendsListComplete::CreateRaw(this, &FTestFriendsInterface::OnDeleteFriendsListComplete);
		OnlineSub->GetFriendsInterface()->DeleteFriendsList(0, FriendsListName, Delegate);
	}
	else
	{
		FinishTest();
	}

}
void FTestTitleFileInterface::OnReadFileComplete(bool bSuccess, const FString& Filename)
{
	if (bSuccess)
	{
		UE_LOG(LogOnline, Log, TEXT("File read. file=[%s]"), *Filename);
		TArray<uint8> FileContents;
		OnlineTitleFile->GetFileContents(Filename, FileContents);
		UE_LOG(LogOnline, Log, TEXT("File length=%d. file=[%s]"), FileContents.Num(), *Filename);
		OnlineTitleFile->ClearFile(Filename);
	}
	else
	{
		UE_LOG(LogOnline, Log, TEXT("File not read. file=[%s]"), *Filename);
	}
	
	NumPendingFileReads--;
	if (NumPendingFileReads <= 0)
	{
		FinishTest();
	}
}
void FTestTitleFileInterface::OnEnumerateFilesComplete(bool bSuccess)
{
	TArray<FCloudFileHeader> Files;
	OnlineTitleFile->GetFileList(Files);
	UE_LOG(LogOnline, Log, TEXT("Found %i files"), Files.Num());

	NumPendingFileReads = Files.Num();
	if (NumPendingFileReads > 0)
	{
		for (TArray<FCloudFileHeader>::TConstIterator It(Files); It; ++It)
		{
			// kick off reads
			const FCloudFileHeader& CloudFile = *It;
			OnlineTitleFile->ReadFile(CloudFile.DLName);
		}
	}
	else
	{
		// no files to read
		FinishTest();
	}
}
示例#16
0
文件: test15.c 项目: melanj/lesstif
static Boolean
Test5(Widget W)
{
    WidgetList kids;
    Cardinal numkids;

    XtWidgetGeometry Form;
    XtWidgetGeometry Kid1;
    XtWidgetGeometry Kid2;

    fprintf(stderr,"Test 5 starting...\n");
    XtVaGetValues(W,
                  XmNchildren, &kids,
                  XmNnumChildren, &numkids,
                  XmNx, &Form.x,
                  XmNy, &Form.y,
                  XmNwidth, &Form.width,
                  XmNheight, &Form.height,
                  NULL);

    XtVaGetValues(kids[TOPLABEL],
                  XmNx, &Kid1.x,
                  XmNy, &Kid1.y,
                  XmNwidth, &Kid1.width,
                  XmNheight, &Kid1.height,
                  XmNborderWidth, &Kid1.border_width,
                  NULL);

    XtVaGetValues(kids[BOTLABEL],
                  XmNx, &Kid2.x,
                  XmNy, &Kid2.y,
                  XmNwidth, &Kid2.width,
                  XmNheight, &Kid2.height,
                  XmNborderWidth, &Kid2.border_width,
                  NULL);

    XtUnmanageChild(kids[TOPLABEL]);

    XtVaSetValues(W,
                  NULL);

    XtVaSetValues(kids[TOPLABEL],
                  NULL);

    XtVaSetValues(kids[BOTLABEL],
                  XmNwidth, 100,
                  XmNheight, 50,
                  NULL);
    XtManageChild(kids[BOTLABEL]);

    ExpectedResults[0].request_mode = CWWidth | CWHeight;
    ExpectedResults[0].x = Form.x;
    ExpectedResults[0].y = Form.y;
    ExpectedResults[0].width = 100 + 2 * Kid2.border_width;
    ExpectedResults[0].height = 50 + 2 * Kid2.border_width;

    ExpectedResults[1].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[1].x = Kid1.x;
    ExpectedResults[1].y = Kid1.x;
    ExpectedResults[1].width = Kid1.width;
    ExpectedResults[1].height = Kid1.height;

    ExpectedResults[2].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[2].x = Kid2.x;
    ExpectedResults[2].y = Kid2.y;
    ExpectedResults[2].width = 100;
    ExpectedResults[2].height = 50;

    printf("Test 5\n");
    FinishTest(W);
    return(True);
}
示例#17
0
文件: test15.c 项目: melanj/lesstif
static Boolean
Skeleton(Widget W)
{
    WidgetList kids;
    Cardinal numkids;

    XtWidgetGeometry Form;
    XtWidgetGeometry Kid1;
    XtWidgetGeometry Kid2;

    XtVaGetValues(W,
                  XmNchildren, &kids,
                  XmNnumChildren, &numkids,
                  XmNx, &Form.x,
                  XmNy, &Form.y,
                  XmNwidth, &Form.width,
                  XmNheight, &Form.height,
                  NULL);

    XtVaGetValues(kids[TOPLABEL],
                  XmNx, &Kid1.x,
                  XmNy, &Kid1.y,
                  XmNwidth, &Kid1.width,
                  XmNheight, &Kid1.height,
                  XmNborderWidth, &Kid1.border_width,
                  NULL);

    XtVaGetValues(kids[BOTLABEL],
                  XmNx, &Kid2.x,
                  XmNy, &Kid2.y,
                  XmNwidth, &Kid2.width,
                  XmNheight, &Kid2.height,
                  XmNborderWidth, &Kid2.border_width,
                  NULL);

    XtVaSetValues(kids[TOPLABEL],
                  NULL);

    XtVaSetValues(kids[BOTLABEL],
                  NULL);

    ExpectedResults[0].request_mode = CWWidth | CWHeight;
    ExpectedResults[0].x = Form.x;
    ExpectedResults[0].y = Form.y;
    ExpectedResults[0].width = Form.width;
    ExpectedResults[0].height = Form.height;

    ExpectedResults[1].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[1].x = Kid1.x;
    ExpectedResults[1].y = Kid1.x;
    ExpectedResults[1].width = Kid1.width;
    ExpectedResults[1].height = Kid1.height;

    ExpectedResults[2].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[2].x = Kid2.x;
    ExpectedResults[2].y = Kid2.y;
    ExpectedResults[2].width = Kid2.width;
    ExpectedResults[2].height = Kid2.height;

    printf("Test ? a skeleton for more tests (does nothing)\n");
    FinishTest(W);
    return(True);
}
示例#18
0
文件: test15.c 项目: melanj/lesstif
static Boolean
Test3(Widget W)
{
    WidgetList kids;
    Cardinal numkids;

    XtWidgetGeometry Form;
    XtWidgetGeometry Kid1;
    XtWidgetGeometry Kid2;

    fprintf(stderr,"Test 3 starting...\n");
    XtVaGetValues(W,
                  XmNchildren, &kids,
                  XmNnumChildren, &numkids,
                  XmNx, &Form.x,
                  XmNy, &Form.y,
                  XmNwidth, &Form.width,
                  XmNheight, &Form.height,
                  NULL);

    XtVaGetValues(kids[TOPLABEL],
                  XmNx, &Kid1.x,
                  XmNy, &Kid1.y,
                  XmNwidth, &Kid1.width,
                  XmNheight, &Kid1.height,
                  XmNborderWidth, &Kid1.border_width,
                  NULL);

    XtVaGetValues(kids[BOTLABEL],
                  XmNx, &Kid2.x,
                  XmNy, &Kid2.y,
                  XmNwidth, &Kid2.width,
                  XmNheight, &Kid2.height,
                  XmNborderWidth, &Kid2.border_width,
                  NULL);

    XtVaSetValues(kids[TOPLABEL],
                  XmNrightAttachment, XmATTACH_NONE,
                  XmNwidth, Kid1.width * 4,
                  NULL);

    ExpectedResults[0].request_mode = CWWidth | CWHeight;
    ExpectedResults[0].x = 0;
    ExpectedResults[0].y = 0;
    ExpectedResults[0].width = Kid1.width * 4 + 2 * Kid1.border_width;
    ExpectedResults[0].height = Form.height;

    ExpectedResults[1].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[1].x = 0;
    ExpectedResults[1].y = 0;
    ExpectedResults[1].width = Kid1.width * 4;
    ExpectedResults[1].height = Kid1.height;

    ExpectedResults[2].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[2].request_mode = 0;
    ExpectedResults[2].x = 0;
    ExpectedResults[2].y = 0;
    ExpectedResults[2].width = 0;
    ExpectedResults[2].height = 0;

    printf("Test 3\n");
    FinishTest(W);
    return(True);
}
示例#19
0
文件: test15.c 项目: melanj/lesstif
static Boolean
Test4(Widget W)
{
    WidgetList kids;
    Cardinal numkids;

    XtWidgetGeometry Form;
    XtWidgetGeometry Kid1;
    XtWidgetGeometry Kid2;

    fprintf(stderr,"Test 4 starting...\n");
    XtVaGetValues(W,
                  XmNchildren, &kids,
                  XmNnumChildren, &numkids,
                  XmNx, &Form.x,
                  XmNy, &Form.y,
                  XmNwidth, &Form.width,
                  XmNheight, &Form.height,
                  NULL);

    XtVaGetValues(kids[TOPLABEL],
                  XmNx, &Kid1.x,
                  XmNy, &Kid1.y,
                  XmNwidth, &Kid1.width,
                  XmNheight, &Kid1.height,
                  XmNborderWidth, &Kid1.border_width,
                  NULL);

    XtVaGetValues(kids[BOTLABEL],
                  XmNx, &Kid2.x,
                  XmNy, &Kid2.y,
                  XmNwidth, &Kid2.width,
                  XmNheight, &Kid2.height,
                  XmNborderWidth, &Kid2.border_width,
                  NULL);

    XtUnmanageChild(W);
    XtVaSetValues(kids[BOTLABEL],
                  XmNleftAttachment, XmATTACH_FORM,
                  XmNtopAttachment, XmATTACH_FORM,
                  XmNrightAttachment, XmATTACH_NONE,
                  NULL);

    XtVaSetValues(kids[TOPLABEL],
                  XmNrightAttachment, XmATTACH_FORM,
                  XmNleftAttachment, XmATTACH_WIDGET,
                  XmNleftWidget, kids[1],
                  NULL);

    XtManageChild(kids[BOTLABEL]);
    XtManageChild(W);

    XtVaGetValues(kids[BOTLABEL],
                  XmNx, &Kid2.x,
                  XmNy, &Kid2.y,
                  XmNwidth, &Kid2.width,
                  XmNheight, &Kid2.height,
                  XmNborderWidth, &Kid2.border_width,
                  NULL);

    ExpectedResults[0].request_mode = CWWidth | CWHeight;
    ExpectedResults[0].x = Form.x;
    ExpectedResults[0].y = Form.y;
    ExpectedResults[0].width = Form.width;
    ExpectedResults[0].height = Form.height;

    ExpectedResults[1].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[1].x = Kid2.width + 2 * Kid2.border_width;
    ExpectedResults[1].y = Kid1.x;
    ExpectedResults[1].width = Form.width - Kid2.width - 2 * Kid1.border_width - 2 * Kid2.border_width;
    ExpectedResults[1].height = Kid1.height;

    ExpectedResults[2].request_mode = CWX | CWY | CWWidth | CWHeight;
    ExpectedResults[2].x = Kid2.x;
    ExpectedResults[2].y = 0;
    ExpectedResults[2].width = Kid2.width;
    ExpectedResults[2].height = Kid2.height;

    printf("Test 4\n");
    FinishTest(W);
    return(True);
}