Пример #1
0
/*************************************
 * OnTestResult
 *************************************/
void SHVUnitTestImpl::OnTestResult(SHVEvent* event)
{
SHVEventQueue* q = TestResultShowSubs->Emit(Modules,event);

	AllOK = AllOK && ((SHVTestBase*)event->GetObject())->PerformedOK();

	if (!IsPerforming())
		TestResultShowSubs->Emit(Modules,new SHVEvent(this,-1));

	if (q)
		q->SignalDispatcher();
}
Пример #2
0
void AmInputTarget::HandleEvents(AmEvent* events)
{
	mQueue->Lock();
	if (mQueue->IsPerforming() && IsPerforming()) {
		mQueue->Unlock();
		mQueue->PerformEvents(mTrack, events->CopyChain());
		mQueue->Lock();
	}
	
	if (!mQueue->IsRecording() || !IsRecording()) {
		mQueue->Unlock();
		//printf("Dropping record:\n"); events->PrintChain();
		events->DeleteChain();
		return;
	}
	
	mQueue->Unlock();
	mQueue->RecordEvents(mTrack, events);
}
Пример #3
0
/*************************************
 * OnMenuEvent
 *************************************/
void SHVUnitTestImpl::OnMenuEvent(SHVEvent* event)
{
	if (event->GetSubID() == SHVInt(MenuQuit))
	{
		Modules.CloseApp();
	}
	else if (event->GetSubID() == SHVInt(MenuClearLog))
	{
		FormMain->ClearLog();
	}
	else if (event->GetSubID() == SHVInt(MenuPerformAll))
	{
		PerformTestFromString("all");
	}
	else if (!event->GetSubID().IsNull() && event->GetSubID() < SHVInt((int)ActionMenuItems.CalculateCount()))
	{
	ActionMenuItem* item = ActionMenuItems[event->GetSubID()];

		Performing = true;
		AllOK = true;

		if (item->Group)
		{
			for (size_t i=0; i<item->Group->Tests.CalculateCount(); i++)
				item->Group->Tests[i]->Perform(Modules,item->Flag,TestResultSubs);
		}
		else if (item->Tester)
		{
			item->Tester->Perform(Modules,item->Flag,TestResultSubs);
		}

		Performing = false;
		if (!IsPerforming())
			TestResultShowSubs->EmitNow(Modules,new SHVEvent(this,-1));
	}
}
Пример #4
0
/*************************************
 * PerformTestFromString
 *************************************/
void SHVUnitTestImpl::PerformTestFromString(const SHVString8C str)
{
int dot = str.Find(".");
SHVString8 groupID, testID, actionID;
int flag = 0;
bool allMode, allGroupMode;
SHVListIterator<TestGroupPtr, TestGroup*> testItr(TestGroups);

	Performing = true;
	AllOK = true;

	if (dot > 0)
	{
		testID = str.Mid(dot+1);
		groupID = str.Left(dot);
		
		dot = testID.Find(".");
		if (dot > 0)
		{
			actionID = testID.Mid(dot+1);
			testID = testID.Left(dot);
		}
	}
	else
	{
		groupID = str;
	}
	
	allMode = groupID == "all";
	allGroupMode = testID == "all";

	while (testItr.MoveNext())	
	{
		if (testItr.Get()->Group == groupID || allMode)
		{
			for (size_t i = 0; i<testItr.Get()->Tests.CalculateCount() && (!flag || allMode || allGroupMode); i++)
			{
				if (allMode || allGroupMode || testItr.Get()->Tests[i]->GetID() == testID)
				{
					if (actionID.IsEmpty())
					{
						flag = SHVTestBase::FlagAll;
					}
					else
					{
						for (const SHVTestBase::Action* actions = testItr.Get()->Tests[i]->GetActions(); actions && actions->Flag && !flag; actions++)
						{
							if (actionID == actions->ActionID)
								flag = actions->Flag;
						}
					}
					
					if (flag)
						testItr.Get()->Tests[i]->Perform(Modules,flag,TestResultSubs);
				}
			}
		}
	}
	
	if (!flag)
	{
		SHVConsole::ErrPrintf8("Invalid test : %s\n  For a list of tests, try /list\n", str.GetSafeBuffer());
		AllOK = false;
		if (!Modules.GetConfig().Find(_S("perform"))->ToString().IsEmpty() && Modules.GetConfig().Find(_S("closeafter"))->ToInt().IfNull(0))
		{
			Modules.SetReturnError(AllOK);
			Modules.CloseApp();
		}
	}

	Performing = false;
	if (!IsPerforming() && flag)
		TestResultShowSubs->EmitNow(Modules,new SHVEvent(this,-1));
}