commsfwutils/commsbufs/TE_mbufmgr/src/test21commsbufs.cpp
author hgs
Mon, 06 Sep 2010 13:49:23 +0100
changeset 72 ae47d0499bee
permissions -rw-r--r--
201033_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     2
// All rights reserved.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     7
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    10
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    11
// Contributors:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    12
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    13
// Description:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    14
// Contains MBufMgr Test Step 21 for commsbufs method
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    15
// 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    16
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    17
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    18
// EPOC includes
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    19
#include <e32base.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    20
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    21
// Test system includes
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    22
//#include "networking/log.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    23
//#include "networking/teststep.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    24
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    25
//#ifdef SYMBIAN_OLD_EXPORT_LOCATION
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    26
//#include "networking/log.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    27
//#include "networking/teststep.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    28
//#else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    29
//#include <networking/log.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    30
//#include <networking/teststep.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    31
//#endif
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    32
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    33
#include "TestStepCTMbufmgr.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    34
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    35
#include "Test21commsbufs.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    36
#include <comms-infras/commsbufpond.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    37
// constructor
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    38
CTest21CommsBufs::CTest21CommsBufs()
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    39
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    40
	SetTestStepName( _L("MBufMgrTest21") );	// Store the name of this test case
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    41
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    42
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    43
// destructor
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    44
CTest21CommsBufs::~CTest21CommsBufs()
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    45
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    46
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    47
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    48
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    49
enum TVerdict CTest21CommsBufs::doTestStepL(void)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    50
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    51
	SetTestStepResult(EFail);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    52
			
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    53
	//-------------- substep 1 --------------------
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    54
	INFO_PRINTF1(_L("  01 Creating CMBufManager and installing active scheduler:"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    55
    CleanupStack::PushL( iActSch = new(ELeave) CActiveScheduler );
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    56
	CActiveScheduler::Install(iActSch);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    57
	CreateInstanceMBufMgrL(KMBufDefaultHeapSize);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    58
	CleanupClosePushL(iBufPond);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    59
	TCommsBufAllocator allocator = iBufPond.Allocator();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    60
    INFO_PRINTF1(_L("  01 Allocate a RCommsBuf of size 128"));	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    61
	RCommsBuf* buf = RCommsBuf::Alloc(128, allocator);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    62
    INFO_PRINTF1(_L("  01 Check the initial offset and length should be 0 & 128"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    63
	// Check the initial offset and length. MUST be 0 & 128 as we 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    64
	// allocated a buffer of size 128
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    65
	if(buf->Offset() != 0 || buf->Length() != buf->RawSize())
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    66
	    {
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    67
	    INFO_PRINTF1(_L("  Error: The offset and length checking failed"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    68
	    return EFail;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    69
	    }
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    70
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    71
	INFO_PRINTF1(_L("  02 Write abcdef"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    72
	_LIT8(KWriteData, "abcdef");
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    73
	buf->Write(KWriteData, 20); // Write abcdef at offset 20
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    74
	// Check the offset should be 20
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    75
	// Check the length should 6 ie; abcdef
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    76
	INFO_PRINTF1(_L("  02 Check the write offset and length should be 20 & 6"));	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    77
    if(buf->Offset() != 20 || buf->Length() != KWriteData().Length())
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    78
        {
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    79
        INFO_PRINTF1(_L("  Error 02: The offset and length checking failed"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    80
		return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    81
        }
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    82
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    83
    TBuf8<10> buffer;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    84
    INFO_PRINTF1(_L("  02 Read the buffer at offset 0"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    85
    buf->Read(buffer);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    86
    INFO_PRINTF1(_L("  02 check the content of the read buffer"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    87
    if(buffer.Compare(KWriteData()) != 0)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    88
        {
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    89
        INFO_PRINTF1(_L("  Error 02 The read buffer content is not same as the write buffer"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    90
        return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    91
        }
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    92
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    93
    INFO_PRINTF1(_L("  02 Read the buffer at offset 3"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    94
    buf->Read(buffer, 3);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    95
    INFO_PRINTF1(_L("  02 check the content of the read buffer"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    96
    TPtrC8 ptr2 = KWriteData().Right(3); // Should be def
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    97
    if(buffer.Compare(ptr2) != 0)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    98
        {
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    99
        INFO_PRINTF1(_L("  Error 02 The read buffer content is not same as the write buffer"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   100
        return TestStepResult();       
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   101
        }
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   102
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   103
    INFO_PRINTF1(_L("  03 Allocate a RCommsBuf of size 128"));   
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   104
    RCommsBuf* buf2 = RCommsBuf::Alloc(128, allocator);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   105
    INFO_PRINTF1(_L("  03 Write abcdef"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   106
    buf2->Write(KWriteData, 10); // Write abcdef at offset 20
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   107
    // Append ghijklm
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   108
    INFO_PRINTF1(_L("  03 Append ghijklm"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   109
    _LIT8(KAppendData, "ghijklm");
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   110
    buf2->Append(KAppendData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   111
    
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   112
    // Compare the data
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   113
    INFO_PRINTF1(_L("  03 Compare the contained data"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   114
    _LIT8(KCompareData, "abcdefghijklm");
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   115
    TBuf8<30> buffer2;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   116
    buf2->Read(buffer2);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   117
    if(buffer2.Compare(KCompareData()) != 0)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   118
        {
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   119
        INFO_PRINTF1(_L("  Error 03 The read buffer content is not same as the write buffer"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   120
        return TestStepResult();       
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   121
        }
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   122
    
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   123
    // Prepend 123
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   124
    _LIT8(KPrependData, "12345");
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   125
    INFO_PRINTF1(_L("  03 Prepend 12345"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   126
    buf2->Prepend(KPrependData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   127
    // Now offset would have been 5
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   128
    if(buf2->Offset() != 5)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   129
        {
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   130
        INFO_PRINTF1(_L("  Error 03 after prepend the offset is not correct"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   131
        return TestStepResult(); 
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   132
        }
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   133
    
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   134
    // Read the whole data
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   135
    buf2->Read(buffer2);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   136
    
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   137
    _LIT8(KCompareData2, "12345abcdefghijklm");
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   138
    if(buffer2.Compare(KCompareData2()) != 0)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   139
        {
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   140
        INFO_PRINTF1(_L("  Error 03 After prepend the read buffer is not correct."));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   141
        return EFail;        
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   142
        }
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   143
     
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   144
    for(TInt i = 0; i < buffer2.Length(); ++i)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   145
         {
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   146
         if(buffer2[i] != (*buf2)[i])
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   147
             {
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   148
             INFO_PRINTF1(_L("  Error 03 Comparison of individual characters failed."));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   149
             return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   150
             }
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   151
         }
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   152
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   153
    buf->Free();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   154
	buf2->Free();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   155
	CleanupStack::PopAndDestroy(); // pond
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   156
	CActiveScheduler::Install(NULL);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   157
	CleanupStack::PopAndDestroy(iActSch);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   158
	
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   159
	SetTestStepResult(EPass);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   160
	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   161
	}