sl@0: // Copyright (c) 2007-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: // sl@0: sl@0: #include "tbitbltmasked.h" sl@0: sl@0: CTBitBltMasked::CTBitBltMasked() sl@0: { sl@0: SetTestStepName(KTDirectGdiBitBltMaskedStep); sl@0: } sl@0: sl@0: CTBitBltMasked::~CTBitBltMasked() sl@0: { sl@0: } sl@0: sl@0: /** sl@0: Override of base class pure virtual sl@0: Lists the tests to be run sl@0: */ sl@0: void CTBitBltMasked::RunTestsL() sl@0: { sl@0: if(iUseDirectGdi && !iUseSwDirectGdi) sl@0: { sl@0: // In the event that a test leaves after a BitBlt() or DrawBitmap() has occurred sl@0: // the vgimage cache will need to be reset. sl@0: // This needs to be the first item on the cleanupstack, sl@0: // as some tests perform pushes and pops of bitmaps. sl@0: CleanupStack::PushL(TCleanupItem(ResetCache, iVgImageCache)); sl@0: } sl@0: sl@0: BeginMaskIteration(); sl@0: // to minimize tests call number these tests are processed only for one mask sl@0: if(!iLargeTarget) sl@0: { sl@0: SetTestStepID(_L("GRAPHICS-DIRECTGDI-BITBLTMASKED-0003")); sl@0: TestInvalidParametersL(); sl@0: RecordTestResultL(); sl@0: SetTestStepID(_L("GRAPHICS-DIRECTGDI-BITBLTMASKED-0004")); sl@0: TestSourceBitmapCloningL(); sl@0: RecordTestResultL(); sl@0: SetTestStepID(_L("GRAPHICS-DIRECTGDI-BITBLTMASKED-0005")); sl@0: TestMaskCloningL(); sl@0: RecordTestResultL(); sl@0: } sl@0: do sl@0: { sl@0: if(!iLargeTarget) sl@0: { sl@0: iTestParams.iDoCompressed = ETrue; sl@0: SetTestStepID(_L("GRAPHICS-DIRECTGDI-BITBLTMASKED-0001")); sl@0: TestBasicL(); sl@0: RecordTestResultL(); sl@0: iTestParams.iDoCompressed = EFalse; sl@0: SetTestStepID(_L("GRAPHICS-DIRECTGDI-BITBLTMASKED-0006")); sl@0: TestDrawModeL(); sl@0: RecordTestResultL(); sl@0: SetTestStepID(_L("GRAPHICS-DIRECTGDI-BITBLTMASKED-0007")); sl@0: TestWithSameBitmapsL(); sl@0: RecordTestResultL(); sl@0: SetTestStepID(_L("GRAPHICS-DIRECTGDI-BITBLTMASKED-0008")); sl@0: TestSetOriginL(); sl@0: RecordTestResultL(); sl@0: } sl@0: else sl@0: { sl@0: SetTestStepID(_L("GRAPHICS-DIRECTGDI-BITBLTMASKED-0002")); sl@0: TestPositioningL(); sl@0: RecordTestResultL(); sl@0: } sl@0: } sl@0: while(NextMaskIteration()); sl@0: sl@0: if(iUseDirectGdi && !iUseSwDirectGdi) sl@0: { sl@0: CleanupStack::PopAndDestroy(iVgImageCache); sl@0: } sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID sl@0: GRAPHICS-DIRECTGDI-BITBLTMASKED-0001 sl@0: sl@0: @SYMPREQ sl@0: PREQ39 sl@0: sl@0: @SYMREQ sl@0: REQ9198 sl@0: REQ9204 sl@0: REQ9195 sl@0: REQ9201 sl@0: REQ9202 sl@0: REQ9222 sl@0: REQ9223 sl@0: REQ9236 sl@0: REQ9237 sl@0: sl@0: @SYMTestCaseDesc sl@0: Bit blitting with masking basic functionality. sl@0: sl@0: @SYMTestPriority sl@0: Critical sl@0: sl@0: @SYMTestStatus sl@0: Implemented sl@0: sl@0: @SYMTestActions sl@0: Test bit blitting with masking for basic and valid parameters. sl@0: sl@0: @SYMTestExpectedResults sl@0: Source bitmap should be copied into target area. Basic or inverted sl@0: masking should be considered. Valid bitmap should be created. This sl@0: bitmap should be the same as a reference bitmap. sl@0: */ sl@0: void CTBitBltMasked::TestBasicL() sl@0: { sl@0: _LIT(KTestName, "BitBltMasked-Basic"); sl@0: _LIT(KTestNameNegative, "BitBltMasked-Basic-NegativeMaskPosition"); sl@0: if(!iRunningOomTests) sl@0: { sl@0: INFO_PRINTF1(KTestName); sl@0: } sl@0: sl@0: ResetGc(); sl@0: CFbsBitmap* bitmap; sl@0: CFbsBitmap* mask; sl@0: if(iTestParams.iDoCompressed) sl@0: { sl@0: bitmap = iCompressedBitmap; sl@0: mask = iCompressedMaskL8; sl@0: } sl@0: else sl@0: { sl@0: bitmap = iCheckedBoardBitmap2; sl@0: mask = iCurrentMask1; sl@0: } sl@0: sl@0: TRect bmpRect(TPoint(0, 0), bitmap->SizeInPixels()); sl@0: if(iMaskPixelFormat == EUidPixelFormatL_1) sl@0: { sl@0: iGc->BitBltMasked(TPoint(20, 20), *bitmap, bmpRect, *mask, iInvertMask); sl@0: iGc->BitBltMasked(TPoint(20, 20), *bitmap, bmpRect, *mask, ETrue); sl@0: } sl@0: else sl@0: { sl@0: iGc->BitBltMasked(TPoint(20, 20), *bitmap, bmpRect, *mask, TPoint(0, 0)); sl@0: } sl@0: TESTNOERROR(iGc->GetError()); sl@0: if(!iTestParams.iDoCompressed) sl@0: WriteTargetOutput(KTestName()); sl@0: sl@0: // negative mask position sl@0: iGc->BitBltMasked(TPoint(-35, 180), *bitmap, bmpRect, *iMask1L8, TPoint(-1, -1)); sl@0: TESTNOERROR(iGc->GetError()); sl@0: sl@0: // mask position greater than mask size sl@0: iGc->BitBltMasked(TPoint(-35, 200), *bitmap, bmpRect, *iMask1L8, iMask1L8->SizeInPixels().AsPoint()); sl@0: CheckErrorsL(KErrNone, KErrArgument, (TText8*)__FILE__, __LINE__); sl@0: sl@0: if(!iTestParams.iDoCompressed) sl@0: TESTNOERRORL(WriteTargetOutput(KTestNameNegative())); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID sl@0: GRAPHICS-DIRECTGDI-BITBLTMASKED-0002 sl@0: sl@0: @SYMPREQ sl@0: PREQ39 sl@0: sl@0: @SYMREQ sl@0: REQ9197 sl@0: REQ9198 sl@0: REQ9204 sl@0: REQ9195 sl@0: REQ9201 sl@0: REQ9202 sl@0: REQ9222 sl@0: REQ9223 sl@0: REQ9236 sl@0: REQ9237 sl@0: sl@0: @SYMTestCaseDesc sl@0: Various combinations of destination positions, source position and size sl@0: of a bitmap are tested. Test also covers mask alignment, tiling and boundary sl@0: parameters. sl@0: sl@0: @SYMTestPriority sl@0: Critical sl@0: sl@0: @SYMTestStatus sl@0: Implemented sl@0: sl@0: @SYMTestActions sl@0: Covers the whole target bitmap starting from TPoint(-30,-30) with staggered blits of a small 8x8 bitmap. sl@0: Test positioning functionality of BitBltMasked() methods. Test boundary sl@0: conditions, tiling and clipping to surface area. sl@0: sl@0: @SYMTestExpectedResults sl@0: */ sl@0: void CTBitBltMasked::TestPositioningL() sl@0: { sl@0: _LIT(KTestName, "BitBltMasked-Positioning"); sl@0: if(!iRunningOomTests) sl@0: { sl@0: INFO_PRINTF1(KTestName); sl@0: } sl@0: iTestParams.iDoCompressed = ETrue; sl@0: TestPositioningBaseL(KTestName(), EBitBltMasked); sl@0: iTestParams.iDoCompressed = EFalse; sl@0: TestPositioningBaseL(KTestName(), EBitBltMasked); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID sl@0: GRAPHICS-DIRECTGDI-BITBLTMASKED-0003 sl@0: sl@0: @SYMPREQ sl@0: PREQ39 sl@0: sl@0: @SYMREQ sl@0: REQ9197 sl@0: REQ9198 sl@0: REQ9204 sl@0: REQ9195 sl@0: REQ9222 sl@0: REQ9223 sl@0: REQ9236 sl@0: REQ9237 sl@0: sl@0: @SYMTestCaseDesc sl@0: Calling BitBltMasked() method with invalid parameters sl@0: sl@0: @SYMTestPriority sl@0: Critical sl@0: sl@0: @SYMTestStatus sl@0: Implemented sl@0: sl@0: @SYMTestActions sl@0: Invalid source rect: sl@0: - TRect(-30, -30, -10, -10); sl@0: - TRect(bmpWidth+10, bmpHeight+10, bmpWidth+20, bmpHeight+20); sl@0: - TRect(bmpWidth, bmpHeight, 0, 0); sl@0: - TRect(-10, -10, -30, -30); sl@0: - TRect(0, 0, 0, 0); sl@0: Invalid mask (aMaskBitmap): sl@0: - zero size mask sl@0: - not initialized mask sl@0: Mask position greater than mask size: aMaskPt = TPoint(mask_width, mask_height) sl@0: Invalid source bitmap: sl@0: - zero size bitmap sl@0: - not initialised bitmap sl@0: sl@0: @SYMTestExpectedResults sl@0: Function should detect invalid parameters and return. Nothing should be drawn sl@0: in a target area. sl@0: */ sl@0: void CTBitBltMasked::TestInvalidParametersL() sl@0: { sl@0: _LIT(KTestName, "BitBltMasked-InvalidParameters"); sl@0: if(!iRunningOomTests) sl@0: { sl@0: INFO_PRINTF1(KTestName); sl@0: } sl@0: TestInvalidParametersBaseL(KTestName(), EBitBltMasked); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID sl@0: GRAPHICS-DIRECTGDI-BITBLTMASKED-0004 sl@0: sl@0: @SYMPREQ sl@0: PREQ39 sl@0: sl@0: @SYMREQ sl@0: REQ9197 sl@0: REQ9204 sl@0: REQ9195 sl@0: REQ9201 sl@0: REQ9202 sl@0: REQ9222 sl@0: REQ9223 sl@0: REQ9236 sl@0: REQ9237 sl@0: sl@0: @SYMTestCaseDesc sl@0: Tests that masked bitmaps are drawn correctly if they sl@0: are deleted immediately after BitBltMasked() is called, but before Finish() is called. sl@0: sl@0: @SYMTestPriority sl@0: Critical sl@0: sl@0: @SYMTestStatus sl@0: Implemented sl@0: sl@0: @SYMTestActions sl@0: Set valid mask parameters (see BitBltMasked-Basic). sl@0: For test description see BitBlt-SourceBitmapCloning. sl@0: sl@0: @SYMTestExpectedResults sl@0: Source bitmap should be copied into target area. Memory leaks should not sl@0: be created. Valid bitmap should be created. This bitmap should be sl@0: the same as a reference bitmap. sl@0: */ sl@0: void CTBitBltMasked::TestSourceBitmapCloningL() sl@0: { sl@0: _LIT(KTestName, "BitBltMasked-SourceBitmapCloning"); sl@0: if(!iRunningOomTests) sl@0: { sl@0: INFO_PRINTF1(KTestName); sl@0: } sl@0: iTestParams.iDoCompressed = ETrue; sl@0: TestSourceBitmapCloningBaseL(KTestName(), EBitBltMasked); sl@0: iTestParams.iDoCompressed = EFalse; sl@0: TestSourceBitmapCloningBaseL(KTestName(), EBitBltMasked); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID sl@0: GRAPHICS-DIRECTGDI-BITBLTMASKED-0005 sl@0: sl@0: @SYMPREQ sl@0: PREQ39 sl@0: sl@0: @SYMREQ sl@0: REQ9197 sl@0: REQ9204 sl@0: REQ9195 sl@0: REQ9201 sl@0: REQ9202 sl@0: REQ9222 sl@0: REQ9223 sl@0: REQ9236 sl@0: REQ9237 sl@0: sl@0: @SYMTestCaseDesc sl@0: Tests that masked bitmaps are drawn correctly if the mask sl@0: is deleted immediately after BitBltMasked() is called, but before Finish() is called. sl@0: sl@0: @SYMTestPriority sl@0: Critical sl@0: sl@0: @SYMTestStatus sl@0: Implemented sl@0: sl@0: @SYMTestActions sl@0: 1. Invoke the BitBltMasked() method with valid parameters (see BitBltMasked-Basic). sl@0: 2. Right after returning from BitBltMasked() call, destroy the source mask (aMaskBitmap). sl@0: 3. Call the BitBltMasked() method again with the same mask parameter. sl@0: Repeat p. 1-3 a few times. sl@0: sl@0: @SYMTestExpectedResults sl@0: Source bitmap should be copied into target area and should be correctly masked. sl@0: Memory leaks should not be created. Valid bitmap should be created. This bitmap sl@0: should be the same as a reference bitmap. sl@0: */ sl@0: void CTBitBltMasked::TestMaskCloningL() sl@0: { sl@0: _LIT(KTestName, "BitBltMasked-MaskCloning"); sl@0: if(!iRunningOomTests) sl@0: { sl@0: INFO_PRINTF1(KTestName); sl@0: } sl@0: iTestParams.iDoCompressed = ETrue; sl@0: TestMaskCloningBaseL(KTestName(), EBitBltMasked); sl@0: iTestParams.iDoCompressed = EFalse; sl@0: TestMaskCloningBaseL(KTestName(), EBitBltMasked); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID sl@0: GRAPHICS-DIRECTGDI-BITBLTMASKED-0006 sl@0: sl@0: @SYMPREQ sl@0: PREQ39 sl@0: sl@0: @SYMREQ sl@0: REQ9198 sl@0: REQ9204 sl@0: REQ9195 sl@0: REQ9201 sl@0: REQ9202 sl@0: REQ9222 sl@0: REQ9223 sl@0: REQ9236 sl@0: REQ9237 sl@0: sl@0: @SYMTestCaseDesc sl@0: Test correctness of bit blitting with mask in all possible draw modes. sl@0: sl@0: @SYMTestPriority sl@0: Critical sl@0: sl@0: @SYMTestStatus sl@0: Implemented sl@0: sl@0: @SYMTestActions sl@0: Set valid parameters (see BitBltMasked-Basic). sl@0: Use the semi-transparent source bitmap (iCheckedBoardWithAlphaBitmap). sl@0: Set drawmode to EDrawModePEN and call the methods. sl@0: Set drawmode to EDrawModeWriteAlpha and call the methods. sl@0: sl@0: @SYMTestExpectedResults sl@0: Semi-transparent (for EDrawModePEN) and opaque (for EDrawModeWriteAlpha) sl@0: should be copied into rendering target. Valid bitmap should be created. sl@0: This bitmap should be the same as a reference bitmap. sl@0: */ sl@0: void CTBitBltMasked::TestDrawModeL() sl@0: { sl@0: _LIT(KTestName, "BitBltMasked-DrawMode"); sl@0: if(!iRunningOomTests) sl@0: { sl@0: INFO_PRINTF1(KTestName); sl@0: } sl@0: ResetGc(); sl@0: sl@0: TSize bmpSize(iCheckedBoardWithAlphaBitmap->SizeInPixels()); sl@0: sl@0: TInt halfHeight = (bmpSize.iHeight >> 1); sl@0: TInt quarterWidth = (bmpSize.iWidth >> 2); sl@0: TInt y1 = halfHeight - (bmpSize.iHeight >> 2); sl@0: TSize vertRectSize (quarterWidth, bmpSize.iHeight); sl@0: TSize horizRectSize (bmpSize.iWidth, halfHeight); sl@0: sl@0: // EDrawModeWriteAlpha is not supported in the following modes sl@0: // This is tested under invalid parameter tests. sl@0: if (!((iMaskPixelFormat == EUidPixelFormatL_8) && sl@0: ((iTestParams.iSourcePixelFormat == EUidPixelFormatARGB_8888) || sl@0: (iTestParams.iSourcePixelFormat == EUidPixelFormatARGB_8888_PRE)))) sl@0: { sl@0: // Render column to left sl@0: iGc->SetDrawMode(DirectGdi::EDrawModeWriteAlpha); sl@0: iGc->BitBltMasked( sl@0: TPoint(0, 0), sl@0: *iCheckedBoardWithAlphaBitmap, sl@0: TRect(TPoint(0, 0), vertRectSize), sl@0: *iCurrentMask2, sl@0: TPoint(0, 0)); sl@0: } sl@0: sl@0: // Render row in center sl@0: iGc->SetDrawMode(DirectGdi::EDrawModePEN); sl@0: iGc->BitBltMasked( sl@0: TPoint(0, y1), sl@0: *iCheckedBoardWithAlphaBitmap, sl@0: TRect(TPoint(0, 0), horizRectSize), sl@0: *iCurrentMask2, sl@0: TPoint(0, 0)); sl@0: sl@0: // EDrawModeWriteAlpha is not supported in the following modes sl@0: // This is tested under invalid parameter tests. sl@0: if (!((iMaskPixelFormat == EUidPixelFormatL_8) && sl@0: ((iTestParams.iSourcePixelFormat == EUidPixelFormatARGB_8888) || sl@0: (iTestParams.iSourcePixelFormat == EUidPixelFormatARGB_8888_PRE)))) sl@0: { sl@0: // Render column to right sl@0: iGc->SetDrawMode(DirectGdi::EDrawModeWriteAlpha); sl@0: iGc->BitBltMasked( sl@0: TPoint(bmpSize.iWidth - quarterWidth, 0), sl@0: *iCheckedBoardWithAlphaBitmap, sl@0: TRect(TPoint(0, 0), vertRectSize), sl@0: *iCurrentMask2, sl@0: TPoint(0, 0)); sl@0: } sl@0: sl@0: TESTNOERRORL(iGc->GetError()); sl@0: sl@0: TESTNOERRORL(WriteTargetOutput(KTestName())); sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID sl@0: GRAPHICS-DIRECTGDI-BITBLTMASKED-0007 sl@0: sl@0: @SYMPREQ sl@0: PREQ39 sl@0: sl@0: @SYMREQ sl@0: REQ9198 sl@0: REQ9204 sl@0: REQ9195 sl@0: REQ9201 sl@0: REQ9202 sl@0: REQ9222 sl@0: REQ9223 sl@0: REQ9236 sl@0: REQ9237 sl@0: sl@0: @SYMTestCaseDesc sl@0: Test the basic functionality of bit blitting with masking. sl@0: sl@0: @SYMTestPriority sl@0: Critical sl@0: sl@0: @SYMTestStatus sl@0: Implemented sl@0: sl@0: @SYMTestActions sl@0: Test bit blitting with masking for same source and mask bitmaps. sl@0: sl@0: @SYMTestExpectedResults sl@0: Source bitmap should be copied into target area. Basic or inverted sl@0: masking should be considered. Valid bitmap should be created. This sl@0: bitmap should be the same as a reference bitmap. sl@0: */ sl@0: void CTBitBltMasked::TestWithSameBitmapsL() sl@0: { sl@0: _LIT(KTestName, "BitBltMasked-SameBitmaps"); sl@0: ResetGc(); sl@0: TRect bmpRect1(TPoint(0, 0), iBlackWhiteBitmap->SizeInPixels()); sl@0: iGc->SetOrigin(TPoint(30, 30)); sl@0: iGc->BitBltMasked(TPoint(0, 0), *iBlackWhiteBitmap, bmpRect1, *iBlackWhiteBitmap, ETrue); sl@0: iGc->BitBltMasked(TPoint(0, 0), *iBlackWhiteBitmap, bmpRect1, *iBlackWhiteBitmap, EFalse); sl@0: TESTNOERRORL(iGc->GetError()); sl@0: //Write target only if image is not empty. BitGDI is producing white images when Mask pixel format is EUidPixelFormatL_8 sl@0: TBool pass = TestTargetL(KRgbWhite); sl@0: if(!pass) sl@0: { sl@0: TESTNOERRORL(WriteTargetOutput(KTestName())); sl@0: } sl@0: } sl@0: sl@0: /** sl@0: @SYMTestCaseID sl@0: GRAPHICS-DIRECTGDI-BITBLTMASKED-0008 sl@0: sl@0: @SYMPREQ sl@0: PREQ39 sl@0: sl@0: @SYMREQ sl@0: REQ9198 sl@0: REQ9204 sl@0: REQ9195 sl@0: REQ9201 sl@0: REQ9202 sl@0: REQ9222 sl@0: REQ9223 sl@0: REQ9236 sl@0: REQ9237 sl@0: sl@0: @SYMTestCaseDesc sl@0: Test that BitBltMasked() performs correctly when it is called after SetOrigin(). sl@0: sl@0: @SYMTestPriority sl@0: Critical sl@0: sl@0: @SYMTestStatus sl@0: Implemented sl@0: sl@0: @SYMTestActions sl@0: Call SetOrigin(). sl@0: Call BitBltMasked(). sl@0: sl@0: @SYMTestExpectedResults sl@0: Source bitmap should be copied into target area. Basic or inverted sl@0: masking should be considered. Valid bitmap should be created. This sl@0: bitmap should be the same as a reference bitmap. sl@0: */ sl@0: void CTBitBltMasked::TestSetOriginL() sl@0: { sl@0: _LIT(KTestName, "BitBltMasked-SetOrigin"); sl@0: _LIT(KTestNameNegative, "BitBltMasked-SetOrigin-NegativeMaskPosition"); sl@0: sl@0: // Only do test for one pixel format to cut down on the number of images produced sl@0: // as this is just a positional test and we don't need to test for all pixel formats. sl@0: if (!((iTestParams.iTargetPixelFormat == EUidPixelFormatRGB_565) && (iTestParams.iSourcePixelFormat == EUidPixelFormatRGB_565))) sl@0: { sl@0: return; sl@0: } sl@0: sl@0: if(!iRunningOomTests) sl@0: { sl@0: INFO_PRINTF1(KTestName); sl@0: } sl@0: sl@0: ResetGc(); sl@0: CFbsBitmap* bitmap = iCheckedBoardBitmap2; sl@0: CFbsBitmap* mask = iCurrentMask1; sl@0: sl@0: TRect bmpRect(TPoint(0, 0), bitmap->SizeInPixels()); sl@0: iGc->SetOrigin(TPoint(-35, 80)); sl@0: if(iMaskPixelFormat == EUidPixelFormatL_1) sl@0: { sl@0: iGc->BitBltMasked(TPoint(55, -60), *bitmap, bmpRect, *mask, iInvertMask); sl@0: iGc->BitBltMasked(TPoint(55, -60), *bitmap, bmpRect, *mask, ETrue); sl@0: } sl@0: else sl@0: { sl@0: iGc->BitBltMasked(TPoint(55, -60), *bitmap, bmpRect, *mask, TPoint(0, 0)); sl@0: } sl@0: TESTNOERROR(iGc->GetError()); sl@0: TESTNOERRORL(WriteTargetOutput(KTestName())); sl@0: sl@0: // negative mask position sl@0: iGc->BitBltMasked(TPoint(0, 100), *bitmap, bmpRect, *iMask1L8, TPoint(-1, -1)); sl@0: TESTNOERROR(iGc->GetError()); sl@0: sl@0: // mask position greater than mask size sl@0: iGc->BitBltMasked(TPoint(0, 120), *bitmap, bmpRect, *iMask1L8, iMask1L8->SizeInPixels().AsPoint()); sl@0: CheckErrorsL(KErrNone, KErrArgument, (TText8*)__FILE__, __LINE__); sl@0: sl@0: TESTNOERRORL(WriteTargetOutput(KTestNameNegative())); sl@0: } sl@0: sl@0: