--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/srtdecoder/src/testsrtdecoderregionfuncs.cpp Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,332 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "srtdecoder.h"
+#include "srtreader.h"
+#include "testsrtdecoderregionfuncs.h"
+
+_LIT( KSampleSubtitleSRTFilepath1, "c:\\mm\\subtitle1.srt" );
+
+// Implementation of RTestSrtDecoderStep0001
+
+RTestSrtDecoderStep0001::RTestSrtDecoderStep0001()
+ {
+ iTestStepName = _L("MM-MMF-SUBTITLE-SRTDECODER-U-0001-HP");
+ }
+
+TVerdict RTestSrtDecoderStep0001::DoTestStepPreambleL()
+ {
+ InitializeTestStepL(EFalse, KSampleSubtitleSRTFilepath1);
+
+ return EPass;
+ }
+
+TVerdict RTestSrtDecoderStep0001::DoTestStepPostambleL()
+ {
+ UnInitializeTestStep();
+
+ return EPass;
+ }
+
+TVerdict RTestSrtDecoderStep0001::DoTestStepL()
+ {
+ INFO_PRINTF1(_L("Enter DoTestStepL"));
+ TVerdict result = TestCalculateSubtitleRegion();
+ if (EPass != result)
+ {
+ ERR_PRINTF1(_L("Error - RTestSrtDecoderStep0001::TestCalculateSubtitleRegion failed. "));
+ INFO_PRINTF1(_L("Exit DoTestStepL"));
+ return result;
+ }
+
+ result = TestSetVideoPosition();
+ if (EPass != result)
+ {
+ ERR_PRINTF1(_L("Error - RTestSrtDecoderStep0001::TestSetVideoPosition failed. "));
+ INFO_PRINTF1(_L("Exit DoTestStepL"));
+ return result;
+ }
+
+ result = TestStartStop();
+ if (EPass != result)
+ {
+ ERR_PRINTF1(_L("Error - RTestSrtDecoderStep0001::TestStartStop failed. "));
+ INFO_PRINTF1(_L("Exit DoTestStepL"));
+ return result;
+ }
+
+ INFO_PRINTF1(_L("Exit DoTestStepL"));
+ return result;
+ }
+
+
+TVerdict RTestSrtDecoderStep0001::TestCalculateSubtitleRegion()
+ {
+ TVerdict result = EPass;
+ const TInt KSrtSubtitleRegionYFactor = 33;
+ TRect inputRegion;
+ inputRegion.iTl.iX = 1;
+ inputRegion.iTl.iY = 1;
+ inputRegion.iBr.iX = 240;
+ inputRegion.iBr.iY = 160;
+ TInt deltaValue = 24;
+
+ TRect outputRegion;
+ TRect expectedRegion;
+
+ while((inputRegion.iBr.iX > inputRegion.iTl.iX) && (inputRegion.iBr.iY > inputRegion.iTl.iY))
+ {
+ TInt error = iSrtDecoder->CalculateSubtitleRegion(inputRegion, outputRegion);
+ if (KErrNone != error)
+ {
+ return EFail;
+ }
+
+ expectedRegion.SetRect(
+ inputRegion.iTl.iX,
+ inputRegion.iTl.iY + inputRegion.Height() * (100 - KSrtSubtitleRegionYFactor) / 100,
+ inputRegion.iBr.iX,
+ inputRegion.iBr.iY);
+
+ if (expectedRegion != outputRegion)
+ {
+ ERR_PRINTF5(_L("Error - MSubtitleDecoder::CalculateSubtitleRegion failed to handle rect(%d, %d, %d, %d). "),
+ inputRegion.iTl.iX, inputRegion.iTl.iY, inputRegion.iBr.iX, inputRegion.iBr.iY);
+ return EFail;
+ }
+
+ inputRegion.iTl.iX += deltaValue;
+ inputRegion.iTl.iY += deltaValue;
+ inputRegion.iBr.iX -= deltaValue;
+ inputRegion.iBr.iY -= deltaValue;
+ }
+
+ return result;
+ }
+
+TVerdict RTestSrtDecoderStep0001::TestSetVideoPosition()
+ {
+ TVerdict result = EPass;
+
+ TInt64 val = 0;
+
+ for (TInt i = 0; i < 20; i++)
+ {
+ val += 10000000;
+ iSrtDecoder->SetVideoPosition(val);
+ }
+
+ return result;
+ }
+
+TVerdict RTestSrtDecoderStep0001::TestStartStop()
+ {
+ TVerdict result = EPass;
+
+ for (TInt i = 0; i < 10; i++)
+ {
+ iSrtDecoder->Start();
+ iSrtDecoder->Stop();
+ }
+
+ return result;
+ }
+
+// Implementation of RTestSrtDecoderStep0102
+
+RTestSrtDecoderStep0102::RTestSrtDecoderStep0102()
+ {
+ iTestStepName = _L("MM-MMF-SUBTITLE-SRTDECODER-U-0102-HP");
+ }
+
+TVerdict RTestSrtDecoderStep0102::DoTestStepPreambleL()
+ {
+ InitializeTestStepL(EFalse, KSampleSubtitleSRTFilepath1);
+
+ return EPass;
+ }
+
+TVerdict RTestSrtDecoderStep0102::DoTestStepPostambleL()
+ {
+ UnInitializeTestStep();
+
+ return EPass;
+ }
+
+TVerdict RTestSrtDecoderStep0102::DoTestStepL()
+ {
+ INFO_PRINTF1(_L("Enter DoTestStepL"));
+ TVerdict result = EPass;
+
+ result = TestCalculateSubtitleRegion();
+ if (EPass != result)
+ {
+ ERR_PRINTF1(_L("Error - RTestSrtDecoderStep0102::TestCalculateSubtitleRegion failed. "));
+ INFO_PRINTF1(_L("Exit DoTestStepL"));
+ return result;
+ }
+
+ result = TestStartStop();
+ if (EPass != result)
+ {
+ ERR_PRINTF1(_L("Error - RTestSrtDecoderStep0102::TestStartStop failed. "));
+ INFO_PRINTF1(_L("Exit DoTestStepL"));
+ return result;
+ }
+
+ INFO_PRINTF1(_L("Exit DoTestStepL"));
+ return result;
+ }
+
+TVerdict RTestSrtDecoderStep0102::TestCalculateSubtitleRegion()
+ {
+ TInt error = KErrNone;
+ TInt expectedErr = KErrArgument;
+ TRect inputRegion;
+ TRect outputRegion;
+ const TInt KTestSubtitleRegionValueNum = 4;
+ const TInt KTestSubtitleInvalidRegionTypeNum = 5;
+ const TInt KTestSubtitleRegionValues[KTestSubtitleRegionValueNum] = {10, 20, 20, 200};
+ TInt testSubtitleRegionFactors[KTestSubtitleRegionValueNum] = {0, 0, 0, 0};
+ const TInt KTestSubtitleRegionFactorIndex[KTestSubtitleInvalidRegionTypeNum][KTestSubtitleRegionValueNum] =
+ {
+ // test inverted rect
+ {2, 3, 0, 1},
+ // test inverted rect
+ {2, 3, 1, 0},
+ // test a vertical line
+ {1, 0, 2, 3},
+ // test a horizontal line
+ {0, 1, 3, 2},
+ // test a point
+ {0, 0, 0, 0}
+ };
+ TInt i = 0;
+
+ // test 0 values
+ for (i = 0; i < KTestSubtitleRegionValueNum; i++)
+ {
+ inputRegion.SetRect(
+ KTestSubtitleRegionValues[0] * testSubtitleRegionFactors[0],
+ KTestSubtitleRegionValues[1] * testSubtitleRegionFactors[1],
+ KTestSubtitleRegionValues[2] * testSubtitleRegionFactors[2],
+ KTestSubtitleRegionValues[3] * testSubtitleRegionFactors[3]);
+ error = iSrtDecoder->CalculateSubtitleRegion(inputRegion, outputRegion);
+
+ if (expectedErr != error)
+ {
+ ERR_PRINTF5(_L("Error - MSubtitleDecoder::CalculateSubtitleRegion failed to handle invalid rect(%d, %d, %d, %d). "),
+ inputRegion.iTl.iX, inputRegion.iTl.iY, inputRegion.iBr.iX, inputRegion.iBr.iY);
+ return EFail;
+ }
+
+ // initialize factors
+ testSubtitleRegionFactors[i] = 1;
+ }
+
+ // test minus values
+ for (i = 0; i < KTestSubtitleRegionValueNum; i++)
+ {
+ // in each loop, the factors will have different number of minus value.
+ testSubtitleRegionFactors[i] = -1;
+ inputRegion.SetRect(
+ KTestSubtitleRegionValues[0] * testSubtitleRegionFactors[0],
+ KTestSubtitleRegionValues[1] * testSubtitleRegionFactors[1],
+ KTestSubtitleRegionValues[2] * testSubtitleRegionFactors[2],
+ KTestSubtitleRegionValues[3] * testSubtitleRegionFactors[3]);
+ error = iSrtDecoder->CalculateSubtitleRegion(inputRegion, outputRegion);
+
+ if (expectedErr != error)
+ {
+ ERR_PRINTF5(_L("Error - MSubtitleDecoder::CalculateSubtitleRegion failed to handle invalid rect(%d, %d, %d, %d). "),
+ inputRegion.iTl.iX, inputRegion.iTl.iY, inputRegion.iBr.iX, inputRegion.iBr.iY);
+ return EFail;
+ }
+ }
+
+ // Test various invalid rectangles
+ for (i = 0; i < KTestSubtitleInvalidRegionTypeNum; i++)
+ {
+ inputRegion.SetRect(
+ KTestSubtitleRegionValues[KTestSubtitleRegionFactorIndex[i][0]],
+ KTestSubtitleRegionValues[KTestSubtitleRegionFactorIndex[i][1]],
+ KTestSubtitleRegionValues[KTestSubtitleRegionFactorIndex[i][2]],
+ KTestSubtitleRegionValues[KTestSubtitleRegionFactorIndex[i][3]]);
+ error = iSrtDecoder->CalculateSubtitleRegion(inputRegion, outputRegion);
+ if (expectedErr != error)
+ {
+ ERR_PRINTF5(_L("Error - MSubtitleDecoder::CalculateSubtitleRegion failed to handle invalid rect(%d, %d, %d, %d). "),
+ inputRegion.iTl.iX, inputRegion.iTl.iY, inputRegion.iBr.iX, inputRegion.iBr.iY);
+ return EFail;
+ }
+ }
+
+ return EPass;
+ }
+
+TVerdict RTestSrtDecoderStep0102::TestStartStop()
+ {
+ TVerdict result = EPass;
+
+ // Do not call Start before Stop because it will panic
+ // Call Stop() multiple times with and without calling Start() first
+ for (TInt i = 0; i < 10; i++)
+ {
+ if ((0 == i) || (i % 4))
+ {
+ iSrtDecoder->Stop();
+ }
+ else
+ {
+ iSrtDecoder->Start();
+ }
+ }
+
+ return result;
+ }
+
+
+
+// Implementation of RTestSrtDecoderStep0104
+
+RTestSrtDecoderStep0104::RTestSrtDecoderStep0104()
+ {
+ iTestStepName = _L("MM-MMF-SUBTITLE-SRTDECODER-U-0104-HP");
+ }
+
+TVerdict RTestSrtDecoderStep0104::DoTestStepL()
+ {
+ INFO_PRINTF1(_L("Enter DoTestStepL"));
+ TVerdict result = EPass;
+
+ iSrtReader = CSrtReader::NewL(KSampleSubtitleSRTFilepath1);
+
+ User::LeaveIfError(iRbsSession.Connect());
+ CleanupStack::PushL(&iRbsSession);
+ iSrtDecoder = CSrtSubtitleDecoder::NewL(*iSrtReader);
+
+ iSrtDecoder->SetVideoPosition(-100);
+
+ INFO_PRINTF1(_L("Exit DoTestStepL"));
+ return result;
+ }
+
+
+
+
+
+
+
+