sl@0: // Copyright (c) 2001-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 "CEscapeUtilsTest.h" sl@0: sl@0: #include sl@0: sl@0: #include "EscapeUtilsTestCommon.h" sl@0: #include "EscapeUtilsTests.h" sl@0: #include sl@0: sl@0: CEscapeUtilsTest* CEscapeUtilsTest::NewLC(CIpuTestHarness* aTestHarness) sl@0: { sl@0: CEscapeUtilsTest* self = new (ELeave) CEscapeUtilsTest(aTestHarness); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: return self; sl@0: } sl@0: sl@0: CEscapeUtilsTest* CEscapeUtilsTest::NewL(CIpuTestHarness* aTestHarness) sl@0: { sl@0: CEscapeUtilsTest* self = CEscapeUtilsTest::NewLC(aTestHarness); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: CEscapeUtilsTest::CEscapeUtilsTest(CIpuTestHarness* aTestHarness) sl@0: : iTestHarness(aTestHarness) sl@0: { sl@0: } sl@0: sl@0: void CEscapeUtilsTest::ConstructL() sl@0: { sl@0: } sl@0: sl@0: CEscapeUtilsTest::~CEscapeUtilsTest() sl@0: { sl@0: } sl@0: sl@0: void CEscapeUtilsTest::DoTestsL() sl@0: { sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded0, KEscapeEncoded0_auth, EscapeUtils::EEscapeAuth); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded0, KEscapeEncoded0_path, EscapeUtils::EEscapePath); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded0, KEscapeEncoded0_query, EscapeUtils::EEscapeQuery); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded0, KEscapeEncoded0_normal, EscapeUtils::EEscapeNormal); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded0, KEscapeEncoded0_url, EscapeUtils::EEscapeUrlEncoded); sl@0: sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded1, KEscapeEncoded1_auth, EscapeUtils::EEscapeAuth); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded1, KEscapeEncoded1_path, EscapeUtils::EEscapePath); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded1, KEscapeEncoded1_query, EscapeUtils::EEscapeQuery); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded1, KEscapeEncoded1_normal, EscapeUtils::EEscapeNormal); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded1, KEscapeEncoded1_url, EscapeUtils::EEscapeUrlEncoded); sl@0: sl@0: sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded0_auth, KEscapeDecoded0); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded0_path, KEscapeDecoded0); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded0_query, KEscapeDecoded0); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded0_normal, KEscapeDecoded0); sl@0: sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded1_auth, KEscapeDecoded1); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded1_path, KEscapeDecoded1); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded1_query, KEscapeDecoded1); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded1_normal, KEscapeDecoded1); sl@0: sl@0: // Test cases for section 2.9.1.2 // sl@0: sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded2, KEscapeEncoded2_auth, EscapeUtils::EEscapeAuth); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded2, KEscapeEncoded2_path, EscapeUtils::EEscapePath); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded2, KEscapeEncoded2_query, EscapeUtils::EEscapeQuery); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded2, KEscapeEncoded2_normal, EscapeUtils::EEscapeNormal); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded2, KEscapeEncoded2_url, EscapeUtils::EEscapeUrlEncoded); sl@0: sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded3, KEscapeEncoded3_auth, EscapeUtils::EEscapeAuth); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded3, KEscapeEncoded3_path, EscapeUtils::EEscapePath); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded3, KEscapeEncoded3_query, EscapeUtils::EEscapeQuery); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded3, KEscapeEncoded3_normal, EscapeUtils::EEscapeNormal); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded3, KEscapeEncoded3_url, EscapeUtils::EEscapeUrlEncoded); sl@0: sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded4, KEscapeEncoded4_auth, EscapeUtils::EEscapeAuth); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded4, KEscapeEncoded4_path, EscapeUtils::EEscapePath); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded4, KEscapeEncoded4_query, EscapeUtils::EEscapeQuery); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded4, KEscapeEncoded4_normal, EscapeUtils::EEscapeNormal); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded4, KEscapeEncoded4_url, EscapeUtils::EEscapeUrlEncoded); sl@0: sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded5, KEscapeEncoded5_auth, EscapeUtils::EEscapeAuth); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded5, KEscapeEncoded5_path, EscapeUtils::EEscapePath); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded5, KEscapeEncoded5_query, EscapeUtils::EEscapeQuery); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded5, KEscapeEncoded5_normal, EscapeUtils::EEscapeNormal); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded5, KEscapeEncoded5_url, EscapeUtils::EEscapeUrlEncoded); sl@0: sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded6, KEscapeEncoded6_auth, EscapeUtils::EEscapeAuth); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded6, KEscapeEncoded6_path, EscapeUtils::EEscapePath); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded6, KEscapeEncoded6_query, EscapeUtils::EEscapeQuery); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded6, KEscapeEncoded6_normal, EscapeUtils::EEscapeNormal); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded6, KEscapeEncoded6_url, EscapeUtils::EEscapeUrlEncoded); sl@0: sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded7, KEscapeEncoded7_auth, EscapeUtils::EEscapeAuth); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded7, KEscapeEncoded7_path, EscapeUtils::EEscapePath); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded7, KEscapeEncoded7_query, EscapeUtils::EEscapeQuery); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded7, KEscapeEncoded7_normal, EscapeUtils::EEscapeNormal); sl@0: TestEscapeUtilsEscapeEncodeL(KEscapeDecoded7, KEscapeEncoded7_url, EscapeUtils::EEscapeUrlEncoded); sl@0: sl@0: sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded2_auth, KEscapeDecoded2); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded2_path, KEscapeDecoded2); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded2_query, KEscapeDecoded2); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded2_normal, KEscapeDecoded2); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded2_url, KEscapeDecoded2); sl@0: sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded3_auth, KEscapeDecoded3); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded3_path, KEscapeDecoded3); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded3_query, KEscapeDecoded3); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded3_normal, KEscapeDecoded3); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded3_url, KEscapeDecoded3); sl@0: sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded4_auth, KEscapeDecoded4); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded4_path, KEscapeDecoded4); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded4_query, KEscapeDecoded4); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded4_normal, KEscapeDecoded4); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded4_url, KEscapeDecoded4); sl@0: sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded5_auth, KEscapeDecoded5); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded5_path, KEscapeDecoded5); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded5_query, KEscapeDecoded5); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded5_normal, KEscapeDecoded5); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded5_url, KEscapeDecoded5); sl@0: sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded6_auth, KEscapeDecoded6); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded6_path, KEscapeDecoded6); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded6_query, KEscapeDecoded6); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded6_normal, KEscapeDecoded6); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded6_url, KEscapeDecoded6); sl@0: sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded7_auth, KEscapeDecoded7); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded7_path, KEscapeDecoded7); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded7_query, KEscapeDecoded7); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded7_normal, KEscapeDecoded7); sl@0: TestEscapeUtilsEscapeDecodeL(KEscapeEncoded7_url, KEscapeDecoded7); sl@0: sl@0: // sl@0: sl@0: TestEscapeUtilsUnicodeUtf8ConversionsL(KUnicode_0, KUtf8_0); sl@0: sl@0: TestEscapeUtilsIsExcludedCharL(KExcludedChar0, KExcludedChar0_excluded); sl@0: TestEscapeUtilsIsExcludedCharL(KExcludedChar1, KExcludedChar1_excluded); sl@0: TestEscapeUtilsIsExcludedCharL(KExcludedChar2, KExcludedChar2_excluded); sl@0: TestEscapeUtilsIsExcludedCharL(KExcludedChar3, KExcludedChar3_excluded); sl@0: TestEscapeUtilsIsExcludedCharL(KExcludedChar4, KExcludedChar4_excluded); sl@0: sl@0: TestEscapeUtilsIsEscapeTripleL(KEscapeTriple0(), KEscapeTriple0_valid, KEscapeTriple0_value); sl@0: TestEscapeUtilsIsEscapeTripleL(KEscapeTriple1(), KEscapeTriple1_valid, KEscapeTriple1_value); sl@0: TestEscapeUtilsIsEscapeTripleL(KEscapeTriple2(), KEscapeTriple2_valid, KEscapeTriple2_value); sl@0: sl@0: //TConvBase64 Test sl@0: TestEscapeUtilsBase64ConversionL(KEscapeDecoded2); sl@0: } sl@0: sl@0: void CEscapeUtilsTest::TestEscapeUtilsEscapeEncodeL(const TDesC& aData, const TDesC& aExpected, EscapeUtils::TEscapeMode aEscapeMode) sl@0: { sl@0: iTestHarness->StartTestL(_L("Test EscapeUtils EscapeEncode (16-bit)")); sl@0: sl@0: TInt error = DoTestEscapeUtilsEscapeEncode(aData, aExpected, aEscapeMode); sl@0: sl@0: iTestHarness->EndTest(error); sl@0: sl@0: // Make 8-bit copy sl@0: HBufC8* dataBuf = HBufC8::NewLC(aData.Length()); sl@0: TPtr8 data8Bit = dataBuf->Des(); sl@0: data8Bit.Copy(aData); sl@0: sl@0: HBufC8* expectedBuf = HBufC8::NewLC(aExpected.Length()); sl@0: TPtr8 expected8Bit = expectedBuf->Des(); sl@0: expected8Bit.Copy(aExpected); sl@0: sl@0: iTestHarness->StartTestL(_L("Test EscapeUtils EscapeEncode (8-bit)")); sl@0: sl@0: error = DoTestEscapeUtilsEscapeEncode(data8Bit, expected8Bit, aEscapeMode); sl@0: sl@0: iTestHarness->EndTest(error); sl@0: sl@0: CleanupStack::PopAndDestroy(2, dataBuf); // dataBuf, expectedBuf sl@0: } sl@0: sl@0: void CEscapeUtilsTest::TestEscapeUtilsEscapeDecodeL(const TDesC& aData, const TDesC& aExpected) sl@0: { sl@0: iTestHarness->StartTestL(_L("Test EscapeUtils EscapeDecode (16-bit)")); sl@0: sl@0: TInt error = DoTestEscapeUtilsEscapeDecode(aData, aExpected); sl@0: sl@0: iTestHarness->EndTest(error); sl@0: sl@0: // Make 8-bit copy sl@0: HBufC8* dataBuf = HBufC8::NewLC(aData.Length()); sl@0: TPtr8 data8Bit = dataBuf->Des(); sl@0: data8Bit.Copy(aData); sl@0: sl@0: HBufC8* expectedBuf = HBufC8::NewLC(aExpected.Length()); sl@0: TPtr8 expected8Bit = expectedBuf->Des(); sl@0: expected8Bit.Copy(aExpected); sl@0: sl@0: iTestHarness->StartTestL(_L("Test EscapeUtils EscapeDecode (8-bit)")); sl@0: sl@0: error = DoTestEscapeUtilsEscapeDecode(data8Bit, expected8Bit); sl@0: sl@0: iTestHarness->EndTest(error); sl@0: sl@0: CleanupStack::PopAndDestroy(2, dataBuf); // dataBuf, expectedBuf sl@0: } sl@0: sl@0: void CEscapeUtilsTest::TestEscapeUtilsUnicodeUtf8ConversionsL(const TDesC& aUnicode, const TDesC& aUtf8) sl@0: { sl@0: // Make 8-bit copy of utf8 sl@0: HBufC8* utf8Buf = HBufC8::NewLC(aUtf8.Length()); sl@0: utf8Buf->Des().Copy(aUtf8); sl@0: sl@0: // Escape decode sl@0: HBufC8* unescapedUtf8Buf = EscapeUtils::EscapeDecodeL(*utf8Buf); sl@0: CleanupStack::PushL(unescapedUtf8Buf); sl@0: TPtr8 unescapedUtf8 = unescapedUtf8Buf->Des(); sl@0: sl@0: iTestHarness->StartTestL(_L("Test EscapeUtils ConvertFromUnicodeToUtf8")); sl@0: sl@0: HBufC8* convertedUtf8 = NULL; sl@0: TRAPD(error, convertedUtf8 = EscapeUtils::ConvertFromUnicodeToUtf8L(aUnicode)); sl@0: if( error == KErrNone ) sl@0: { sl@0: // Check is expected sl@0: if( convertedUtf8->Compare(unescapedUtf8) != 0 ) sl@0: { sl@0: error = KErrNotFound; sl@0: } sl@0: delete convertedUtf8; sl@0: } sl@0: iTestHarness->EndTest(error); sl@0: sl@0: iTestHarness->StartTestL(_L("Test EscapeUtils ConvertToUnicodeFromUtf8")); sl@0: sl@0: HBufC16* convertedUnicode = NULL; sl@0: TRAP(error, convertedUnicode = EscapeUtils::ConvertToUnicodeFromUtf8L(unescapedUtf8)); sl@0: if( error == KErrNone ) sl@0: { sl@0: // Check is expected sl@0: if( convertedUnicode->Compare(aUnicode) != 0 ) sl@0: { sl@0: error = KErrNotFound; sl@0: } sl@0: delete convertedUnicode; sl@0: } sl@0: iTestHarness->EndTest(error); sl@0: sl@0: CleanupStack::PopAndDestroy(2, utf8Buf); // utf8Buf, unescapedUtf8Buf sl@0: } sl@0: sl@0: void CEscapeUtilsTest::TestEscapeUtilsIsExcludedCharL(TChar aChar, TBool aIsExcluded) sl@0: { sl@0: iTestHarness->StartTestL(_L("Test EscapeUtils IsExcludedChar")); sl@0: sl@0: TBool excluded = EscapeUtils::IsExcludedChar(aChar); sl@0: sl@0: TInt error = KErrNone; sl@0: if( (!excluded && aIsExcluded) | (excluded && !aIsExcluded) ) sl@0: { sl@0: error = KErrNotFound; sl@0: } sl@0: iTestHarness->EndTest(error); sl@0: } sl@0: sl@0: void CEscapeUtilsTest::TestEscapeUtilsIsEscapeTripleL(const TDesC& aData, TBool aIsTriple, TInt aValue) sl@0: { sl@0: iTestHarness->StartTestL(_L("Test EscapeUtils IsEscapeTriple (16-Bit)")); sl@0: sl@0: TInt error = DoTestEscapeUtilsIsEscapeTriple(aData, aIsTriple, aValue); sl@0: sl@0: iTestHarness->EndTest(error); sl@0: sl@0: // Make 8-bit copy sl@0: HBufC8* dataBuf = HBufC8::NewLC(aData.Length()); sl@0: TPtr8 data8Bit = dataBuf->Des(); sl@0: data8Bit.Copy(aData); sl@0: sl@0: iTestHarness->StartTestL(_L("Test EscapeUtils IsEscapeTriple (8-Bit)")); sl@0: sl@0: error = DoTestEscapeUtilsIsEscapeTriple(data8Bit, aIsTriple, aValue); sl@0: sl@0: iTestHarness->EndTest(error); sl@0: sl@0: CleanupStack::PopAndDestroy(dataBuf); // dataBuf sl@0: } sl@0: sl@0: void CEscapeUtilsTest::TestEscapeUtilsBase64ConversionL(const TDesC& aData) sl@0: { sl@0: iTestHarness->StartTestL(_L("Test EscapeUtils Base64 Conversion Check")); sl@0: sl@0: TInt error = KErrNotFound; sl@0: HBufC8* dataBuf = HBufC8::NewMaxLC (aData.Length()); sl@0: TPtr8 dataPtr(dataBuf->Des()); sl@0: sl@0: HBufC8* encodedBuf = HBufC8::NewMaxLC(aData.Length() * 2); sl@0: TPtr8 encodedPtr(encodedBuf->Des()); sl@0: sl@0: TBase64 codec; sl@0: codec.Encode(dataPtr, encodedPtr); sl@0: sl@0: HBufC8* decodedBuf = HBufC8::NewMaxLC(aData.Length()); sl@0: TPtr8 decodedPtr(decodedBuf->Des()); sl@0: sl@0: codec.Decode(encodedPtr, decodedPtr); sl@0: if(decodedPtr.Compare(dataPtr) == 0) sl@0: { sl@0: error = KErrNone; sl@0: } sl@0: iTestHarness->EndTest(error); sl@0: sl@0: CleanupStack::PopAndDestroy(decodedBuf); // decodedBuf sl@0: CleanupStack::PopAndDestroy(encodedBuf); // encodedBuf sl@0: CleanupStack::PopAndDestroy(dataBuf); // dataBuf sl@0: } sl@0: sl@0: // sl@0: // sl@0: // Implementation of LOCAL functions sl@0: // sl@0: // sl@0: sl@0: template sl@0: LOCAL_C TInt DoTestEscapeUtilsEscapeEncode(const TDesCType& aData, const TDesCType& aExpected, EscapeUtils::TEscapeMode aEscapeMode) sl@0: { sl@0: // Do escaping sl@0: HBufCType* escaped = NULL; sl@0: TRAPD(error, escaped = EscapeUtils::EscapeEncodeL(aData, aEscapeMode)); sl@0: if( error != KErrNone ) sl@0: { sl@0: return KErrNotFound; sl@0: } sl@0: // Check with expected sl@0: if( escaped->Compare(aExpected) != 0 ) sl@0: { sl@0: delete escaped; sl@0: return KErrNotFound; sl@0: } sl@0: delete escaped; sl@0: return KErrNone; sl@0: } sl@0: sl@0: template sl@0: LOCAL_C TInt DoTestEscapeUtilsEscapeDecode(const TDesCType& aData, const TDesCType& aExpected) sl@0: { sl@0: // Do unescaping sl@0: HBufCType* unescaped = NULL; sl@0: TRAPD(error, unescaped = EscapeUtils::EscapeDecodeL(aData)); sl@0: if( error != KErrNone ) sl@0: { sl@0: return KErrNotFound; sl@0: } sl@0: // Check with expected sl@0: if( unescaped->Compare(aExpected) != 0 ) sl@0: { sl@0: delete unescaped; sl@0: return KErrNotFound; sl@0: } sl@0: delete unescaped; sl@0: return KErrNone; sl@0: } sl@0: sl@0: template sl@0: LOCAL_C TInt DoTestEscapeUtilsIsEscapeTriple(const TDesCType& aData, TBool aIsTriple, TInt aValue) sl@0: { sl@0: // Check for the triple sl@0: TInt value; sl@0: TBool triple = EscapeUtils::IsEscapeTriple(aData, value); sl@0: if( (!triple && aIsTriple) | (triple && !aIsTriple) ) sl@0: { sl@0: return KErrNotFound; sl@0: } sl@0: if( triple && value != aValue ) sl@0: { sl@0: return KErrNotFound; sl@0: } sl@0: return KErrNone; sl@0: }