commsconfig/commsdatabaseshim/TE_commdb/src/Step_064_xx.cpp
changeset 72 ae47d0499bee
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsconfig/commsdatabaseshim/TE_commdb/src/Step_064_xx.cpp	Mon Sep 06 13:49:23 2010 +0100
@@ -0,0 +1,190 @@
+//
+// Copyright (c) 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:
+//
+//
+//
+// This contains CommDb Unit Test Cases 0064.XX
+
+// EPOC includes
+#include <e32base.h>
+#include <commdb.h>
+
+
+// Test system includes
+//#include <networking/log.h>
+//#include <networking/teststep.h>
+#include "Teststepcommdb.h"
+#include "Step_064_xx.h"
+
+#include <commsdattypeinfov1_1.h>
+#include <commsdattypesv1_1.h>
+#include <commsdat_partner.h>
+
+
+// table name
+_LIT(KCDTypeNameTestTable, "Test");
+
+#define	KCDTypeNameBinaryFieldTest		      _S("BinaryTest")
+
+// record type id
+const TMDBElementId KCDTIdTestRecord         = 0x5F800000;
+// field type ids
+const TMDBElementId KCDTIdTestBinaryField    = 0x00150000;
+
+
+static const SGenericRecordTypeInfo TestGenRecordInfoBinary[] =
+    {
+	MDB_GENERIC_TYPE_INFO(KCDTIdRecordTag,	     	EUint32,    ENoAttrs,   KCDTypeNameRecordTag),
+    MDB_GENERIC_TYPE_INFO(KCDTIdRecordName,	     	EText,	    ENotNull,   KCDTypeNameRecordName),
+	MDB_GENERIC_TYPE_INFO(KCDTIdTestBinaryField,	EDesC8,  	ENoAttrs,   KCDTypeNameBinaryFieldTest),
+    MDB_GENERIC_TYPE_INFO(0, 0, ENoAttrs, KCDNull) 
+    };
+
+
+
+NONSHARABLE_CLASS(CCDTestBinaryRecord) : public CCDRecordBase
+	{
+public :
+
+	// Constructor
+    CCDTestBinaryRecord(TMDBElementId aElementId)
+        : CCDRecordBase(aElementId), 
+          iBinaryField((aElementId & KCDMaskShowRecordType) | KCDTIdTestBinaryField),
+          iRecordTag((aElementId & KCDMaskShowRecordType) | KCDTIdRecordTag),
+          iRecordName((aElementId & KCDMaskShowRecordType) | KCDTIdRecordName)
+        {}
+        
+    const SRecordTypeInfo* GetRecordInfo(){return iRecordInfo;}    
+
+	DATA_VTABLE
+
+public :
+
+	CMDBField<TDesC8>	iBinaryField;
+	CMDBField<TInt>	 	iRecordTag;  
+	CMDBField<TDesC> 	iRecordName;   
+	
+private:
+    
+		static const SRecordTypeInfo iRecordInfo[];	
+	};
+	
+
+	
+	
+const SRecordTypeInfo CCDTestBinaryRecord::iRecordInfo[]=
+  	{
+		{ KCDTIdRecordTag,	        EInt,		ENoAttrs,   KCDTypeNameRecordTag },
+  		{ KCDTIdRecordName,     	EText,		ENotNull,   KCDTypeNameRecordName },
+		{ KCDTIdTestBinaryField,	EDesC8,		ENotNull,   KCDTypeNameBinaryFieldTest },
+  		{ 0, 0, ENoAttrs, KCDNull }
+  	};	
+
+
+START_ATTRIBUTE_TABLE(CCDTestBinaryRecord, KCDTIdTestRecord,  KCDTIdTestRecord )
+	X_REGISTER_ATTRIBUTE(CCDTestBinaryRecord,   iBinaryField, TMDBBin)
+	X_REGISTER_ATTRIBUTE(CCDTestBinaryRecord,   iRecordTag,    TMDBNum )
+	X_REGISTER_ATTRIBUTE(CCDTestBinaryRecord,   iRecordName,   TMDBText )
+END_ATTRIBUTE_TABLE()
+
+
+_LIT8(KTestBinary, "a long binary string,a long binary string,a long binary string,a long binary string,a long binary string,a long binary string,a long binary string,end");
+
+
+
+
+
+/////////////////////
+//	Test step 064.001
+/////////////////////
+
+// constructor
+CCommDbTest064_01::CCommDbTest064_01()
+	{
+	// store the name of this test case
+	SetTestStepName(_L("step_064_01"));
+	}
+
+// destructor
+CCommDbTest064_01::~CCommDbTest064_01()
+	{
+	}
+
+
+TInt CCommDbTest064_01::executeStepL()
+	{
+	TInt ret=KErrGeneral;
+	
+	//set up a generic record with a binary field	
+	INFO_PRINTF1(_L("Creating  a user defined table"));
+
+	CMDBSession *cmdbSession = CMDBSession::NewL(KCDVersion1_1);
+
+	CleanupStack::PushL(cmdbSession); 
+
+	CMDBGenericRecord* testRecord = static_cast<CMDBGenericRecord*>(CCDRecordBase::RecordFactoryL(KCDNewTableRequest));
+	CleanupStack::PushL(testRecord); 
+    testRecord->InitializeL(KCDTypeNameTestTable(), TestGenRecordInfoBinary);	
+         
+	testRecord->StoreL(*cmdbSession);
+	CleanupStack::PopAndDestroy(testRecord);	
+	CleanupStack::PopAndDestroy(cmdbSession);
+	
+	
+	//now use commdbshim api to read and write to the binary field
+	CCommsDatabase*		theDb;
+	CCommsDbTableView*	theView;
+	TUint32 recordId;
+
+	//CDBLEAVE( iTheView->PutRecordChanges(), KErrNone );
+	theDb = CCommsDatabase::NewL();
+	theView = theDb->OpenTableLC( KCDTypeNameTestTable );
+	CleanupStack::Pop();
+	
+	TBuf8<KMaxLongTextLength> value(KTestBinary);
+	CDBLEAVE(theView->InsertRecord(recordId), KErrNone );
+	theView->WriteTextL(TPtrC(KCDTypeNameBinaryFieldTest), value );
+	CDBLEAVE(theView->PutRecordChanges(), KErrNone );
+	CDBLEAVE(theView->GotoFirstRecord(), KErrNone );
+
+	TBuf8<KMaxLongTextLength> value2;
+	theView->ReadTextL( TPtrC(KCDTypeNameBinaryFieldTest), value2 );
+
+ 	if( value2.Compare( value ) == 0)
+		{
+		ret = KErrNone;
+		}
+
+	delete theView;
+	delete theDb;
+
+	return ret;
+	}
+
+
+TVerdict CCommDbTest064_01::doTestStepL( )
+	{
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L("Step 064.01 called "));
+	if ( executeStepL() == KErrNone )
+		{
+		SetTestStepResult(EPass);
+		}
+		
+	return TestStepResult();
+	}
+
+