sl@0: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0: // All rights reserved.
sl@0: // This component and the accompanying materials are made available
sl@0: // under the terms of "Eclipse Public License v1.0"
sl@0: // which accompanies this distribution, and is available
sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0: //
sl@0: // Initial Contributors:
sl@0: // Nokia Corporation - initial contribution.
sl@0: //
sl@0: // Contributors:
sl@0: //
sl@0: // Description:
sl@0: // The implementation of the validation classes for the CRegistar tests.
sl@0: // 
sl@0: //
sl@0: 
sl@0: // ______________________________________________________________________________
sl@0: //
sl@0: inline TRegistrar_Ctor_TransitionValidator::TRegistrar_Ctor_TransitionValidator(CUnitTestContext& aUTContext)
sl@0: :TTransitionValidator(aUTContext)
sl@0: 	{
sl@0: 	// Do nothing
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_Ctor_TransitionValidator::ValidatePreConditions()
sl@0: 	{
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_Ctor_TransitionValidator::ValidatePostConditions(TTestBedAsyncState /* aAsyncState */)
sl@0: 	{
sl@0: 	if(iUTContext.StateAccessor().InvariantTest(REINTERPRET_CAST(CRegistrar_UnitTestContext&,iUTContext).iRegistrar))
sl@0: 		return EFalse;
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: // ______________________________________________________________________________
sl@0: //
sl@0: inline TRegistrar_Dtor_TransitionValidator::TRegistrar_Dtor_TransitionValidator(CUnitTestContext& aUTContext)
sl@0: :TTransitionValidator(aUTContext)
sl@0: 	{
sl@0: 	// Do nothing
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_Dtor_TransitionValidator::ValidatePreConditions()
sl@0: 	{
sl@0: 	if(iUTContext.StateAccessor().InvariantTest(REINTERPRET_CAST(CRegistrar_UnitTestContext&,iUTContext).iRegistrar))
sl@0: 		return EFalse;
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_Dtor_TransitionValidator::ValidatePostConditions(TTestBedAsyncState /* aAsyncState */)
sl@0: 	{
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: // ______________________________________________________________________________
sl@0: //
sl@0: inline TRegistrar_Default_TransitionValidator::TRegistrar_Default_TransitionValidator(CUnitTestContext& aUTContext)
sl@0: :TTransitionValidator(aUTContext)
sl@0: 	{
sl@0: 	// Do nothing
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_Default_TransitionValidator::ValidatePreConditions()
sl@0: 	{
sl@0: 	if(iUTContext.StateAccessor().InvariantTest(REINTERPRET_CAST(CRegistrar_UnitTestContext&,iUTContext).iRegistrar))
sl@0: 		return EFalse;
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_Default_TransitionValidator::ValidatePostConditions(TTestBedAsyncState /* aAsyncState */)
sl@0: 	{
sl@0: 	if(iUTContext.StateAccessor().InvariantTest(REINTERPRET_CAST(CRegistrar_UnitTestContext&,iUTContext).iRegistrar))
sl@0: 		return EFalse;
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: // ______________________________________________________________________________
sl@0: //
sl@0: inline TRegistrar_RegisterDiscoveryL_TransitionValidator::TRegistrar_RegisterDiscoveryL_TransitionValidator(CUnitTestContext& aUTContext)
sl@0: :TTransitionValidator(aUTContext)
sl@0: 	{
sl@0: 	// Do nothing
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_RegisterDiscoveryL_TransitionValidator::ValidatePreConditions()
sl@0: 	{
sl@0: 	// Only pre condition is that object is constructed
sl@0: 	if(iUTContext.StateAccessor().InvariantTest(REINTERPRET_CAST(CRegistrar_UnitTestContext&,iUTContext).iRegistrar))
sl@0: 		return EFalse;
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_RegisterDiscoveryL_TransitionValidator::ValidatePostConditions(TTestBedAsyncState /* aAsyncState */)
sl@0: 	{
sl@0: 	if(iUTContext.StateAccessor().InvariantTest(REINTERPRET_CAST(CRegistrar_UnitTestContext&, iUTContext).iRegistrar))
sl@0: 		return EFalse;
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: // ______________________________________________________________________________
sl@0: //
sl@0: inline TRegistrar_DriveRemoved_TransitionValidator::TRegistrar_DriveRemoved_TransitionValidator(CUnitTestContext& aUTContext)
sl@0: :TTransitionValidator(aUTContext)
sl@0: 	{
sl@0: 	// Do nothing
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_DriveRemoved_TransitionValidator::ValidatePreConditions()
sl@0: 	{
sl@0: 	if(iUTContext.StateAccessor().InvariantTest(REINTERPRET_CAST(CRegistrar_UnitTestContext&,iUTContext).iRegistrar))
sl@0: 		return EFalse;
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_DriveRemoved_TransitionValidator::ValidatePostConditions(TTestBedAsyncState /* aAsyncState */)
sl@0: 	{
sl@0: 	//Do a list implementations and check that we get a list unavailable error
sl@0: 	CRegistrar_UnitTestContext& context = REINTERPRET_CAST(CRegistrar_UnitTestContext&, iUTContext);
sl@0: 
sl@0: 	TRAPD(error, context.iRegistryData.ListImplementationsL(context.iInterfaceUid));
sl@0: 	if(error != KEComErrNoInterfaceIdentified)
sl@0: 		{
sl@0: 		return EFalse;
sl@0: 		}
sl@0: 
sl@0: 	if(iUTContext.StateAccessor().InvariantTest(context.iRegistrar))
sl@0: 		return EFalse;
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: // ______________________________________________________________________________
sl@0: //
sl@0: inline TRegistrar_CheckRegWhileDiscovering_TransitionValidator::TRegistrar_CheckRegWhileDiscovering_TransitionValidator(CUnitTestContext& aUTContext)
sl@0: :TTransitionValidator(aUTContext)
sl@0: 	{
sl@0: 	// Do nothing
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_CheckRegWhileDiscovering_TransitionValidator::ValidatePreConditions()
sl@0: 	{
sl@0: 	if(iUTContext.StateAccessor().InvariantTest(REINTERPRET_CAST(CRegistrar_UnitTestContext&,iUTContext).iRegistrar))
sl@0: 		return EFalse;
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_CheckRegWhileDiscovering_TransitionValidator::ValidatePostConditions(TTestBedAsyncState /* aAsyncState */)
sl@0: 	{
sl@0: 	//Do a list implementations and check that we get a list unavailable error
sl@0: 	CRegistrar_UnitTestContext& context = REINTERPRET_CAST(CRegistrar_UnitTestContext&, iUTContext);
sl@0: 
sl@0: 	TRAPD(error, context.iRegistryData.ListImplementationsL(context.iInterfaceUid));
sl@0: 	if(error != KEComErrListCurrentlyUnavailable)
sl@0: 		{
sl@0: 		_LIT(KCheckRegLeaveMessage, "In PostCondition - ListImplementationsL left with %d (expected KEComErrListCurrentlyUnavailable)");
sl@0: 		context.DataLogger().LogInformationWithParameters(KCheckRegLeaveMessage, error);
sl@0: 		return EFalse;
sl@0: 		}
sl@0: 
sl@0: 	if(iUTContext.StateAccessor().InvariantTest(context.iRegistrar))
sl@0: 		return EFalse;
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: // ______________________________________________________________________________
sl@0: //
sl@0: inline TRegistrar_NewLHasContent_TransitionValidator::TRegistrar_NewLHasContent_TransitionValidator(CUnitTestContext& aUTContext)
sl@0: :TTransitionValidator(aUTContext)
sl@0: 	{
sl@0: 	// Do nothing
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_NewLHasContent_TransitionValidator::ValidatePreConditions()
sl@0: 	{
sl@0: 	return ETrue;
sl@0: 	}
sl@0: 
sl@0: inline TBool TRegistrar_NewLHasContent_TransitionValidator::ValidatePostConditions(TTestBedAsyncState /* aAsyncState */)
sl@0: 	{
sl@0: 	// If this validation fails it is probably because there are no registered 
sl@0: 	// interfaces.  This is most likely because the idx file is not valid.
sl@0: 
sl@0: 	CRegistrar_UnitTestContext& context = REINTERPRET_CAST(CRegistrar_UnitTestContext&, iUTContext);
sl@0: 
sl@0: 	TRAPD(error, context.iRegistryData.ListImplementationsL(context.iInterfaceUid));
sl@0: 	if(error == KEComErrNoInterfaceIdentified)
sl@0: 		{
sl@0: 		// Then the index hasn't been rebuilt so
sl@0: 		return EFalse;
sl@0: 		}
sl@0: 
sl@0: 	if(iUTContext.StateAccessor().InvariantTest(context.iRegistrar))
sl@0: 		return EFalse;
sl@0: 	return ETrue;
sl@0: 	}
sl@0: