hwrmhaptics/tsrc/haptics_stif/src/hapticsclienttest.cpp
author hgs
Fri, 08 Oct 2010 14:33:25 +0300
changeset 76 cb32bcc88bad
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
76
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Symbian Foundation License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include "hapticsclienttest.h"
hgs
parents:
diff changeset
    20
#include <e32svr.h>
hgs
parents:
diff changeset
    21
#include <StifParser.h>
hgs
parents:
diff changeset
    22
#include <Stiftestinterface.h>
hgs
parents:
diff changeset
    23
#include <StifItemParser.h>
hgs
parents:
diff changeset
    24
#include <limits.h>
hgs
parents:
diff changeset
    25
#include "trace.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// ---------------------------------------------------------
hgs
parents:
diff changeset
    28
// Couple of static TUint8 arrays containing bytes for simple
hgs
parents:
diff changeset
    29
// timeline and magsweep effects (that are used in PlayEffect
hgs
parents:
diff changeset
    30
// and PlayEffectRepeat method related tests below).
hgs
parents:
diff changeset
    31
// These are obtained using VibeTonz Studio's export to C-file
hgs
parents:
diff changeset
    32
// functionality. 
hgs
parents:
diff changeset
    33
// ---------------------------------------------------------
hgs
parents:
diff changeset
    34
static const TUint8 Timeline4HapticsMT_ivt[] = 
hgs
parents:
diff changeset
    35
{
hgs
parents:
diff changeset
    36
    0x01, 0x00, 0x02, 0x00, 0x1c, 0x00, 0x28, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf1, 0xe0, 0x01, 0xe2,
hgs
parents:
diff changeset
    37
    0x00, 0x00, 0xff, 0x30, 0xc8, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x00, 0x00, 0x5f,
hgs
parents:
diff changeset
    38
    0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x12, 0x00, 0x54, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x65, 0x00,
hgs
parents:
diff changeset
    39
    0x6c, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x61, 0x00, 0x67, 0x00,
hgs
parents:
diff changeset
    40
    0x53, 0x00, 0x77, 0x00, 0x65, 0x00, 0x65, 0x00, 0x70, 0x00, 0x00, 0x00
hgs
parents:
diff changeset
    41
};
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
static const TUint8 Magsweep4HapticsMT_ivt[] = 
hgs
parents:
diff changeset
    44
{
hgs
parents:
diff changeset
    45
    0x01, 0x00, 0x01, 0x00, 0x12, 0x00, 0x14, 0x00, 0x00, 0x00, 0x30, 0xc8, 0x00, 0xc8, 0x00, 0x00,
hgs
parents:
diff changeset
    46
    0x00, 0x00, 0x20, 0x3e, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x81, 0x00, 0x00, 0x4d, 0x00, 0x61, 0x00,
hgs
parents:
diff changeset
    47
    0x67, 0x00, 0x53, 0x00, 0x77, 0x00, 0x65, 0x00, 0x65, 0x00, 0x70, 0x00, 0x00, 0x00
hgs
parents:
diff changeset
    48
};
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
static const TUint8 Periodic4HapticsMT_ivt[] = 
hgs
parents:
diff changeset
    51
{
hgs
parents:
diff changeset
    52
    0x01, 0x00, 0x01, 0x00, 0x12, 0x00, 0x14, 0x00, 0x00, 0x00, 0x30, 0xc8, 0x00, 0xc8, 0x00, 0x00,
hgs
parents:
diff changeset
    53
    0x00, 0x00, 0x20, 0x3e, 0x00, 0x00, 0x5f, 0x81, 0x3e, 0x81, 0x00, 0x00, 0x50, 0x00, 0x65, 0x00,
hgs
parents:
diff changeset
    54
    0x72, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x64, 0x00, 0x69, 0x00, 0x63, 0x00, 0x00, 0x00
hgs
parents:
diff changeset
    55
};
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
//    | Object name | Type     | Duration | Magnitude | Period |
hgs
parents:
diff changeset
    58
//--------------------------------------------------------------
hgs
parents:
diff changeset
    59
// 1. | Timeline1   | Timeline | 3915     |           |        |
hgs
parents:
diff changeset
    60
// 2. | Timeline2   | Timeline | 5806     |           |        |
hgs
parents:
diff changeset
    61
// 3. | Periodic1   | Periodic | 1000     | 7480      | 100    |
hgs
parents:
diff changeset
    62
// 4. | Periodic2   | Periodic | 2000     | 7480      | 100    |
hgs
parents:
diff changeset
    63
// 5. | MagSweep1   | MagSweep | 3000     | 7480      |        |
hgs
parents:
diff changeset
    64
// 6. | MagSweep2   | MagSweep | 4000     | 7480      |        |
hgs
parents:
diff changeset
    65
// -------------------------------------------------------------
hgs
parents:
diff changeset
    66
static const TUint8 EffectSetMT_ivt[] = 
hgs
parents:
diff changeset
    67
{
hgs
parents:
diff changeset
    68
    0x01, 0x00, 0x06, 0x00, 0x66, 0x00, 0x84, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x1a, 0x00, 0x2a, 0x00,
hgs
parents:
diff changeset
    69
    0x3a, 0x00, 0x4a, 0x00, 0xf1, 0xe0, 0x02, 0xe2, 0x00, 0x00, 0xf1, 0xe0, 0x04, 0xe2, 0x03, 0x93,
hgs
parents:
diff changeset
    70
    0xff, 0xf1, 0xe0, 0x03, 0xe2, 0x00, 0x00, 0xf1, 0xe0, 0x05, 0xe2, 0x07, 0x0e, 0xff, 0x30, 0xc8,
hgs
parents:
diff changeset
    71
    0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x00, 0x00, 0x5f, 0x81, 0x3e, 0x81, 0x30, 0xc8,
hgs
parents:
diff changeset
    72
    0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x20, 0x7d, 0x00, 0x00, 0x5f, 0x81, 0x3e, 0x01, 0x30, 0xc8,
hgs
parents:
diff changeset
    73
    0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xbb, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x81, 0x30, 0xc8,
hgs
parents:
diff changeset
    74
    0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfa, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x01, 0x00, 0x00,
hgs
parents:
diff changeset
    75
    0x14, 0x00, 0x28, 0x00, 0x3c, 0x00, 0x50, 0x00, 0x64, 0x00, 0x54, 0x00, 0x69, 0x00, 0x6d, 0x00,
hgs
parents:
diff changeset
    76
    0x65, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x31, 0x00, 0x00, 0x00, 0x54, 0x00,
hgs
parents:
diff changeset
    77
    0x69, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x32, 0x00,
hgs
parents:
diff changeset
    78
    0x00, 0x00, 0x50, 0x00, 0x65, 0x00, 0x72, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x64, 0x00, 0x69, 0x00,
hgs
parents:
diff changeset
    79
    0x63, 0x00, 0x31, 0x00, 0x00, 0x00, 0x50, 0x00, 0x65, 0x00, 0x72, 0x00, 0x69, 0x00, 0x6f, 0x00,
hgs
parents:
diff changeset
    80
    0x64, 0x00, 0x69, 0x00, 0x63, 0x00, 0x32, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x61, 0x00, 0x67, 0x00,
hgs
parents:
diff changeset
    81
    0x53, 0x00, 0x77, 0x00, 0x65, 0x00, 0x65, 0x00, 0x70, 0x00, 0x31, 0x00, 0x00, 0x00, 0x4d, 0x00,
hgs
parents:
diff changeset
    82
    0x61, 0x00, 0x67, 0x00, 0x53, 0x00, 0x77, 0x00, 0x65, 0x00, 0x65, 0x00, 0x70, 0x00, 0x32, 0x00,
hgs
parents:
diff changeset
    83
    0x00, 0x00
hgs
parents:
diff changeset
    84
};
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
static const TUint8 CorruptedMT_ivt[] = 
hgs
parents:
diff changeset
    87
{
hgs
parents:
diff changeset
    88
    0x00, 0x01, 0x01, 0x01, 0x12, 0x00, 0x14, 0x00, 0x00, 0x00, 0x30, 0xc8, 0x00, 0xc8, 0x00, 0x00,
hgs
parents:
diff changeset
    89
    0x00, 0x00, 0x20, 0x3e, 0x00, 0x00, 0x5f, 0x81, 0x3e, 0x81, 0x00, 0x00, 0x50, 0x00, 0x65, 0x00,
hgs
parents:
diff changeset
    90
    0x72, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x64, 0x00, 0x69, 0x00, 0x63, 0x00, 0x00, 0x00
hgs
parents:
diff changeset
    91
};
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
//offset value for 
hgs
parents:
diff changeset
    94
const TInt KEventOffset = 1000;
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
// imaginary license key
hgs
parents:
diff changeset
    97
_LIT8( KPlainKey,     "73JJNDJ38EKDKD983783JDJD84U48DJ4" );
hgs
parents:
diff changeset
    98
			
hgs
parents:
diff changeset
    99
// ---------------------------------------------------------
hgs
parents:
diff changeset
   100
// VibeStatus to S60 status mappings are tested by sending these
hgs
parents:
diff changeset
   101
// special repeat values to server (calling PlayEffectRepeat).
hgs
parents:
diff changeset
   102
// The test plugin will acknowledge these special values and 
hgs
parents:
diff changeset
   103
// returns corresponding VibeStatus error code..
hgs
parents:
diff changeset
   104
// ---------------------------------------------------------
hgs
parents:
diff changeset
   105
//
hgs
parents:
diff changeset
   106
enum repeat_values_4_vibestatustests
hgs
parents:
diff changeset
   107
    {
hgs
parents:
diff changeset
   108
    SUCCESS_TEST = 100,
hgs
parents:
diff changeset
   109
    ALREADY_INITIALIZED_TEST,
hgs
parents:
diff changeset
   110
    NOT_INITIALIZED_TEST,
hgs
parents:
diff changeset
   111
    INVALID_ARGUMENT_TEST,
hgs
parents:
diff changeset
   112
    FAIL_TEST,
hgs
parents:
diff changeset
   113
    INCOMPATIBLE_EFFECT_TYPE_TEST,
hgs
parents:
diff changeset
   114
    INCOMPATIBLE_CAPABILITY_TYPE_TEST,
hgs
parents:
diff changeset
   115
    INCOMPATIBLE_PROPERTY_TYPE_TEST,
hgs
parents:
diff changeset
   116
    DEVICE_NEEDS_LICENSE_TEST,
hgs
parents:
diff changeset
   117
    NOT_ENOUGH_MEMORY_TEST,
hgs
parents:
diff changeset
   118
    SERVICE_NOT_RUNNING_TEST,
hgs
parents:
diff changeset
   119
    INSUFFICIENT_PRIORITY_TEST,
hgs
parents:
diff changeset
   120
    SERVICE_BUSY_TEST,
hgs
parents:
diff changeset
   121
    WRN_NOT_PLAYING_TEST,
hgs
parents:
diff changeset
   122
    WRN_INSUFFICIENT_PRIORITY_TEST
hgs
parents:
diff changeset
   123
    };
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
// - Haptics status callback implementation ---------------------------------
hgs
parents:
diff changeset
   127
THapticsStatusCallback::THapticsStatusCallback( CHapticsClientTest* aMTCallback )
hgs
parents:
diff changeset
   128
    : iHapticsStatus( MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ),
hgs
parents:
diff changeset
   129
      iMTCallback( aMTCallback )
hgs
parents:
diff changeset
   130
    {
hgs
parents:
diff changeset
   131
    }
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
THapticsStatusCallback::~THapticsStatusCallback()
hgs
parents:
diff changeset
   134
    {
hgs
parents:
diff changeset
   135
    }
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
MHWRMHapticsObserver::THWRMHapticsStatus THapticsStatusCallback::Status()
hgs
parents:
diff changeset
   138
    {
hgs
parents:
diff changeset
   139
    return iHapticsStatus;
hgs
parents:
diff changeset
   140
    }
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
// ---------------------------------------------------------
hgs
parents:
diff changeset
   143
// from MHWRMHapticsObserver. Method which is called
hgs
parents:
diff changeset
   144
// by the haptics client, when the haptics status of
hgs
parents:
diff changeset
   145
// that client changes.
hgs
parents:
diff changeset
   146
// ---------------------------------------------------------
hgs
parents:
diff changeset
   147
//
hgs
parents:
diff changeset
   148
void THapticsStatusCallback::HapticsStatusChangedL( THWRMHapticsStatus aStatus )
hgs
parents:
diff changeset
   149
    {
hgs
parents:
diff changeset
   150
    iHapticsStatus = aStatus;
hgs
parents:
diff changeset
   151
    
hgs
parents:
diff changeset
   152
    // inform callback of new value
hgs
parents:
diff changeset
   153
    iMTCallback->HapticsStatusReceived();
hgs
parents:
diff changeset
   154
    }
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
// ---------------------------------------------------------
hgs
parents:
diff changeset
   157
// from MHWRMHapticsObserver. Method is for future use,
hgs
parents:
diff changeset
   158
// hence the empty implementation.
hgs
parents:
diff changeset
   159
// ---------------------------------------------------------
hgs
parents:
diff changeset
   160
//
hgs
parents:
diff changeset
   161
void THapticsStatusCallback::EffectCompletedL( TInt /*aError*/, TInt /*aEffectHandle*/ )
hgs
parents:
diff changeset
   162
    {
hgs
parents:
diff changeset
   163
    }
hgs
parents:
diff changeset
   164
hgs
parents:
diff changeset
   165
hgs
parents:
diff changeset
   166
// - Actuator status callback implementation ---------------------------------
hgs
parents:
diff changeset
   167
TActuatorStatusCallback::TActuatorStatusCallback( CHapticsClientTest* aMTCallback ) : iMTCallback( aMTCallback ) 
hgs
parents:
diff changeset
   168
    {
hgs
parents:
diff changeset
   169
    }
hgs
parents:
diff changeset
   170
hgs
parents:
diff changeset
   171
TActuatorStatusCallback::~TActuatorStatusCallback()
hgs
parents:
diff changeset
   172
    {
hgs
parents:
diff changeset
   173
    iActuatorStatus.Close();
hgs
parents:
diff changeset
   174
    }
hgs
parents:
diff changeset
   175
hgs
parents:
diff changeset
   176
MHWRMHapticsActuatorObserver::THWRMActuatorEvents TActuatorStatusCallback::Status( THWRMLogicalActuators aActuator )
hgs
parents:
diff changeset
   177
    {
hgs
parents:
diff changeset
   178
    TInt index = iActuatorStatus.Find( aActuator );
hgs
parents:
diff changeset
   179
    if ( index == KErrNotFound )
hgs
parents:
diff changeset
   180
        {
hgs
parents:
diff changeset
   181
        return (MHWRMHapticsActuatorObserver::THWRMActuatorEvents)0;
hgs
parents:
diff changeset
   182
        }        
hgs
parents:
diff changeset
   183
    return (MHWRMHapticsActuatorObserver::THWRMActuatorEvents)(iActuatorStatus[index+1]-KEventOffset);
hgs
parents:
diff changeset
   184
    }
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
// ---------------------------------------------------------
hgs
parents:
diff changeset
   187
// from MHWRMHapticsObserver. Method which is called
hgs
parents:
diff changeset
   188
// by the haptics client, when the haptics status of
hgs
parents:
diff changeset
   189
// that client changes.
hgs
parents:
diff changeset
   190
// ---------------------------------------------------------
hgs
parents:
diff changeset
   191
//
hgs
parents:
diff changeset
   192
void TActuatorStatusCallback::ActuatorEventL( THWRMActuatorEvents aEvent,
hgs
parents:
diff changeset
   193
                                              THWRMLogicalActuators aActuator )
hgs
parents:
diff changeset
   194
    {
hgs
parents:
diff changeset
   195
    TInt index = iActuatorStatus.Find( aActuator );
hgs
parents:
diff changeset
   196
    if ( index == KErrNotFound )
hgs
parents:
diff changeset
   197
        {
hgs
parents:
diff changeset
   198
        iActuatorStatus.Append( aActuator );
hgs
parents:
diff changeset
   199
        iActuatorStatus.Append( aEvent + KEventOffset );
hgs
parents:
diff changeset
   200
        }
hgs
parents:
diff changeset
   201
    else
hgs
parents:
diff changeset
   202
        {
hgs
parents:
diff changeset
   203
        iActuatorStatus.Remove( index );
hgs
parents:
diff changeset
   204
        iActuatorStatus.Remove( index );
hgs
parents:
diff changeset
   205
        iActuatorStatus.Append( aActuator );
hgs
parents:
diff changeset
   206
        iActuatorStatus.Append( aEvent + KEventOffset );
hgs
parents:
diff changeset
   207
        }
hgs
parents:
diff changeset
   208
    
hgs
parents:
diff changeset
   209
    // inform callback of new value
hgs
parents:
diff changeset
   210
    iMTCallback->HapticsStatusReceived();
hgs
parents:
diff changeset
   211
    }
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
// ---------------------------------------------------------
hgs
parents:
diff changeset
   214
// MT_HapticsTestAsyncPlaySender methods
hgs
parents:
diff changeset
   215
// ---------------------------------------------------------
hgs
parents:
diff changeset
   216
//
hgs
parents:
diff changeset
   217
MT_HapticsTestAsyncPlaySender::MT_HapticsTestAsyncPlaySender(
hgs
parents:
diff changeset
   218
    CHapticsClientTest* aMTCallback ) 
hgs
parents:
diff changeset
   219
    : CActive( EPriorityStandard ), iMTCallback( aMTCallback )
hgs
parents:
diff changeset
   220
    {
hgs
parents:
diff changeset
   221
    CActiveScheduler::Add( this );
hgs
parents:
diff changeset
   222
    }
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
MT_HapticsTestAsyncPlaySender::~MT_HapticsTestAsyncPlaySender()
hgs
parents:
diff changeset
   225
    {
hgs
parents:
diff changeset
   226
    }
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
void MT_HapticsTestAsyncPlaySender::PlayRepeat( 
hgs
parents:
diff changeset
   229
    CHWRMHaptics* aHaptics,
hgs
parents:
diff changeset
   230
    TInt  aFileHandle,
hgs
parents:
diff changeset
   231
    TInt aEffectIndex,
hgs
parents:
diff changeset
   232
    TUint8 aRepeat,
hgs
parents:
diff changeset
   233
    TInt& aEffectHandle,
hgs
parents:
diff changeset
   234
    TRequestStatus& aClientStatus )
hgs
parents:
diff changeset
   235
    {
hgs
parents:
diff changeset
   236
    aClientStatus = KRequestPending;
hgs
parents:
diff changeset
   237
    iClientStatus = &aClientStatus;
hgs
parents:
diff changeset
   238
    aHaptics->PlayEffectRepeat( aFileHandle, 
hgs
parents:
diff changeset
   239
                                aEffectIndex,
hgs
parents:
diff changeset
   240
                                aRepeat,
hgs
parents:
diff changeset
   241
                                aEffectHandle,
hgs
parents:
diff changeset
   242
                                iStatus );
hgs
parents:
diff changeset
   243
    SetActive();  
hgs
parents:
diff changeset
   244
    }
hgs
parents:
diff changeset
   245
hgs
parents:
diff changeset
   246
void MT_HapticsTestAsyncPlaySender::Play( 
hgs
parents:
diff changeset
   247
        CHWRMHaptics* aHaptics,
hgs
parents:
diff changeset
   248
       TInt  aFileHandle,
hgs
parents:
diff changeset
   249
       TInt aEffectIndex,
hgs
parents:
diff changeset
   250
       TInt& aEffectHandle,
hgs
parents:
diff changeset
   251
       TRequestStatus& aClientStatus )
hgs
parents:
diff changeset
   252
    {
hgs
parents:
diff changeset
   253
    aClientStatus = KRequestPending;
hgs
parents:
diff changeset
   254
    iClientStatus = &aClientStatus;
hgs
parents:
diff changeset
   255
    aHaptics->PlayEffect( aFileHandle, 
hgs
parents:
diff changeset
   256
                          aEffectIndex,
hgs
parents:
diff changeset
   257
                          aEffectHandle,
hgs
parents:
diff changeset
   258
                          iStatus );
hgs
parents:
diff changeset
   259
    SetActive();
hgs
parents:
diff changeset
   260
    }
hgs
parents:
diff changeset
   261
hgs
parents:
diff changeset
   262
void MT_HapticsTestAsyncPlaySender::RunL()
hgs
parents:
diff changeset
   263
    {
hgs
parents:
diff changeset
   264
    *iClientStatus = iStatus.Int();
hgs
parents:
diff changeset
   265
    iMTCallback->HapticsStatusReceived();
hgs
parents:
diff changeset
   266
    }
hgs
parents:
diff changeset
   267
hgs
parents:
diff changeset
   268
void MT_HapticsTestAsyncPlaySender::DoCancel()
hgs
parents:
diff changeset
   269
    {
hgs
parents:
diff changeset
   270
    }
hgs
parents:
diff changeset
   271
hgs
parents:
diff changeset
   272
TInt MT_HapticsTestAsyncPlaySender::RunError( TInt /* aError */ )
hgs
parents:
diff changeset
   273
    {
hgs
parents:
diff changeset
   274
    return KErrNone;
hgs
parents:
diff changeset
   275
    }
hgs
parents:
diff changeset
   276
       
hgs
parents:
diff changeset
   277
// - Construction -----------------------------------------------------------
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
void CHapticsClientTest::BuildL ()
hgs
parents:
diff changeset
   280
    {
hgs
parents:
diff changeset
   281
    iSender = new ( ELeave ) MT_HapticsTestAsyncPlaySender( this );
hgs
parents:
diff changeset
   282
    }
hgs
parents:
diff changeset
   283
hgs
parents:
diff changeset
   284
void CHapticsClientTest::Delete ()
hgs
parents:
diff changeset
   285
    {
hgs
parents:
diff changeset
   286
    delete iSender;
hgs
parents:
diff changeset
   287
    }
hgs
parents:
diff changeset
   288
	
hgs
parents:
diff changeset
   289
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   290
// CHapticsClientTest::RunMethodL
hgs
parents:
diff changeset
   291
// Run specified method. Contains also table of test mothods and their names.
hgs
parents:
diff changeset
   292
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   293
//
hgs
parents:
diff changeset
   294
TInt CHapticsClientTest::RunMethodL( 
hgs
parents:
diff changeset
   295
    CStifItemParser& aItem ) 
hgs
parents:
diff changeset
   296
    {
hgs
parents:
diff changeset
   297
hgs
parents:
diff changeset
   298
    static TStifFunctionInfo const KFunctions[] =
hgs
parents:
diff changeset
   299
        {  
hgs
parents:
diff changeset
   300
        // Copy this line for every implemented function.
hgs
parents:
diff changeset
   301
        // First string is the function name used in TestScripter script file.
hgs
parents:
diff changeset
   302
        // Second is the actual implementation member function. 
hgs
parents:
diff changeset
   303
        ENTRY( "Setup", CHapticsClientTest::SetupL ),
hgs
parents:
diff changeset
   304
        ENTRY( "Teardown", CHapticsClientTest::Teardown ),
hgs
parents:
diff changeset
   305
		ENTRY( "CreateAndDestroy", CHapticsClientTest::T_CreateAndDeleteL ),
hgs
parents:
diff changeset
   306
		ENTRY( "SeveralSessions", CHapticsClientTest::T_SeveralSessionsL ),
hgs
parents:
diff changeset
   307
		ENTRY( "ConsecutiveSessions", CHapticsClientTest::T_ConsecutiveSessionsL ),
hgs
parents:
diff changeset
   308
		ENTRY( "SupportedActuators", CHapticsClientTest::T_SupportedActuators ),
hgs
parents:
diff changeset
   309
		ENTRY( "OpenSupportedActuator", CHapticsClientTest::T_OpenSupportedActuator ),
hgs
parents:
diff changeset
   310
		ENTRY( "OpenUnsupportedActuator", CHapticsClientTest::T_OpenNotSupportedActuator ),
hgs
parents:
diff changeset
   311
		ENTRY( "OpenAllActuators", CHapticsClientTest::T_OpenAllActuators ),
hgs
parents:
diff changeset
   312
		ENTRY( "2ClientsOpenActuators", CHapticsClientTest::T_SeveralClientsWithOpenActuatorsL ),
hgs
parents:
diff changeset
   313
		ENTRY( "PlayMagSweepSynchData", CHapticsClientTest::T_PlayMagSweepEffectSynchronous ),
hgs
parents:
diff changeset
   314
		ENTRY( "PlayMagSweepAsynchData", CHapticsClientTest::T_PlayMagSweepEffectAsynchronous ),
hgs
parents:
diff changeset
   315
		ENTRY( "PlayPeriodicSynchData", CHapticsClientTest::T_PlayPeriodicEffectSynchronous ),
hgs
parents:
diff changeset
   316
		ENTRY( "PlayPeriodicAsynchData", CHapticsClientTest::T_PlayPeriodicEffectAsynchronous ),
hgs
parents:
diff changeset
   317
		ENTRY( "PlayIVTSynchData", CHapticsClientTest::T_PlayIVTEffectWithDirectDataSynchronous ),
hgs
parents:
diff changeset
   318
		ENTRY( "PlayIVTAsynchData", CHapticsClientTest::T_PlayIVTEffectWithDirectDataAsynchronous ),
hgs
parents:
diff changeset
   319
		ENTRY( "RepeatIVTSynchData", CHapticsClientTest::T_PlayIVTEffectRepeatWithDirectDataSynchronous ),
hgs
parents:
diff changeset
   320
		ENTRY( "RepeatIVTAsynchData", CHapticsClientTest::T_PlayIVTEffectRepeatWithDirectDataAsynchronous ),
hgs
parents:
diff changeset
   321
		ENTRY( "GetEffectState", CHapticsClientTest::T_GetEffectState ),
hgs
parents:
diff changeset
   322
		ENTRY( "RepeatIVTSynchDataNonTimeline", CHapticsClientTest::T_PlayNonTimelineIVTEffectRepeatWithDirectDataSynchronous ),
hgs
parents:
diff changeset
   323
		ENTRY( "RepeatIVTAsynchDataNonTimeline", CHapticsClientTest::T_PlayNonTimelineIVTEffectRepeatWithDirectDataAsynchronous ),
hgs
parents:
diff changeset
   324
		ENTRY( "Zero-repeatIVTSynchData", CHapticsClientTest::T_PlayIVTEffectRepeatWithDirectDataWithZeroRepeatValueSynchronous ),
hgs
parents:
diff changeset
   325
		ENTRY( "Zero-repeatIVTAsynchData", CHapticsClientTest::T_PlayIVTEffectRepeatWithDirectDataWithZeroRepeatValueAsynchronous ),  
hgs
parents:
diff changeset
   326
		ENTRY( "LoadIVTData", CHapticsClientTest::T_LoadIVTData ),
hgs
parents:
diff changeset
   327
		ENTRY( "DeleteIVTData", CHapticsClientTest::T_DeleteIVTData ),
hgs
parents:
diff changeset
   328
		ENTRY( "DeleteAllIVTData", CHapticsClientTest::T_DeleteAllIVTData ),
hgs
parents:
diff changeset
   329
		ENTRY( "LoadAndDeleteMultiple", CHapticsClientTest::T_LoadAndDeleteIVTData ),
hgs
parents:
diff changeset
   330
		ENTRY( "LoadAndDeleteMixed", CHapticsClientTest::T_LoadAndDeleteIVTDataMixed ),
hgs
parents:
diff changeset
   331
		ENTRY( "LoadDeletePlaySync", CHapticsClientTest::T_LoadDeletePlaySync ),
hgs
parents:
diff changeset
   332
		ENTRY( "LoadDeletePlayAsync", CHapticsClientTest::T_LoadDeletePlayAsync ),
hgs
parents:
diff changeset
   333
		ENTRY( "LoadDeletePlayRepeatSync", CHapticsClientTest::T_LoadDeletePlayRepeatSync ),
hgs
parents:
diff changeset
   334
		ENTRY( "LoadDeletePlayRepeatAsync", CHapticsClientTest::T_LoadDeletePlayRepeatAsync ),
hgs
parents:
diff changeset
   335
		ENTRY( "PlayLoadedIVTSynch", CHapticsClientTest::T_PlayIVTEffectWithLoadedDataSynchronous ),
hgs
parents:
diff changeset
   336
		ENTRY( "PlayLoadedIVTAsynch", CHapticsClientTest::T_PlayIVTEffectWithLoadedDataAsynchronous ),
hgs
parents:
diff changeset
   337
		ENTRY( "RepeatLoadedIVTSynch", CHapticsClientTest::T_PlayIVTEffectRepeatWithLoadedDataSynchronous ),
hgs
parents:
diff changeset
   338
		ENTRY( "RepeatLoadedIVTAsynch", CHapticsClientTest::T_PlayIVTEffectRepeatWithLoadedDataAsynchronous ),
hgs
parents:
diff changeset
   339
		ENTRY( "LoadMultipleIVT-data", CHapticsClientTest::T_LoadMultipleIVTData ),
hgs
parents:
diff changeset
   340
		ENTRY( "PlayFromMultipleIVT-dataSynch", CHapticsClientTest::T_PlayIVTEffectsFromMultipleIVTDataSynchronous ),
hgs
parents:
diff changeset
   341
		ENTRY( "PlayFromMultipleIVT-dataAsynch", CHapticsClientTest::T_PlayIVTEffectsFromMultipleIVTDataAsynchronous ),
hgs
parents:
diff changeset
   342
		ENTRY( "PlayRepeatFromMultipleIVT-dataSynch", CHapticsClientTest::T_PlayIVTEffectRepeatFromMultipleIVTDataSynchronous ),
hgs
parents:
diff changeset
   343
		ENTRY( "PlayRepeatFromMultipleIVT-dataAsynch", CHapticsClientTest::T_PlayIVTEffectRepeatFromMultipleIVTDataAsynchronous ),
hgs
parents:
diff changeset
   344
		ENTRY( "StatusConversions", CHapticsClientTest::T_VibeStatusToS60StatusConversions ),
hgs
parents:
diff changeset
   345
		ENTRY( "ReserveAndRelease", CHapticsClientTest::T_ReserveAndReleaseHaptics ),
hgs
parents:
diff changeset
   346
		ENTRY( "ReserveSeveralTimes", CHapticsClientTest::T_ReserveHapticsSeveralTimes ),
hgs
parents:
diff changeset
   347
		ENTRY( "ReserveNoRelease", CHapticsClientTest::T_ReserveHapticsNoReleaseL ),
hgs
parents:
diff changeset
   348
		ENTRY( "ReleaseNoReserve", CHapticsClientTest::T_ReleaseHapticsWithoutReservingFirst ),
hgs
parents:
diff changeset
   349
		ENTRY( "ReserveForceNoCoe", CHapticsClientTest::T_ReserveNoAutomaticFocusNotTrusted ),
hgs
parents:
diff changeset
   350
		ENTRY( "ReserveReservedHigher", CHapticsClientTest::T_ReserveAlreadyReservedHigherL ),
hgs
parents:
diff changeset
   351
		ENTRY( "ReserveReservedLower", CHapticsClientTest::T_ReserveAlreadyReservedLowerL ),
hgs
parents:
diff changeset
   352
		ENTRY( "PlayWhenReserved", CHapticsClientTest::T_PlayWhenReservedL ),
hgs
parents:
diff changeset
   353
		ENTRY( "GetEffectCount", CHapticsClientTest::T_GetIVTEffectCount ),
hgs
parents:
diff changeset
   354
		ENTRY( "GetEffectDuration", CHapticsClientTest::T_GetIVTEffectDuration ),
hgs
parents:
diff changeset
   355
		ENTRY( "GetEffectIndexFromName", CHapticsClientTest::T_GetIVTEffectIndexFromName ),
hgs
parents:
diff changeset
   356
		ENTRY( "GetEffectType", CHapticsClientTest::T_GetIVTEffectType ),
hgs
parents:
diff changeset
   357
		ENTRY( "GetEffectName", CHapticsClientTest::T_GetIVTEffectName ),
hgs
parents:
diff changeset
   358
		ENTRY( "GetMagSweepEffectDefinition", CHapticsClientTest::T_GetIVTMagSweepEffectDefinition ),
hgs
parents:
diff changeset
   359
		ENTRY( "GetPeriodicEffectDefinition", CHapticsClientTest::T_GetIVTPeriodicEffectDefinition ),
hgs
parents:
diff changeset
   360
		ENTRY( "CreateAndDestroyAsynchronous", CHapticsClientTest::T_CreateAndDeleteAsynchronousL ),
hgs
parents:
diff changeset
   361
		ENTRY( "SeveralSessionsAsynchronous", CHapticsClientTest::T_SeveralSessionsAsynchronousL ),
hgs
parents:
diff changeset
   362
		ENTRY( "ConsecutiveSessionsAsynchronous", CHapticsClientTest::T_ConsecutiveSessionsAsynchronousL),
hgs
parents:
diff changeset
   363
		ENTRY( "ConstantGetters", CHapticsClientTest::T_ConstantGetters ),
hgs
parents:
diff changeset
   364
		ENTRY( "PauseEffect", CHapticsClientTest::T_PauseEffect ),
hgs
parents:
diff changeset
   365
		ENTRY( "ResumeEffect", CHapticsClientTest::T_ResumeEffect),
hgs
parents:
diff changeset
   366
		ENTRY( "StopEffect", CHapticsClientTest::T_StopEffect),
hgs
parents:
diff changeset
   367
		ENTRY( "StopAllEffects", CHapticsClientTest::T_StopAllEffects ),
hgs
parents:
diff changeset
   368
		ENTRY( "PlayPauseResumeStop", CHapticsClientTest::T_PlayPauseResumeStop),
hgs
parents:
diff changeset
   369
		ENTRY( "ModifyPlayingMagsweepEffectSynchronous", CHapticsClientTest::T_ModifyMagSweepEffectSynchronous ),
hgs
parents:
diff changeset
   370
		ENTRY( "ModifyPlayingMagsweepEffectAsynchronous", CHapticsClientTest::T_ModifyMagSweepEffectAsynchronous ),
hgs
parents:
diff changeset
   371
		ENTRY( "ModifyPlayingPeriodicEffectSynchronous", CHapticsClientTest::T_ModifyPeriodicEffectSynchronous ),
hgs
parents:
diff changeset
   372
		ENTRY( "ModifyPlayingPeriodicEffectAsynchronous", CHapticsClientTest::T_ModifyPeriodicEffectAsynchronous ),
hgs
parents:
diff changeset
   373
		ENTRY( "GetDevicePropertyOfTIntValue", CHapticsClientTest::T_GetDeviceProperty_TInt_TInt ),
hgs
parents:
diff changeset
   374
		ENTRY( "GetDevicePropertyOfTDesCValue", CHapticsClientTest::T_GetDeviceProperty_TInt_TDesC ),
hgs
parents:
diff changeset
   375
		ENTRY( "SetDevicePropertyOfTIntValue", CHapticsClientTest::T_SetDeviceProperty_TInt_TInt ),
hgs
parents:
diff changeset
   376
		ENTRY( "SetDevicePropertyOfTDesCValue", CHapticsClientTest::T_SetDeviceProperty_TInt_TDesC ),    
hgs
parents:
diff changeset
   377
		ENTRY( "GetDeviceCapabilityOfTIntValue", CHapticsClientTest::T_GetDeviceCapability_TInt_TInt ),
hgs
parents:
diff changeset
   378
		ENTRY( "GetDeviceCapabilityOfTDesCValue", CHapticsClientTest::T_GetDeviceCapability_TInt_TDesC ),
hgs
parents:
diff changeset
   379
		ENTRY( "FetchStatus", CHapticsClientTest::T_GetHapticsStatus ),
hgs
parents:
diff changeset
   380
		ENTRY( "ObserveStatus", CHapticsClientTest::T_ObserveHapticsStatus ),
hgs
parents:
diff changeset
   381
		ENTRY( "StatusReservation", CHapticsClientTest::T_GetHapticsStatusWithReservations ),
hgs
parents:
diff changeset
   382
		ENTRY( "StatusObserveReservation", CHapticsClientTest::T_ObserveHapticsStatusWithReservations ),
hgs
parents:
diff changeset
   383
		ENTRY( "Status2Reservations", CHapticsClientTest::T_GetHapticsStatusWithSeveralReservations ),
hgs
parents:
diff changeset
   384
		ENTRY( "StatusObserve2Reservation", CHapticsClientTest::T_ObserveHapticsStatusWithSeveralReservations ),
hgs
parents:
diff changeset
   385
		ENTRY( "StatusManyClients", CHapticsClientTest::T_GetHapticsStatusWithSeveralClientsOneReservation ),
hgs
parents:
diff changeset
   386
		ENTRY( "StatusObserverManyClients", CHapticsClientTest::T_ObserveHapticsStatusWithSeveralClientsOneReservations ),
hgs
parents:
diff changeset
   387
		ENTRY( "CreateStreamingEffect", CHapticsClientTest::T_CreateStreamingEffect ),
hgs
parents:
diff changeset
   388
		ENTRY( "PlayStreamingSample", CHapticsClientTest::T_PlayStreamingSample),
hgs
parents:
diff changeset
   389
		ENTRY( "PlayStreamingSampleAsync", CHapticsClientTest::T_PlayStreamingSampleAsync),
hgs
parents:
diff changeset
   390
		ENTRY( "PlayStreamingSampleWithOffset", CHapticsClientTest::T_PlayStreamingSampleWithOffset),
hgs
parents:
diff changeset
   391
		ENTRY( "PlayStreamingSampleWithOffsetAsync", CHapticsClientTest::T_PlayStreamingSampleWithOffsetAsync),
hgs
parents:
diff changeset
   392
		ENTRY( "DestroyStreamingEffect", CHapticsClientTest::T_DestroyStreamingEffect),
hgs
parents:
diff changeset
   393
		ENTRY( "ActuatorStatus", CHapticsClientTest::T_ObserveActuatorStatus),
hgs
parents:
diff changeset
   394
		ENTRY( "ActuatorOrHapticsStatus", CHapticsClientTest::T_ObserveActuatorStatusAndHapticsStatus),
hgs
parents:
diff changeset
   395
		ENTRY( "PluginMgrTransTimerExpires", CHapticsClientTest::T_PluginMgrTransTimerExpires),
hgs
parents:
diff changeset
   396
        };
hgs
parents:
diff changeset
   397
hgs
parents:
diff changeset
   398
    const TInt count = sizeof( KFunctions ) / 
hgs
parents:
diff changeset
   399
                        sizeof( TStifFunctionInfo );
hgs
parents:
diff changeset
   400
hgs
parents:
diff changeset
   401
    return RunInternalL( KFunctions, count, aItem );
hgs
parents:
diff changeset
   402
    
hgs
parents:
diff changeset
   403
    }
hgs
parents:
diff changeset
   404
hgs
parents:
diff changeset
   405
// ---------------------------------------------------------
hgs
parents:
diff changeset
   406
// Method, which is called by the status callback, when a status
hgs
parents:
diff changeset
   407
// has been received. Stops the wait loop waiting for a new status.
hgs
parents:
diff changeset
   408
// ---------------------------------------------------------
hgs
parents:
diff changeset
   409
//
hgs
parents:
diff changeset
   410
void CHapticsClientTest::HapticsStatusReceived()
hgs
parents:
diff changeset
   411
    {
hgs
parents:
diff changeset
   412
    iWait.AsyncStop();
hgs
parents:
diff changeset
   413
    }
hgs
parents:
diff changeset
   414
	
hgs
parents:
diff changeset
   415
// - Test methods -----------------------------------------------------------
hgs
parents:
diff changeset
   416
hgs
parents:
diff changeset
   417
// ---------------------------------------------------------
hgs
parents:
diff changeset
   418
// Default test env construction
hgs
parents:
diff changeset
   419
// ---------------------------------------------------------
hgs
parents:
diff changeset
   420
//
hgs
parents:
diff changeset
   421
TInt CHapticsClientTest::SetupL()
hgs
parents:
diff changeset
   422
    {
hgs
parents:
diff changeset
   423
    iHaptics = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
   424
    return KErrNone;
hgs
parents:
diff changeset
   425
    }
hgs
parents:
diff changeset
   426
hgs
parents:
diff changeset
   427
// ---------------------------------------------------------
hgs
parents:
diff changeset
   428
// Default test env destruction
hgs
parents:
diff changeset
   429
// ---------------------------------------------------------
hgs
parents:
diff changeset
   430
//
hgs
parents:
diff changeset
   431
TInt CHapticsClientTest::Teardown()
hgs
parents:
diff changeset
   432
    {
hgs
parents:
diff changeset
   433
    if( iHaptics )
hgs
parents:
diff changeset
   434
        {
hgs
parents:
diff changeset
   435
        delete iHaptics;
hgs
parents:
diff changeset
   436
        iHaptics = NULL;
hgs
parents:
diff changeset
   437
        }
hgs
parents:
diff changeset
   438
    return KErrNone;
hgs
parents:
diff changeset
   439
    }
hgs
parents:
diff changeset
   440
    
hgs
parents:
diff changeset
   441
// ---------------------------------------------------------
hgs
parents:
diff changeset
   442
// Helper methods for creating various effects
hgs
parents:
diff changeset
   443
// ---------------------------------------------------------
hgs
parents:
diff changeset
   444
//
hgs
parents:
diff changeset
   445
void CHapticsClientTest::CreateMagSweepEffect( CHWRMHaptics::THWRMHapticsMagSweepEffect& aEffect )
hgs
parents:
diff changeset
   446
    {
hgs
parents:
diff changeset
   447
    aEffect.iDuration    = 1000;
hgs
parents:
diff changeset
   448
    aEffect.iMagnitude   = 5000;
hgs
parents:
diff changeset
   449
    aEffect.iStyle       = CHWRMHaptics::EHWRMHapticsStyleSharp;
hgs
parents:
diff changeset
   450
    aEffect.iAttackTime  = 0;
hgs
parents:
diff changeset
   451
    aEffect.iAttackLevel = 0;
hgs
parents:
diff changeset
   452
    aEffect.iFadeTime    = 0;
hgs
parents:
diff changeset
   453
    aEffect.iFadeLevel   = 0;
hgs
parents:
diff changeset
   454
    }
hgs
parents:
diff changeset
   455
hgs
parents:
diff changeset
   456
void CHapticsClientTest::CreatePeriodicEffect( CHWRMHaptics::THWRMHapticsPeriodicEffect& aEffect )
hgs
parents:
diff changeset
   457
    {
hgs
parents:
diff changeset
   458
    aEffect.iDuration    = 1000;
hgs
parents:
diff changeset
   459
    aEffect.iMagnitude   = 5000;
hgs
parents:
diff changeset
   460
    aEffect.iPeriod      = 100;
hgs
parents:
diff changeset
   461
    aEffect.iStyle       = CHWRMHaptics::EHWRMHapticsStyleSharp;
hgs
parents:
diff changeset
   462
    aEffect.iAttackTime  = 0;
hgs
parents:
diff changeset
   463
    aEffect.iAttackLevel = 0;
hgs
parents:
diff changeset
   464
    aEffect.iFadeTime    = 0;
hgs
parents:
diff changeset
   465
    aEffect.iFadeLevel   = 0;
hgs
parents:
diff changeset
   466
    }
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
void CHapticsClientTest::CreateIVTEffect( RBuf8& aBuffer, CHWRMHaptics::THWRMHapticsEffectTypes aType)
hgs
parents:
diff changeset
   469
    {
hgs
parents:
diff changeset
   470
    // Note: only magsweep and timeline IVT effects supported so far..
hgs
parents:
diff changeset
   471
    switch ( aType )
hgs
parents:
diff changeset
   472
        {
hgs
parents:
diff changeset
   473
        case CHWRMHaptics::EHWRMHapticsTypePeriodic:
hgs
parents:
diff changeset
   474
            {
hgs
parents:
diff changeset
   475
            aBuffer.ReAlloc( sizeof( Periodic4HapticsMT_ivt ) );
hgs
parents:
diff changeset
   476
            TUint8* tmpPtr = const_cast<TUint8*>( aBuffer.Ptr() );
hgs
parents:
diff changeset
   477
            memcpy( tmpPtr, Periodic4HapticsMT_ivt, sizeof( Periodic4HapticsMT_ivt ) );
hgs
parents:
diff changeset
   478
            aBuffer.SetLength( sizeof( Periodic4HapticsMT_ivt ) );
hgs
parents:
diff changeset
   479
            break;  
hgs
parents:
diff changeset
   480
            }
hgs
parents:
diff changeset
   481
        case CHWRMHaptics::EHWRMHapticsTypeMagSweep:
hgs
parents:
diff changeset
   482
            {
hgs
parents:
diff changeset
   483
            aBuffer.ReAlloc( sizeof( Magsweep4HapticsMT_ivt ) );
hgs
parents:
diff changeset
   484
            TUint8* tmpPtr = const_cast<TUint8*>( aBuffer.Ptr() );
hgs
parents:
diff changeset
   485
            memcpy( tmpPtr, Magsweep4HapticsMT_ivt, sizeof( Magsweep4HapticsMT_ivt ) );
hgs
parents:
diff changeset
   486
            aBuffer.SetLength( sizeof( Magsweep4HapticsMT_ivt ) );
hgs
parents:
diff changeset
   487
            break;
hgs
parents:
diff changeset
   488
            }
hgs
parents:
diff changeset
   489
        case CHWRMHaptics::EHWRMHapticsTypeTimeline:
hgs
parents:
diff changeset
   490
            {
hgs
parents:
diff changeset
   491
            aBuffer.ReAlloc( sizeof( Timeline4HapticsMT_ivt ) );
hgs
parents:
diff changeset
   492
            TUint8* tmpPtr = const_cast<TUint8*>( aBuffer.Ptr() );
hgs
parents:
diff changeset
   493
            memcpy( tmpPtr, Timeline4HapticsMT_ivt, sizeof( Timeline4HapticsMT_ivt ) );
hgs
parents:
diff changeset
   494
            aBuffer.SetLength( sizeof( Timeline4HapticsMT_ivt ) );
hgs
parents:
diff changeset
   495
            break;  
hgs
parents:
diff changeset
   496
            }
hgs
parents:
diff changeset
   497
        default:
hgs
parents:
diff changeset
   498
            break; // no support for other types at the moment
hgs
parents:
diff changeset
   499
        }
hgs
parents:
diff changeset
   500
    }
hgs
parents:
diff changeset
   501
hgs
parents:
diff changeset
   502
hgs
parents:
diff changeset
   503
void CHapticsClientTest::CreateDummyStreamSample( TInt aSize, RBuf8& aBuffer )
hgs
parents:
diff changeset
   504
    {
hgs
parents:
diff changeset
   505
    aBuffer.ReAlloc( aSize );
hgs
parents:
diff changeset
   506
    TUint8* tmpPtr = const_cast<TUint8*>( aBuffer.Ptr() );
hgs
parents:
diff changeset
   507
    memset( tmpPtr, 0x00, aSize );
hgs
parents:
diff changeset
   508
    aBuffer.SetLength( aSize );
hgs
parents:
diff changeset
   509
    }
hgs
parents:
diff changeset
   510
hgs
parents:
diff changeset
   511
// ---------------------------------------------------------
hgs
parents:
diff changeset
   512
// Open and close haptics client-server session, i.e.
hgs
parents:
diff changeset
   513
// create and delete haptics client.
hgs
parents:
diff changeset
   514
// ---------------------------------------------------------
hgs
parents:
diff changeset
   515
//
hgs
parents:
diff changeset
   516
TInt CHapticsClientTest::T_CreateAndDeleteL()
hgs
parents:
diff changeset
   517
    {
hgs
parents:
diff changeset
   518
    // create iHaptics instance without observers
hgs
parents:
diff changeset
   519
    iHaptics = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
   520
hgs
parents:
diff changeset
   521
    // the connection has been opened successfully, if iHaptics is valid
hgs
parents:
diff changeset
   522
    TEST_ASSERT_DESC( iHaptics, "Haptics client creation failed!");
hgs
parents:
diff changeset
   523
hgs
parents:
diff changeset
   524
    // the connection is closed, when iHaptics is deleted
hgs
parents:
diff changeset
   525
    delete iHaptics;
hgs
parents:
diff changeset
   526
    iHaptics = NULL;
hgs
parents:
diff changeset
   527
    return KErrNone;
hgs
parents:
diff changeset
   528
    }
hgs
parents:
diff changeset
   529
    
hgs
parents:
diff changeset
   530
// ---------------------------------------------------------
hgs
parents:
diff changeset
   531
// Create several simultaneous sessions to haptics server.
hgs
parents:
diff changeset
   532
// ---------------------------------------------------------
hgs
parents:
diff changeset
   533
//
hgs
parents:
diff changeset
   534
TInt CHapticsClientTest::T_SeveralSessionsL()
hgs
parents:
diff changeset
   535
    {
hgs
parents:
diff changeset
   536
    // create haptics instances without observers. This creates
hgs
parents:
diff changeset
   537
    // client-server sessions (session instances in the server)
hgs
parents:
diff changeset
   538
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
   539
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
   540
    CHWRMHaptics* haptics3 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
   541
hgs
parents:
diff changeset
   542
    // the connection has been opened successfully, if instances are valid
hgs
parents:
diff changeset
   543
    TEST_ASSERT_DESC( haptics1, "First haptics client creation failed!");
hgs
parents:
diff changeset
   544
    TEST_ASSERT_DESC( haptics2, "Second haptics client creation failed!");
hgs
parents:
diff changeset
   545
    TEST_ASSERT_DESC( haptics3, "Third haptics client creation failed!");
hgs
parents:
diff changeset
   546
hgs
parents:
diff changeset
   547
    // delete haptics instances. This removes the sessions from 
hgs
parents:
diff changeset
   548
    // haptics server, and closes the server, when the last session 
hgs
parents:
diff changeset
   549
    // is closed
hgs
parents:
diff changeset
   550
    delete haptics1; haptics1 = NULL;
hgs
parents:
diff changeset
   551
    delete haptics2; haptics2 = NULL;
hgs
parents:
diff changeset
   552
    delete haptics3; haptics3 = NULL;
hgs
parents:
diff changeset
   553
    return KErrNone;
hgs
parents:
diff changeset
   554
    }
hgs
parents:
diff changeset
   555
hgs
parents:
diff changeset
   556
// ---------------------------------------------------------
hgs
parents:
diff changeset
   557
// Create several consecutive sessions to haptics server.
hgs
parents:
diff changeset
   558
// ---------------------------------------------------------
hgs
parents:
diff changeset
   559
//
hgs
parents:
diff changeset
   560
TInt CHapticsClientTest::T_ConsecutiveSessionsL()
hgs
parents:
diff changeset
   561
    {
hgs
parents:
diff changeset
   562
    // Do create and delete three times in a row
hgs
parents:
diff changeset
   563
    T_CreateAndDeleteL();
hgs
parents:
diff changeset
   564
    T_CreateAndDeleteL();
hgs
parents:
diff changeset
   565
    T_CreateAndDeleteL();
hgs
parents:
diff changeset
   566
    return KErrNone;
hgs
parents:
diff changeset
   567
    }
hgs
parents:
diff changeset
   568
hgs
parents:
diff changeset
   569
// ---------------------------------------------------------
hgs
parents:
diff changeset
   570
// Requests the supported actuators from haptics.
hgs
parents:
diff changeset
   571
// ---------------------------------------------------------
hgs
parents:
diff changeset
   572
//
hgs
parents:
diff changeset
   573
TInt CHapticsClientTest::T_SupportedActuators()
hgs
parents:
diff changeset
   574
    {
hgs
parents:
diff changeset
   575
    TUint32 actuators = 0;
hgs
parents:
diff changeset
   576
    TInt err = KErrNone;
hgs
parents:
diff changeset
   577
    err = iHaptics->SupportedActuators( actuators );
hgs
parents:
diff changeset
   578
    
hgs
parents:
diff changeset
   579
    TEST_ASSERT_DESC( (err == KErrNone), "Error returned from SupportedActuators()!" );
hgs
parents:
diff changeset
   580
    TEST_ASSERT_DESC( actuators, "Actuators empty!");
hgs
parents:
diff changeset
   581
    return err;
hgs
parents:
diff changeset
   582
    }
hgs
parents:
diff changeset
   583
hgs
parents:
diff changeset
   584
// ---------------------------------------------------------
hgs
parents:
diff changeset
   585
// Opens an actuator, which is supported by haptics.
hgs
parents:
diff changeset
   586
// ---------------------------------------------------------
hgs
parents:
diff changeset
   587
//
hgs
parents:
diff changeset
   588
TInt CHapticsClientTest::T_OpenSupportedActuator()
hgs
parents:
diff changeset
   589
    {
hgs
parents:
diff changeset
   590
    TUint32 actuators = 0;
hgs
parents:
diff changeset
   591
    TInt err = iHaptics->SupportedActuators( actuators );
hgs
parents:
diff changeset
   592
    
hgs
parents:
diff changeset
   593
    // Open using first supported logical actuator type
hgs
parents:
diff changeset
   594
    if( EHWRMLogicalActuatorAny & actuators )
hgs
parents:
diff changeset
   595
        {
hgs
parents:
diff changeset
   596
        TRAPD( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
   597
        TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type Any failed!" );
hgs
parents:
diff changeset
   598
        }
hgs
parents:
diff changeset
   599
    else if( EHWRMLogicalActuatorDevice & actuators )
hgs
parents:
diff changeset
   600
        {
hgs
parents:
diff changeset
   601
        TRAPD( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorDevice ) );
hgs
parents:
diff changeset
   602
        TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type Device failed!" );
hgs
parents:
diff changeset
   603
        }
hgs
parents:
diff changeset
   604
    else if( EHWRMLogicalActuatorPrimaryDisplay & actuators )
hgs
parents:
diff changeset
   605
        {
hgs
parents:
diff changeset
   606
        TRAPD( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorPrimaryDisplay ) );
hgs
parents:
diff changeset
   607
        TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type PrimaryDisplay failed!" );
hgs
parents:
diff changeset
   608
        }
hgs
parents:
diff changeset
   609
    else if( EHWRMLogicalActuatorSecondaryDisplay & actuators )
hgs
parents:
diff changeset
   610
        {
hgs
parents:
diff changeset
   611
        TRAPD( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorSecondaryDisplay ) );
hgs
parents:
diff changeset
   612
        TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type SecondaryDisplay failed!" );
hgs
parents:
diff changeset
   613
        }
hgs
parents:
diff changeset
   614
    else if( EHWRMLogicalActuatorGame & actuators )
hgs
parents:
diff changeset
   615
        {
hgs
parents:
diff changeset
   616
        TRAPD( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorGame ) );
hgs
parents:
diff changeset
   617
        TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type Game failed!" );
hgs
parents:
diff changeset
   618
        }
hgs
parents:
diff changeset
   619
    else if( EHWRMLogicalActuatorGameLeft & actuators )
hgs
parents:
diff changeset
   620
        {
hgs
parents:
diff changeset
   621
        TRAPD( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorGameLeft ) );
hgs
parents:
diff changeset
   622
        TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type GameLeft failed!" );
hgs
parents:
diff changeset
   623
        }
hgs
parents:
diff changeset
   624
    else if( EHWRMLogicalActuatorGameRight & actuators )
hgs
parents:
diff changeset
   625
        {
hgs
parents:
diff changeset
   626
        TRAPD( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorGameRight ) );
hgs
parents:
diff changeset
   627
        TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type GameRight failed!" );
hgs
parents:
diff changeset
   628
        }
hgs
parents:
diff changeset
   629
    else if( EHWRMLogicalActuatorExternalVibra & actuators )
hgs
parents:
diff changeset
   630
        {
hgs
parents:
diff changeset
   631
        TRAPD( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorExternalVibra ) );
hgs
parents:
diff changeset
   632
        TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type ExternalVibra failed!" );
hgs
parents:
diff changeset
   633
        }
hgs
parents:
diff changeset
   634
    return err;
hgs
parents:
diff changeset
   635
    }
hgs
parents:
diff changeset
   636
hgs
parents:
diff changeset
   637
// ---------------------------------------------------------
hgs
parents:
diff changeset
   638
// Attemps to open an actuator, which is NOT supported 
hgs
parents:
diff changeset
   639
// by haptics.
hgs
parents:
diff changeset
   640
// ---------------------------------------------------------
hgs
parents:
diff changeset
   641
//
hgs
parents:
diff changeset
   642
TInt CHapticsClientTest::T_OpenNotSupportedActuator()
hgs
parents:
diff changeset
   643
    {
hgs
parents:
diff changeset
   644
    TUint32 actuators = 0;
hgs
parents:
diff changeset
   645
    TInt err = iHaptics->SupportedActuators( actuators );
hgs
parents:
diff changeset
   646
    
hgs
parents:
diff changeset
   647
    TEST_ASSERT_DESC( (err == KErrNone), "Error returned from SupportedActuators()!" );
hgs
parents:
diff changeset
   648
hgs
parents:
diff changeset
   649
    // Open using first NOT supported logical actuator type
hgs
parents:
diff changeset
   650
    if( !( EHWRMLogicalActuatorAny & actuators ) )
hgs
parents:
diff changeset
   651
        {
hgs
parents:
diff changeset
   652
        TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
   653
        }
hgs
parents:
diff changeset
   654
    else if( !( EHWRMLogicalActuatorDevice & actuators ) )
hgs
parents:
diff changeset
   655
        {
hgs
parents:
diff changeset
   656
        TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorDevice ) );
hgs
parents:
diff changeset
   657
        }
hgs
parents:
diff changeset
   658
    else if( !( EHWRMLogicalActuatorPrimaryDisplay & actuators ) )
hgs
parents:
diff changeset
   659
        {
hgs
parents:
diff changeset
   660
        TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorPrimaryDisplay ) );
hgs
parents:
diff changeset
   661
        }
hgs
parents:
diff changeset
   662
    else if( !( EHWRMLogicalActuatorSecondaryDisplay & actuators ) )
hgs
parents:
diff changeset
   663
        {
hgs
parents:
diff changeset
   664
        TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorSecondaryDisplay ) );
hgs
parents:
diff changeset
   665
        }
hgs
parents:
diff changeset
   666
    else if( !( EHWRMLogicalActuatorGame & actuators ) )
hgs
parents:
diff changeset
   667
        {
hgs
parents:
diff changeset
   668
        TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorGame ) );
hgs
parents:
diff changeset
   669
        }
hgs
parents:
diff changeset
   670
    else if( !( EHWRMLogicalActuatorGameLeft & actuators ) )
hgs
parents:
diff changeset
   671
        {
hgs
parents:
diff changeset
   672
        TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorGameLeft ) );
hgs
parents:
diff changeset
   673
        }
hgs
parents:
diff changeset
   674
    else if( !( EHWRMLogicalActuatorGameRight & actuators ) )
hgs
parents:
diff changeset
   675
        {
hgs
parents:
diff changeset
   676
        TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorGameRight ) );
hgs
parents:
diff changeset
   677
        }
hgs
parents:
diff changeset
   678
    else if( !( EHWRMLogicalActuatorExternalVibra & actuators ) )
hgs
parents:
diff changeset
   679
        {
hgs
parents:
diff changeset
   680
        TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorExternalVibra ) );
hgs
parents:
diff changeset
   681
        }
hgs
parents:
diff changeset
   682
    
hgs
parents:
diff changeset
   683
    TEST_ASSERT_DESC( (err == KErrNotSupported), "Invalid error code value!" );
hgs
parents:
diff changeset
   684
    TEST_ASSERT_DESC( (err != KErrNone), "Opening unsupported actuator succeeded!" );
hgs
parents:
diff changeset
   685
    return KErrNone;
hgs
parents:
diff changeset
   686
    }
hgs
parents:
diff changeset
   687
hgs
parents:
diff changeset
   688
// ---------------------------------------------------------
hgs
parents:
diff changeset
   689
// Attemps to open actuators, using all available logical
hgs
parents:
diff changeset
   690
// actuator types.
hgs
parents:
diff changeset
   691
// ---------------------------------------------------------
hgs
parents:
diff changeset
   692
//
hgs
parents:
diff changeset
   693
TInt CHapticsClientTest::T_OpenAllActuators()
hgs
parents:
diff changeset
   694
    {
hgs
parents:
diff changeset
   695
    TInt actuatorMask = EHWRMLogicalActuatorPrimaryDisplay | EHWRMLogicalActuatorSecondaryDisplay;
hgs
parents:
diff changeset
   696
    
hgs
parents:
diff changeset
   697
    TRAPD( err, iHaptics->OpenActuatorL( (THWRMLogicalActuators)actuatorMask ) );
hgs
parents:
diff changeset
   698
    TEST_ASSERT_DESC( (err == KErrArgument), "Opening actuator with several type mask succeeded!" );
hgs
parents:
diff changeset
   699
hgs
parents:
diff changeset
   700
    TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorPrimaryDisplay ) );
hgs
parents:
diff changeset
   701
    TEST_ASSERT_DESC( (err == KErrNotSupported), "Opening actuator with type PrimaryDisplay succeeded!" );
hgs
parents:
diff changeset
   702
hgs
parents:
diff changeset
   703
    TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorSecondaryDisplay ) );
hgs
parents:
diff changeset
   704
    TEST_ASSERT_DESC( (err == KErrNotSupported), "Opening actuator with type SecondaryDisplay succeeded!" );
hgs
parents:
diff changeset
   705
hgs
parents:
diff changeset
   706
    TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorGame ) );
hgs
parents:
diff changeset
   707
    TEST_ASSERT_DESC( (err == KErrNotSupported), "Opening actuator with type Game succeeded!" );
hgs
parents:
diff changeset
   708
hgs
parents:
diff changeset
   709
    TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorGameLeft ) );
hgs
parents:
diff changeset
   710
    TEST_ASSERT_DESC( (err == KErrNotSupported), "Opening actuator with type GameLeft succeeded!" );
hgs
parents:
diff changeset
   711
hgs
parents:
diff changeset
   712
    TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorGameRight ) );
hgs
parents:
diff changeset
   713
    TEST_ASSERT_DESC( (err == KErrNotSupported), "Opening actuator with type GameRight succeeded!" );
hgs
parents:
diff changeset
   714
hgs
parents:
diff changeset
   715
    TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
   716
    TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type Any failed!" );
hgs
parents:
diff changeset
   717
hgs
parents:
diff changeset
   718
    TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
   719
    TEST_ASSERT_DESC( (err == KErrAlreadyExists), "Opening actuator with type Any; wrong error code" );
hgs
parents:
diff changeset
   720
hgs
parents:
diff changeset
   721
    TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorDevice ) );
hgs
parents:
diff changeset
   722
    TEST_ASSERT_DESC( (err == KErrInUse), "Opening actuator with type Device; wrong error code" );
hgs
parents:
diff changeset
   723
hgs
parents:
diff changeset
   724
    TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorExternalVibra ) );
hgs
parents:
diff changeset
   725
    TEST_ASSERT_DESC( (err == KErrInUse), "Opening actuator with type ExternalVibra; wrong error code!" );
hgs
parents:
diff changeset
   726
    return KErrNone;
hgs
parents:
diff changeset
   727
    }
hgs
parents:
diff changeset
   728
hgs
parents:
diff changeset
   729
// ---------------------------------------------------------
hgs
parents:
diff changeset
   730
// Creates a couple of haptic client instances, and opens
hgs
parents:
diff changeset
   731
// actuators in both of them.
hgs
parents:
diff changeset
   732
// ---------------------------------------------------------
hgs
parents:
diff changeset
   733
//
hgs
parents:
diff changeset
   734
TInt CHapticsClientTest::T_SeveralClientsWithOpenActuatorsL()
hgs
parents:
diff changeset
   735
    {
hgs
parents:
diff changeset
   736
    // create first haptics client instance
hgs
parents:
diff changeset
   737
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
   738
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
   739
hgs
parents:
diff changeset
   740
    // create second haptics client instance
hgs
parents:
diff changeset
   741
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
   742
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
   743
hgs
parents:
diff changeset
   744
    // fetch supported actuator types
hgs
parents:
diff changeset
   745
    TUint32 actuators = 0;
hgs
parents:
diff changeset
   746
    TInt err = haptics1->SupportedActuators( actuators );
hgs
parents:
diff changeset
   747
    TEST_ASSERT_DESC( (err == KErrNone), "Error returned from SupportedActuators()!" );
hgs
parents:
diff changeset
   748
hgs
parents:
diff changeset
   749
    // open actuators for both instances using supported types
hgs
parents:
diff changeset
   750
    if( EHWRMLogicalActuatorAny & actuators )
hgs
parents:
diff changeset
   751
        {
hgs
parents:
diff changeset
   752
        TRAPD( err, haptics1->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
   753
        TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type Any failed!" );
hgs
parents:
diff changeset
   754
hgs
parents:
diff changeset
   755
        TRAP( err, haptics2->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
   756
        TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type Any failed!" );
hgs
parents:
diff changeset
   757
        }
hgs
parents:
diff changeset
   758
    else
hgs
parents:
diff changeset
   759
        {
hgs
parents:
diff changeset
   760
        TEST_ASSERT_DESC( EFalse, "Actuator type Any not supported!" );
hgs
parents:
diff changeset
   761
        }
hgs
parents:
diff changeset
   762
hgs
parents:
diff changeset
   763
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
   764
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
   765
    return KErrNone;
hgs
parents:
diff changeset
   766
    }
hgs
parents:
diff changeset
   767
hgs
parents:
diff changeset
   768
// ---------------------------------------------------------
hgs
parents:
diff changeset
   769
// Plays a magsweep effect using synchronous API call.
hgs
parents:
diff changeset
   770
// ---------------------------------------------------------
hgs
parents:
diff changeset
   771
//
hgs
parents:
diff changeset
   772
TInt CHapticsClientTest::T_PlayMagSweepEffectSynchronous()
hgs
parents:
diff changeset
   773
    {
hgs
parents:
diff changeset
   774
    // open actuator.. 
hgs
parents:
diff changeset
   775
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
   776
    
hgs
parents:
diff changeset
   777
    // create a magsweep effect
hgs
parents:
diff changeset
   778
    CHWRMHaptics::THWRMHapticsMagSweepEffect effect;
hgs
parents:
diff changeset
   779
    CreateMagSweepEffect( effect );
hgs
parents:
diff changeset
   780
    
hgs
parents:
diff changeset
   781
    // play effect  
hgs
parents:
diff changeset
   782
    TInt effectHandle;
hgs
parents:
diff changeset
   783
    TInt err = iHaptics->PlayMagSweepEffect( effect, effectHandle ); 
hgs
parents:
diff changeset
   784
    TEST_ASSERT_DESC( (err == KErrNone), "Playing magsweep effect synchronously failed!" );
hgs
parents:
diff changeset
   785
    TEST_ASSERT_DESC( effectHandle, "Playing magsweep effect synchronously returned empty effect handle!" );
hgs
parents:
diff changeset
   786
hgs
parents:
diff changeset
   787
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
   788
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
   789
    TEST_ASSERT_DESC( (err == KErrNone), "Playing magsweep effect synchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
   790
    return err;
hgs
parents:
diff changeset
   791
    }
hgs
parents:
diff changeset
   792
    
hgs
parents:
diff changeset
   793
hgs
parents:
diff changeset
   794
// ---------------------------------------------------------
hgs
parents:
diff changeset
   795
// Plays a magsweep effect using asynchronous API call.
hgs
parents:
diff changeset
   796
// ---------------------------------------------------------
hgs
parents:
diff changeset
   797
//  
hgs
parents:
diff changeset
   798
TInt CHapticsClientTest::T_PlayMagSweepEffectAsynchronous()
hgs
parents:
diff changeset
   799
    {
hgs
parents:
diff changeset
   800
    // open actuator.. 
hgs
parents:
diff changeset
   801
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
   802
    
hgs
parents:
diff changeset
   803
    // create a magsweep effect
hgs
parents:
diff changeset
   804
    CHWRMHaptics::THWRMHapticsMagSweepEffect effect;
hgs
parents:
diff changeset
   805
    CreateMagSweepEffect( effect );
hgs
parents:
diff changeset
   806
    
hgs
parents:
diff changeset
   807
    // play effect  
hgs
parents:
diff changeset
   808
    TInt effectHandle;
hgs
parents:
diff changeset
   809
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
   810
    iHaptics->PlayMagSweepEffect( effect, effectHandle, status ); 
hgs
parents:
diff changeset
   811
    User::WaitForRequest( status );
hgs
parents:
diff changeset
   812
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing magsweep effect asynchronously failed!" );
hgs
parents:
diff changeset
   813
    TEST_ASSERT_DESC( effectHandle, "Playing magsweep effect asynchronously returned empty effect handle!" );
hgs
parents:
diff changeset
   814
hgs
parents:
diff changeset
   815
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
   816
    TInt err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
   817
    TEST_ASSERT_DESC( (err == KErrNone), "Playing magsweep effect asynchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
   818
    
hgs
parents:
diff changeset
   819
    return err;
hgs
parents:
diff changeset
   820
    }
hgs
parents:
diff changeset
   821
     
hgs
parents:
diff changeset
   822
hgs
parents:
diff changeset
   823
// ---------------------------------------------------------
hgs
parents:
diff changeset
   824
// Plays a periodic effect using synchronous API call.
hgs
parents:
diff changeset
   825
// ---------------------------------------------------------
hgs
parents:
diff changeset
   826
//  
hgs
parents:
diff changeset
   827
TInt CHapticsClientTest::T_PlayPeriodicEffectSynchronous()
hgs
parents:
diff changeset
   828
    {
hgs
parents:
diff changeset
   829
    // open actuator.. 
hgs
parents:
diff changeset
   830
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
   831
    
hgs
parents:
diff changeset
   832
    // create a magsweep effect
hgs
parents:
diff changeset
   833
    CHWRMHaptics::THWRMHapticsPeriodicEffect effect;
hgs
parents:
diff changeset
   834
    CreatePeriodicEffect( effect );
hgs
parents:
diff changeset
   835
    
hgs
parents:
diff changeset
   836
    // play effect  
hgs
parents:
diff changeset
   837
    TInt effectHandle;
hgs
parents:
diff changeset
   838
    TInt err = iHaptics->PlayPeriodicEffect( effect, effectHandle ); 
hgs
parents:
diff changeset
   839
    TEST_ASSERT_DESC( (err == KErrNone), "Playing periodic effect synchronously failed!" );
hgs
parents:
diff changeset
   840
    TEST_ASSERT_DESC( effectHandle, "Playing periodic effect returned empty effect handle!" );
hgs
parents:
diff changeset
   841
hgs
parents:
diff changeset
   842
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
   843
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
   844
    TEST_ASSERT_DESC( (err == KErrNone), "Playing periodic effect synchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
   845
    return err;
hgs
parents:
diff changeset
   846
    }
hgs
parents:
diff changeset
   847
    
hgs
parents:
diff changeset
   848
// ---------------------------------------------------------
hgs
parents:
diff changeset
   849
// Plays a periodic effect using synchronous API call.
hgs
parents:
diff changeset
   850
// ---------------------------------------------------------
hgs
parents:
diff changeset
   851
//  
hgs
parents:
diff changeset
   852
TInt CHapticsClientTest::T_PlayPeriodicEffectAsynchronous()
hgs
parents:
diff changeset
   853
    {
hgs
parents:
diff changeset
   854
    // open actuator.. 
hgs
parents:
diff changeset
   855
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
   856
    
hgs
parents:
diff changeset
   857
    // create a magsweep effect
hgs
parents:
diff changeset
   858
    CHWRMHaptics::THWRMHapticsPeriodicEffect effect;
hgs
parents:
diff changeset
   859
    CreatePeriodicEffect( effect );
hgs
parents:
diff changeset
   860
    
hgs
parents:
diff changeset
   861
    // play effect  
hgs
parents:
diff changeset
   862
    TInt effectHandle;
hgs
parents:
diff changeset
   863
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
   864
    iHaptics->PlayPeriodicEffect( effect, effectHandle, status ); 
hgs
parents:
diff changeset
   865
    User::WaitForRequest( status );
hgs
parents:
diff changeset
   866
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing periodic effect asynchronously failed!" );
hgs
parents:
diff changeset
   867
    TEST_ASSERT_DESC( effectHandle, "Playing periodic effect asynchronously returned empty effect handle!" );
hgs
parents:
diff changeset
   868
hgs
parents:
diff changeset
   869
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
   870
    TInt err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
   871
    TEST_ASSERT_DESC( (err == KErrNone), "Playing periodic effect asynchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
   872
    return err;
hgs
parents:
diff changeset
   873
    }
hgs
parents:
diff changeset
   874
hgs
parents:
diff changeset
   875
hgs
parents:
diff changeset
   876
// ---------------------------------------------------------
hgs
parents:
diff changeset
   877
// Plays an IVT effect using synchronous API call.
hgs
parents:
diff changeset
   878
// The effect is given as TDes8C& parameter directly to the API call.
hgs
parents:
diff changeset
   879
// ---------------------------------------------------------
hgs
parents:
diff changeset
   880
// 
hgs
parents:
diff changeset
   881
TInt CHapticsClientTest::T_PlayIVTEffectWithDirectDataSynchronous()
hgs
parents:
diff changeset
   882
    {
hgs
parents:
diff changeset
   883
    // open actuator.. 
hgs
parents:
diff changeset
   884
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
   885
    
hgs
parents:
diff changeset
   886
    // read magsweep effect to buffer
hgs
parents:
diff changeset
   887
    RBuf8 effBuf;
hgs
parents:
diff changeset
   888
    CleanupClosePushL( effBuf );
hgs
parents:
diff changeset
   889
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
   890
    
hgs
parents:
diff changeset
   891
    // play the effect  
hgs
parents:
diff changeset
   892
    TInt effectHandle;
hgs
parents:
diff changeset
   893
    TInt err = iHaptics->PlayEffect( effBuf, 0, effectHandle ); 
hgs
parents:
diff changeset
   894
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect synchronously failed!" );
hgs
parents:
diff changeset
   895
    TEST_ASSERT_DESC( effectHandle, "Playingeffect IVT synchronously returned empty effect handle!" );
hgs
parents:
diff changeset
   896
hgs
parents:
diff changeset
   897
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
   898
    CleanupStack::PopAndDestroy(); // effBuf
hgs
parents:
diff changeset
   899
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
   900
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect synchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
   901
hgs
parents:
diff changeset
   902
    return err;
hgs
parents:
diff changeset
   903
    }
hgs
parents:
diff changeset
   904
    
hgs
parents:
diff changeset
   905
// ---------------------------------------------------------
hgs
parents:
diff changeset
   906
// Plays an IVT effect using asynchronous API call.
hgs
parents:
diff changeset
   907
// The effect is given as TDes8C& parameter directly to the API call.
hgs
parents:
diff changeset
   908
// ---------------------------------------------------------
hgs
parents:
diff changeset
   909
//   
hgs
parents:
diff changeset
   910
TInt CHapticsClientTest::T_PlayIVTEffectWithDirectDataAsynchronous()
hgs
parents:
diff changeset
   911
    {
hgs
parents:
diff changeset
   912
    // open actuator.. 
hgs
parents:
diff changeset
   913
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
   914
    
hgs
parents:
diff changeset
   915
    // read magsweep effect to buffer
hgs
parents:
diff changeset
   916
    RBuf8 effBuf;
hgs
parents:
diff changeset
   917
    CleanupClosePushL( effBuf );
hgs
parents:
diff changeset
   918
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
   919
    
hgs
parents:
diff changeset
   920
    // play effect  
hgs
parents:
diff changeset
   921
    TInt effectHandle;
hgs
parents:
diff changeset
   922
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
   923
    iHaptics->PlayEffect( effBuf, 0, effectHandle, status );
hgs
parents:
diff changeset
   924
    User::WaitForRequest( status );
hgs
parents:
diff changeset
   925
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing IVT effect asynchronously failed!" );
hgs
parents:
diff changeset
   926
    TEST_ASSERT_DESC( effectHandle, "Playing IVT effect asynchronously returned empty effect handle!" );
hgs
parents:
diff changeset
   927
    
hgs
parents:
diff changeset
   928
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
   929
    CleanupStack::PopAndDestroy(); // effBuf
hgs
parents:
diff changeset
   930
    TInt err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
   931
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect asynchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
   932
    return err;
hgs
parents:
diff changeset
   933
    }
hgs
parents:
diff changeset
   934
    
hgs
parents:
diff changeset
   935
// ---------------------------------------------------------
hgs
parents:
diff changeset
   936
// Plays repeatedly an IVT effect using synchronous API call.
hgs
parents:
diff changeset
   937
// The effect is given as TDes8C& parameter directly to the API call.
hgs
parents:
diff changeset
   938
// ---------------------------------------------------------
hgs
parents:
diff changeset
   939
//  
hgs
parents:
diff changeset
   940
TInt CHapticsClientTest::T_PlayIVTEffectRepeatWithDirectDataSynchronous()
hgs
parents:
diff changeset
   941
    {
hgs
parents:
diff changeset
   942
    // open actuator.. 
hgs
parents:
diff changeset
   943
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
   944
    
hgs
parents:
diff changeset
   945
    // read timeline effect to buffer
hgs
parents:
diff changeset
   946
    RBuf8 effBuf;
hgs
parents:
diff changeset
   947
    CleanupClosePushL( effBuf );
hgs
parents:
diff changeset
   948
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeTimeline );
hgs
parents:
diff changeset
   949
    
hgs
parents:
diff changeset
   950
    // play the effect (repeat 2 times)
hgs
parents:
diff changeset
   951
    TInt effectHandle;
hgs
parents:
diff changeset
   952
    TInt err = iHaptics->PlayEffectRepeat( effBuf, 0, 2, effectHandle ); 
hgs
parents:
diff changeset
   953
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect repeatedly synchronously failed!" );
hgs
parents:
diff changeset
   954
    TEST_ASSERT_DESC( effectHandle, "Playing IVT effect repeatedly synchronously returned empty effect handle!" );
hgs
parents:
diff changeset
   955
hgs
parents:
diff changeset
   956
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
   957
    CleanupStack::PopAndDestroy(); // effBuf
hgs
parents:
diff changeset
   958
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
   959
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect repeatedly synchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
   960
    return err;
hgs
parents:
diff changeset
   961
    }
hgs
parents:
diff changeset
   962
hgs
parents:
diff changeset
   963
// ---------------------------------------------------------
hgs
parents:
diff changeset
   964
// Plays repeatedly an IVT effect using asynchronous API call.
hgs
parents:
diff changeset
   965
// The effect is given as TDes8C& parameter directly to the API call.
hgs
parents:
diff changeset
   966
// ---------------------------------------------------------
hgs
parents:
diff changeset
   967
//      
hgs
parents:
diff changeset
   968
TInt CHapticsClientTest::T_PlayIVTEffectRepeatWithDirectDataAsynchronous()
hgs
parents:
diff changeset
   969
    {
hgs
parents:
diff changeset
   970
    // open actuator.. 
hgs
parents:
diff changeset
   971
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
   972
    
hgs
parents:
diff changeset
   973
    // read timeline effect to buffer
hgs
parents:
diff changeset
   974
    RBuf8 effBuf;
hgs
parents:
diff changeset
   975
    CleanupClosePushL( effBuf );
hgs
parents:
diff changeset
   976
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeTimeline );
hgs
parents:
diff changeset
   977
    
hgs
parents:
diff changeset
   978
    // play effect  (repeat 2 times)
hgs
parents:
diff changeset
   979
    TInt effectHandle;
hgs
parents:
diff changeset
   980
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
   981
    iHaptics->PlayEffectRepeat( effBuf, 0, 2, effectHandle, status );
hgs
parents:
diff changeset
   982
    User::WaitForRequest( status );
hgs
parents:
diff changeset
   983
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing IVT effect repeatedly asynchronously failed!" );
hgs
parents:
diff changeset
   984
    TEST_ASSERT_DESC( effectHandle, "Playing IVT effect repeatedly asynchronously returned empty effect handle!" );
hgs
parents:
diff changeset
   985
    
hgs
parents:
diff changeset
   986
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
   987
    CleanupStack::PopAndDestroy(); // effBuf
hgs
parents:
diff changeset
   988
    TInt err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
   989
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect repeatedly asynchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
   990
    return err;
hgs
parents:
diff changeset
   991
    }
hgs
parents:
diff changeset
   992
hgs
parents:
diff changeset
   993
// ---------------------------------------------------------
hgs
parents:
diff changeset
   994
// Gets the effect state while an effect:
hgs
parents:
diff changeset
   995
//    a) is being played
hgs
parents:
diff changeset
   996
//    b) has been paused
hgs
parents:
diff changeset
   997
//    c) has been completed (i.e., is not playing any more)
hgs
parents:
diff changeset
   998
// ---------------------------------------------------------
hgs
parents:
diff changeset
   999
// 
hgs
parents:
diff changeset
  1000
TInt CHapticsClientTest::T_GetEffectState()
hgs
parents:
diff changeset
  1001
    {
hgs
parents:
diff changeset
  1002
    // open actuator.. 
hgs
parents:
diff changeset
  1003
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  1004
    
hgs
parents:
diff changeset
  1005
    // create a magsweep effect
hgs
parents:
diff changeset
  1006
    CHWRMHaptics::THWRMHapticsMagSweepEffect effect;
hgs
parents:
diff changeset
  1007
    CreateMagSweepEffect( effect );
hgs
parents:
diff changeset
  1008
    
hgs
parents:
diff changeset
  1009
    // play effect  
hgs
parents:
diff changeset
  1010
    TInt effectHandle;
hgs
parents:
diff changeset
  1011
    TInt err = iHaptics->PlayMagSweepEffect( effect, effectHandle ); 
hgs
parents:
diff changeset
  1012
    TEST_ASSERT_DESC( (err == KErrNone), "GetEffectState failed! (playing returned error)" );
hgs
parents:
diff changeset
  1013
    TEST_ASSERT_DESC( effectHandle, "GetEffectState failed! (empty effect handle)" );
hgs
parents:
diff changeset
  1014
hgs
parents:
diff changeset
  1015
    // get state
hgs
parents:
diff changeset
  1016
    TInt effectState;
hgs
parents:
diff changeset
  1017
    err = iHaptics->GetEffectState( effectHandle, effectState );
hgs
parents:
diff changeset
  1018
    TEST_ASSERT_DESC( (err == KErrNone), "GetEffectState failed! (1st call)" );
hgs
parents:
diff changeset
  1019
    TEST_ASSERT_DESC( (effectState == CHWRMHaptics::EHWRMHapticsEffectPlaying), "GetEffectState failed! (1st call - wrong state)" );
hgs
parents:
diff changeset
  1020
    
hgs
parents:
diff changeset
  1021
    // pause the effect and get state
hgs
parents:
diff changeset
  1022
    err = iHaptics->PausePlayingEffect( effectHandle );
hgs
parents:
diff changeset
  1023
    TEST_ASSERT_DESC( (err == KErrNone), "GetEffectState failed! (Pause)" );
hgs
parents:
diff changeset
  1024
hgs
parents:
diff changeset
  1025
    err = iHaptics->GetEffectState( effectHandle, effectState );
hgs
parents:
diff changeset
  1026
    TEST_ASSERT_DESC( (err == KErrNone), "GetEffectState failed! (2nd call)" );
hgs
parents:
diff changeset
  1027
    TEST_ASSERT_DESC( (effectState == CHWRMHaptics::EHWRMHapticsEffectPaused), "GetEffectState failed! (2nd call - wrong state)" ); 
hgs
parents:
diff changeset
  1028
hgs
parents:
diff changeset
  1029
    // stop the effect and get state again
hgs
parents:
diff changeset
  1030
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  1031
    TEST_ASSERT_DESC( (err == KErrNone), "GetEffectState failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  1032
    
hgs
parents:
diff changeset
  1033
    err = iHaptics->GetEffectState( effectHandle, effectState );
hgs
parents:
diff changeset
  1034
    TEST_ASSERT_DESC( (err == KErrNone), "GetEffectState failed! (3rd call)" );
hgs
parents:
diff changeset
  1035
    TEST_ASSERT_DESC( (effectState == CHWRMHaptics::EHWRMHapticsEffectNotPlaying), "GetEffectState failed! (3rd call - wrong state)" );
hgs
parents:
diff changeset
  1036
    return err;
hgs
parents:
diff changeset
  1037
    }
hgs
parents:
diff changeset
  1038
hgs
parents:
diff changeset
  1039
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1040
// Plays repeatedly an IVT effect using synchronous API call.
hgs
parents:
diff changeset
  1041
// The effect is given as TDes8C& parameter directly to the API call.
hgs
parents:
diff changeset
  1042
// Since the effect in question is not a timeline effect (in 
hgs
parents:
diff changeset
  1043
// this test we use magsweep effect instead), the effect is 
hgs
parents:
diff changeset
  1044
// played only once.
hgs
parents:
diff changeset
  1045
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1046
//  
hgs
parents:
diff changeset
  1047
TInt CHapticsClientTest::T_PlayNonTimelineIVTEffectRepeatWithDirectDataSynchronous()
hgs
parents:
diff changeset
  1048
    {
hgs
parents:
diff changeset
  1049
    // open actuator.. 
hgs
parents:
diff changeset
  1050
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  1051
    
hgs
parents:
diff changeset
  1052
    // read magsweep effect to buffer
hgs
parents:
diff changeset
  1053
    RBuf8 effBuf;
hgs
parents:
diff changeset
  1054
    CleanupClosePushL( effBuf );
hgs
parents:
diff changeset
  1055
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  1056
    
hgs
parents:
diff changeset
  1057
    // play the effect (try to repeat 2 times.. in practice will only repeat once 
hgs
parents:
diff changeset
  1058
    // due to the effect being non timeline effect)
hgs
parents:
diff changeset
  1059
    TInt effectHandle;
hgs
parents:
diff changeset
  1060
    TInt err = iHaptics->PlayEffectRepeat( effBuf, 0, 2, effectHandle ); 
hgs
parents:
diff changeset
  1061
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect (non-timeline) repeatedly synchronously failed!" );
hgs
parents:
diff changeset
  1062
    TEST_ASSERT_DESC( effectHandle, "Playing IVT effect (non-timeline) repeatedly synchronously returned empty effect handle!" );
hgs
parents:
diff changeset
  1063
hgs
parents:
diff changeset
  1064
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
  1065
    CleanupStack::PopAndDestroy(); // effBuf
hgs
parents:
diff changeset
  1066
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  1067
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect (non-timeline) repeatedly synchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  1068
    return err;
hgs
parents:
diff changeset
  1069
    }
hgs
parents:
diff changeset
  1070
hgs
parents:
diff changeset
  1071
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1072
// Plays repeatedly an IVT effect using asynchronous API call.
hgs
parents:
diff changeset
  1073
// The effect is given as TDes8C& parameter directly to the API call.
hgs
parents:
diff changeset
  1074
// Since the effect in question is not a timeline effect (in 
hgs
parents:
diff changeset
  1075
// this test we use magsweep effect instead), the effect is 
hgs
parents:
diff changeset
  1076
// played only once.
hgs
parents:
diff changeset
  1077
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1078
// 
hgs
parents:
diff changeset
  1079
TInt CHapticsClientTest::T_PlayNonTimelineIVTEffectRepeatWithDirectDataAsynchronous()
hgs
parents:
diff changeset
  1080
    {
hgs
parents:
diff changeset
  1081
    // open actuator.. 
hgs
parents:
diff changeset
  1082
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  1083
    
hgs
parents:
diff changeset
  1084
    // read magsweep effect to buffer
hgs
parents:
diff changeset
  1085
    RBuf8 effBuf;
hgs
parents:
diff changeset
  1086
    CleanupClosePushL( effBuf );
hgs
parents:
diff changeset
  1087
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  1088
    
hgs
parents:
diff changeset
  1089
    // play the effect (try to repeat 2 times.. in practice will only repeat once 
hgs
parents:
diff changeset
  1090
    // due to the effect being non timeline effect)
hgs
parents:
diff changeset
  1091
    TInt effectHandle;
hgs
parents:
diff changeset
  1092
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
  1093
    iHaptics->PlayEffectRepeat( effBuf, 0, 2, effectHandle, status );
hgs
parents:
diff changeset
  1094
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  1095
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing IVT effect (non-timeline) repeatedly asynchronously failed!" );
hgs
parents:
diff changeset
  1096
    TEST_ASSERT_DESC( effectHandle, "Playing IVT effect (non-timeline) repeatedly asynchronously returned empty effect handle!" );
hgs
parents:
diff changeset
  1097
    
hgs
parents:
diff changeset
  1098
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
  1099
    CleanupStack::PopAndDestroy(); // effBuf
hgs
parents:
diff changeset
  1100
    TInt err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  1101
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect (non-timeline) repeatedly asynchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  1102
    return err;
hgs
parents:
diff changeset
  1103
    }
hgs
parents:
diff changeset
  1104
    
hgs
parents:
diff changeset
  1105
TInt CHapticsClientTest::T_PlayIVTEffectRepeatWithDirectDataWithZeroRepeatValueSynchronous()
hgs
parents:
diff changeset
  1106
    {
hgs
parents:
diff changeset
  1107
    // open actuator.. 
hgs
parents:
diff changeset
  1108
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  1109
    
hgs
parents:
diff changeset
  1110
    // read timeline effect to buffer
hgs
parents:
diff changeset
  1111
    RBuf8 effBuf;
hgs
parents:
diff changeset
  1112
    CleanupClosePushL( effBuf );
hgs
parents:
diff changeset
  1113
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeTimeline );
hgs
parents:
diff changeset
  1114
    
hgs
parents:
diff changeset
  1115
    // play the effect (repeat 0 times)
hgs
parents:
diff changeset
  1116
    TInt effectHandle;
hgs
parents:
diff changeset
  1117
    TInt err = iHaptics->PlayEffectRepeat( effBuf, 0, 0, effectHandle ); 
hgs
parents:
diff changeset
  1118
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect repeatedly (zero repeats) synchronously failed!" );
hgs
parents:
diff changeset
  1119
    TEST_ASSERT_DESC( effectHandle, "Playing IVT effect repeatedly (zero repeats) synchronously returned empty effect handle!" );
hgs
parents:
diff changeset
  1120
hgs
parents:
diff changeset
  1121
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
  1122
    CleanupStack::PopAndDestroy(); // effBuf
hgs
parents:
diff changeset
  1123
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  1124
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect repeatedly (zero repeats) synchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  1125
    return err;
hgs
parents:
diff changeset
  1126
    }
hgs
parents:
diff changeset
  1127
hgs
parents:
diff changeset
  1128
hgs
parents:
diff changeset
  1129
TInt CHapticsClientTest::T_PlayIVTEffectRepeatWithDirectDataWithZeroRepeatValueAsynchronous()
hgs
parents:
diff changeset
  1130
    {
hgs
parents:
diff changeset
  1131
    // open actuator.. 
hgs
parents:
diff changeset
  1132
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  1133
    
hgs
parents:
diff changeset
  1134
    // read timeline effect to buffer
hgs
parents:
diff changeset
  1135
    RBuf8 effBuf;
hgs
parents:
diff changeset
  1136
    CleanupClosePushL( effBuf );
hgs
parents:
diff changeset
  1137
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeTimeline );
hgs
parents:
diff changeset
  1138
    
hgs
parents:
diff changeset
  1139
    // play effect  (repeat 0 times)
hgs
parents:
diff changeset
  1140
    TInt effectHandle;
hgs
parents:
diff changeset
  1141
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
  1142
    iHaptics->PlayEffectRepeat( effBuf, 0, 0, effectHandle, status );
hgs
parents:
diff changeset
  1143
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  1144
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing IVT effect repeatedly (zero repeats) asynchronously failed!" );
hgs
parents:
diff changeset
  1145
    TEST_ASSERT_DESC( effectHandle, "Playing IVT effect repeatedly (zero repeats) asynchronously returned empty effect handle!" );
hgs
parents:
diff changeset
  1146
    
hgs
parents:
diff changeset
  1147
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
  1148
    CleanupStack::PopAndDestroy(); // effBuf
hgs
parents:
diff changeset
  1149
    TInt err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  1150
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect repeatedly (zero repeats) asynchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  1151
    return err;
hgs
parents:
diff changeset
  1152
    }
hgs
parents:
diff changeset
  1153
hgs
parents:
diff changeset
  1154
    
hgs
parents:
diff changeset
  1155
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1156
// Loading IVT data 
hgs
parents:
diff changeset
  1157
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1158
//
hgs
parents:
diff changeset
  1159
TInt CHapticsClientTest::LoadIVTDataInternal( TInt& aFileHandle, 
hgs
parents:
diff changeset
  1160
                                            CHWRMHaptics::THWRMHapticsEffectTypes aType,
hgs
parents:
diff changeset
  1161
                                            TBool aOpenActuator )
hgs
parents:
diff changeset
  1162
    {
hgs
parents:
diff changeset
  1163
    // NOTE: we can use the same IVT data as was used in previous "call PlayXXXEffect()
hgs
parents:
diff changeset
  1164
    // with direct data cases (i.e., there's no need e.g. to read data from file..)
hgs
parents:
diff changeset
  1165
    
hgs
parents:
diff changeset
  1166
    // open actuator.. 
hgs
parents:
diff changeset
  1167
    if ( aOpenActuator )
hgs
parents:
diff changeset
  1168
        {
hgs
parents:
diff changeset
  1169
        T_OpenSupportedActuator();
hgs
parents:
diff changeset
  1170
        }
hgs
parents:
diff changeset
  1171
hgs
parents:
diff changeset
  1172
    // read effect to buffer
hgs
parents:
diff changeset
  1173
    RBuf8 effBuf;
hgs
parents:
diff changeset
  1174
    CleanupClosePushL( effBuf );
hgs
parents:
diff changeset
  1175
    CreateIVTEffect( effBuf, aType );
hgs
parents:
diff changeset
  1176
hgs
parents:
diff changeset
  1177
    TInt retVal = iHaptics->LoadEffectData( effBuf, aFileHandle );
hgs
parents:
diff changeset
  1178
    
hgs
parents:
diff changeset
  1179
    CleanupStack::PopAndDestroy(); // effBuf
hgs
parents:
diff changeset
  1180
    return retVal;
hgs
parents:
diff changeset
  1181
    }
hgs
parents:
diff changeset
  1182
hgs
parents:
diff changeset
  1183
TInt CHapticsClientTest::LoadIVTDataInternal( TInt& aFileHandle, 
hgs
parents:
diff changeset
  1184
                                            const TUint8 aIvtData[],
hgs
parents:
diff changeset
  1185
                                            TInt aIvtDataSize,
hgs
parents:
diff changeset
  1186
                                            TBool aOpenActuator )
hgs
parents:
diff changeset
  1187
    {
hgs
parents:
diff changeset
  1188
    // open actuator.. 
hgs
parents:
diff changeset
  1189
    if ( aOpenActuator )
hgs
parents:
diff changeset
  1190
        {
hgs
parents:
diff changeset
  1191
        T_OpenSupportedActuator();
hgs
parents:
diff changeset
  1192
        }
hgs
parents:
diff changeset
  1193
hgs
parents:
diff changeset
  1194
    // read effect to buffer
hgs
parents:
diff changeset
  1195
    RBuf8 effBuf;
hgs
parents:
diff changeset
  1196
    CleanupClosePushL( effBuf );
hgs
parents:
diff changeset
  1197
    effBuf.ReAlloc( aIvtDataSize );
hgs
parents:
diff changeset
  1198
    TUint8* tmpPtr = const_cast<TUint8*>( effBuf.Ptr() );
hgs
parents:
diff changeset
  1199
    memcpy( tmpPtr, aIvtData, aIvtDataSize );
hgs
parents:
diff changeset
  1200
    effBuf.SetLength( aIvtDataSize );
hgs
parents:
diff changeset
  1201
hgs
parents:
diff changeset
  1202
    TInt retVal = iHaptics->LoadEffectData( effBuf, aFileHandle );
hgs
parents:
diff changeset
  1203
    
hgs
parents:
diff changeset
  1204
    CleanupStack::PopAndDestroy(); // effBuf
hgs
parents:
diff changeset
  1205
    return retVal;
hgs
parents:
diff changeset
  1206
    }
hgs
parents:
diff changeset
  1207
hgs
parents:
diff changeset
  1208
TInt CHapticsClientTest::T_LoadIVTData()
hgs
parents:
diff changeset
  1209
    {
hgs
parents:
diff changeset
  1210
    TInt fileHandle;
hgs
parents:
diff changeset
  1211
    TInt err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  1212
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed!" );
hgs
parents:
diff changeset
  1213
    TEST_ASSERT_DESC( fileHandle, "Loading IVT data failed, empty fileHandle!" );
hgs
parents:
diff changeset
  1214
    
hgs
parents:
diff changeset
  1215
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  1216
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  1217
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (LoadIVTData case)" );
hgs
parents:
diff changeset
  1218
    return err;
hgs
parents:
diff changeset
  1219
    }
hgs
parents:
diff changeset
  1220
hgs
parents:
diff changeset
  1221
hgs
parents:
diff changeset
  1222
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1223
// Deleting previously loaded IVT data by calling DeleteIVTData
hgs
parents:
diff changeset
  1224
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1225
//
hgs
parents:
diff changeset
  1226
TInt CHapticsClientTest::T_DeleteIVTData()
hgs
parents:
diff changeset
  1227
    {
hgs
parents:
diff changeset
  1228
    TInt fileHandle;
hgs
parents:
diff changeset
  1229
    TInt err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  1230
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (DeleteIVTData case)!" );
hgs
parents:
diff changeset
  1231
    TEST_ASSERT_DESC( fileHandle, "Loading IVT data failed, empty fileHandle (DeleteIVTData case)!" );
hgs
parents:
diff changeset
  1232
    
hgs
parents:
diff changeset
  1233
    err = iHaptics->DeleteEffectData( fileHandle );
hgs
parents:
diff changeset
  1234
    TEST_ASSERT_DESC( (err == KErrNone), "Delete IVT data failed!" );
hgs
parents:
diff changeset
  1235
    return err;
hgs
parents:
diff changeset
  1236
    }
hgs
parents:
diff changeset
  1237
hgs
parents:
diff changeset
  1238
hgs
parents:
diff changeset
  1239
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1240
// Deleting previously loaded IVT data by calling DeleteAllIVTData
hgs
parents:
diff changeset
  1241
// instead of DeleteIVTData
hgs
parents:
diff changeset
  1242
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1243
//
hgs
parents:
diff changeset
  1244
TInt CHapticsClientTest::T_DeleteAllIVTData()
hgs
parents:
diff changeset
  1245
    {
hgs
parents:
diff changeset
  1246
    TInt fileHandle;
hgs
parents:
diff changeset
  1247
    TInt err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  1248
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (DeleteAllIVTData case)!" );
hgs
parents:
diff changeset
  1249
    TEST_ASSERT_DESC( fileHandle, "Loading IVT data failed, empty fileHandle (DeleteAllIVTData case)!" );
hgs
parents:
diff changeset
  1250
    
hgs
parents:
diff changeset
  1251
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  1252
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  1253
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed!" );
hgs
parents:
diff changeset
  1254
    return err;
hgs
parents:
diff changeset
  1255
    }
hgs
parents:
diff changeset
  1256
hgs
parents:
diff changeset
  1257
hgs
parents:
diff changeset
  1258
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1259
// Loads and deletes IVT-data.
hgs
parents:
diff changeset
  1260
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1261
//
hgs
parents:
diff changeset
  1262
TInt CHapticsClientTest::T_LoadAndDeleteIVTData()
hgs
parents:
diff changeset
  1263
    {
hgs
parents:
diff changeset
  1264
    TInt fileHandle1 = KErrNotFound;
hgs
parents:
diff changeset
  1265
    TInt fileHandle2 = KErrNotFound;
hgs
parents:
diff changeset
  1266
    TInt fileHandle3 = KErrNotFound;
hgs
parents:
diff changeset
  1267
hgs
parents:
diff changeset
  1268
    // load IVT-data (open actuator on the first load only inside LoadIVTDataInternal())
hgs
parents:
diff changeset
  1269
    TInt err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic );
hgs
parents:
diff changeset
  1270
    TInt err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1271
    TInt err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1272
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1273
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1274
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1275
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1276
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1277
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1278
hgs
parents:
diff changeset
  1279
    // check that filehandles are unique
hgs
parents:
diff changeset
  1280
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1281
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1282
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1283
hgs
parents:
diff changeset
  1284
    // delete each IVT-data
hgs
parents:
diff changeset
  1285
    TInt err = iHaptics->DeleteEffectData( fileHandle1 );
hgs
parents:
diff changeset
  1286
    TEST_ASSERT_DESC( (err == KErrNone), "Delete IVT data failed!" );
hgs
parents:
diff changeset
  1287
    err = iHaptics->DeleteEffectData( fileHandle2 );
hgs
parents:
diff changeset
  1288
    TEST_ASSERT_DESC( (err == KErrNone), "Delete IVT data failed!" );
hgs
parents:
diff changeset
  1289
    err = iHaptics->DeleteEffectData( fileHandle3 );
hgs
parents:
diff changeset
  1290
    TEST_ASSERT_DESC( (err == KErrNone), "Delete IVT data failed!" );
hgs
parents:
diff changeset
  1291
hgs
parents:
diff changeset
  1292
    // reload IVT-data
hgs
parents:
diff changeset
  1293
    fileHandle1 = KErrNotFound;
hgs
parents:
diff changeset
  1294
    fileHandle2 = KErrNotFound;
hgs
parents:
diff changeset
  1295
    fileHandle3 = KErrNotFound;
hgs
parents:
diff changeset
  1296
    err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic, EFalse );
hgs
parents:
diff changeset
  1297
    err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1298
    err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1299
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1300
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1301
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1302
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1303
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1304
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1305
hgs
parents:
diff changeset
  1306
    // check that filehandles are unique
hgs
parents:
diff changeset
  1307
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1308
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1309
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1310
    return KErrNone;
hgs
parents:
diff changeset
  1311
    }
hgs
parents:
diff changeset
  1312
hgs
parents:
diff changeset
  1313
hgs
parents:
diff changeset
  1314
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1315
// Loads and deletes IVT-data (mixed order).
hgs
parents:
diff changeset
  1316
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1317
//
hgs
parents:
diff changeset
  1318
TInt CHapticsClientTest::T_LoadAndDeleteIVTDataMixed()
hgs
parents:
diff changeset
  1319
    {
hgs
parents:
diff changeset
  1320
    TInt fileHandle1 = KErrNotFound;
hgs
parents:
diff changeset
  1321
    TInt fileHandle2 = KErrNotFound;
hgs
parents:
diff changeset
  1322
    TInt fileHandle3 = KErrNotFound;
hgs
parents:
diff changeset
  1323
hgs
parents:
diff changeset
  1324
    // load IVT-data (open actuator on the first load only inside LoadIVTDataInternal())
hgs
parents:
diff changeset
  1325
    TInt err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic );
hgs
parents:
diff changeset
  1326
    TInt err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1327
    TInt err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1328
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1329
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1330
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1331
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1332
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1333
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1334
hgs
parents:
diff changeset
  1335
    // check that filehandles are unique
hgs
parents:
diff changeset
  1336
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1337
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1338
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1339
hgs
parents:
diff changeset
  1340
    // delete second IVT-data
hgs
parents:
diff changeset
  1341
    TInt err = iHaptics->DeleteEffectData( fileHandle2 );
hgs
parents:
diff changeset
  1342
    TEST_ASSERT_DESC( (err == KErrNone), "Delete IVT data failed!" );
hgs
parents:
diff changeset
  1343
hgs
parents:
diff changeset
  1344
    // load third IVT-data once more (filehandle should not change)
hgs
parents:
diff changeset
  1345
    TInt newHandle = KErrNotFound;
hgs
parents:
diff changeset
  1346
    err3 = LoadIVTDataInternal( newHandle, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1347
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1348
    TEST_ASSERT_DESC( newHandle, "Loading IVT data failed, empty newHandle!" );
hgs
parents:
diff changeset
  1349
    TEST_ASSERT_DESC( (fileHandle3 == newHandle), "Received incorrect filehandle!" );
hgs
parents:
diff changeset
  1350
hgs
parents:
diff changeset
  1351
    // load second IVT-data once more (filehandle should change)
hgs
parents:
diff changeset
  1352
    newHandle = KErrNotFound;
hgs
parents:
diff changeset
  1353
    err2 = LoadIVTDataInternal( newHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1354
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1355
    TEST_ASSERT_DESC( newHandle, "Loading IVT data failed, empty newHandle!" );
hgs
parents:
diff changeset
  1356
    TEST_ASSERT_DESC( (fileHandle2 != newHandle), "Received incorrect filehandle!" );
hgs
parents:
diff changeset
  1357
    fileHandle2 = newHandle;
hgs
parents:
diff changeset
  1358
hgs
parents:
diff changeset
  1359
    // delete all IVT-data
hgs
parents:
diff changeset
  1360
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  1361
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed!" );
hgs
parents:
diff changeset
  1362
hgs
parents:
diff changeset
  1363
    fileHandle1 = KErrNotFound;
hgs
parents:
diff changeset
  1364
    fileHandle2 = KErrNotFound;
hgs
parents:
diff changeset
  1365
    fileHandle3 = KErrNotFound;
hgs
parents:
diff changeset
  1366
hgs
parents:
diff changeset
  1367
    // reload IVT-data
hgs
parents:
diff changeset
  1368
    err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic, EFalse );
hgs
parents:
diff changeset
  1369
    err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1370
    err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1371
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1372
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1373
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1374
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1375
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1376
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1377
hgs
parents:
diff changeset
  1378
    // check that filehandles are unique
hgs
parents:
diff changeset
  1379
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1380
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1381
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1382
    return KErrNone;
hgs
parents:
diff changeset
  1383
    }
hgs
parents:
diff changeset
  1384
hgs
parents:
diff changeset
  1385
hgs
parents:
diff changeset
  1386
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1387
// Loads and deletes IVT-data. Plays using the filehandles
hgs
parents:
diff changeset
  1388
// received by calling the synchronous play-method.
hgs
parents:
diff changeset
  1389
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1390
//
hgs
parents:
diff changeset
  1391
TInt CHapticsClientTest::T_LoadDeletePlaySync()
hgs
parents:
diff changeset
  1392
    {
hgs
parents:
diff changeset
  1393
    TInt effectHandle = 0;
hgs
parents:
diff changeset
  1394
    TInt fileHandle1 = KErrNotFound;
hgs
parents:
diff changeset
  1395
    TInt fileHandle2 = KErrNotFound;
hgs
parents:
diff changeset
  1396
    TInt fileHandle3 = KErrNotFound;
hgs
parents:
diff changeset
  1397
hgs
parents:
diff changeset
  1398
    // load IVT-data (open actuator on the first load only inside LoadIVTDataInternal())
hgs
parents:
diff changeset
  1399
    TInt err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic );
hgs
parents:
diff changeset
  1400
    TInt err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1401
    TInt err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1402
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1403
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1404
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1405
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1406
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1407
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1408
hgs
parents:
diff changeset
  1409
    // check that filehandles are unique
hgs
parents:
diff changeset
  1410
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1411
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1412
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1413
hgs
parents:
diff changeset
  1414
    // play the first effect of each data
hgs
parents:
diff changeset
  1415
    TInt err = iHaptics->PlayEffect( fileHandle1, 0, effectHandle );
hgs
parents:
diff changeset
  1416
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1417
    err = iHaptics->PlayEffect( fileHandle2, 0, effectHandle );
hgs
parents:
diff changeset
  1418
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1419
    err = iHaptics->PlayEffect( fileHandle3, 0, effectHandle );
hgs
parents:
diff changeset
  1420
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1421
hgs
parents:
diff changeset
  1422
    // play the first effect of the second data
hgs
parents:
diff changeset
  1423
    err = iHaptics->PlayEffect( fileHandle2, 0, effectHandle );
hgs
parents:
diff changeset
  1424
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1425
hgs
parents:
diff changeset
  1426
    // delete second IVT-data
hgs
parents:
diff changeset
  1427
    err = iHaptics->DeleteEffectData( fileHandle2 );
hgs
parents:
diff changeset
  1428
    TEST_ASSERT_DESC( (err == KErrNone), "Delete IVT data failed!" );
hgs
parents:
diff changeset
  1429
hgs
parents:
diff changeset
  1430
    // play the first effect of the second data
hgs
parents:
diff changeset
  1431
    err = iHaptics->PlayEffect( fileHandle2, 0, effectHandle );
hgs
parents:
diff changeset
  1432
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1433
hgs
parents:
diff changeset
  1434
    // load second IVT-data once more (filehandle should change)
hgs
parents:
diff changeset
  1435
    TInt newHandle = KErrNotFound;
hgs
parents:
diff changeset
  1436
    err2 = LoadIVTDataInternal( newHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1437
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1438
    TEST_ASSERT_DESC( newHandle, "Loading IVT data failed, empty newHandle!" );
hgs
parents:
diff changeset
  1439
    TEST_ASSERT_DESC( (fileHandle2 != newHandle), "Received incorrect filehandle!" );
hgs
parents:
diff changeset
  1440
    fileHandle2 = newHandle;
hgs
parents:
diff changeset
  1441
hgs
parents:
diff changeset
  1442
    // play the first effect of the second data
hgs
parents:
diff changeset
  1443
    err = iHaptics->PlayEffect( fileHandle2, 0, effectHandle );
hgs
parents:
diff changeset
  1444
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1445
hgs
parents:
diff changeset
  1446
    // delete all IVT-data
hgs
parents:
diff changeset
  1447
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  1448
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed!" );
hgs
parents:
diff changeset
  1449
hgs
parents:
diff changeset
  1450
    // play the first effect of each data (each should fail, since data is deleted)
hgs
parents:
diff changeset
  1451
    err = iHaptics->PlayEffect( fileHandle1, 0, effectHandle );
hgs
parents:
diff changeset
  1452
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1453
    err = iHaptics->PlayEffect( fileHandle2, 0, effectHandle );
hgs
parents:
diff changeset
  1454
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1455
    err = iHaptics->PlayEffect( fileHandle3, 0, effectHandle );
hgs
parents:
diff changeset
  1456
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1457
hgs
parents:
diff changeset
  1458
    // load IVT-data
hgs
parents:
diff changeset
  1459
    err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic, EFalse );
hgs
parents:
diff changeset
  1460
    err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1461
    err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1462
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1463
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1464
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1465
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1466
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1467
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1468
hgs
parents:
diff changeset
  1469
    // check that filehandles are unique
hgs
parents:
diff changeset
  1470
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1471
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1472
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1473
hgs
parents:
diff changeset
  1474
    // play the first effect of each data
hgs
parents:
diff changeset
  1475
    err = iHaptics->PlayEffect( fileHandle1, 0, effectHandle );
hgs
parents:
diff changeset
  1476
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1477
    err = iHaptics->PlayEffect( fileHandle2, 0, effectHandle );
hgs
parents:
diff changeset
  1478
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1479
    err = iHaptics->PlayEffect( fileHandle3, 0, effectHandle );
hgs
parents:
diff changeset
  1480
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1481
    return err;
hgs
parents:
diff changeset
  1482
    }
hgs
parents:
diff changeset
  1483
hgs
parents:
diff changeset
  1484
hgs
parents:
diff changeset
  1485
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1486
// Loads and deletes IVT-data. Plays using the filehandles
hgs
parents:
diff changeset
  1487
// received by calling the asynchronous play-method.
hgs
parents:
diff changeset
  1488
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1489
//
hgs
parents:
diff changeset
  1490
TInt CHapticsClientTest::T_LoadDeletePlayAsync()
hgs
parents:
diff changeset
  1491
    {
hgs
parents:
diff changeset
  1492
    TRequestStatus status1 = KRequestPending;
hgs
parents:
diff changeset
  1493
    TRequestStatus status2 = KRequestPending;
hgs
parents:
diff changeset
  1494
    TRequestStatus status3 = KRequestPending;
hgs
parents:
diff changeset
  1495
hgs
parents:
diff changeset
  1496
    TInt effectHandle = 0;
hgs
parents:
diff changeset
  1497
hgs
parents:
diff changeset
  1498
    TInt fileHandle1 = KErrNotFound;
hgs
parents:
diff changeset
  1499
    TInt fileHandle2 = KErrNotFound;
hgs
parents:
diff changeset
  1500
    TInt fileHandle3 = KErrNotFound;
hgs
parents:
diff changeset
  1501
hgs
parents:
diff changeset
  1502
    // load IVT-data (open actuator on the first load only inside LoadIVTDataInternal())
hgs
parents:
diff changeset
  1503
    TInt err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic );
hgs
parents:
diff changeset
  1504
    TInt err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1505
    TInt err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1506
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1507
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1508
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1509
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1510
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1511
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1512
hgs
parents:
diff changeset
  1513
    // check that filehandles are unique
hgs
parents:
diff changeset
  1514
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1515
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1516
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1517
hgs
parents:
diff changeset
  1518
    // play the first effect of each data
hgs
parents:
diff changeset
  1519
    // iHaptics->PlayEffect( fileHandle1, 0, effectHandle, status1 );
hgs
parents:
diff changeset
  1520
    // LoopForCompletion( status1 );
hgs
parents:
diff changeset
  1521
    iSender->Play( iHaptics, fileHandle1, 0, effectHandle, status1 );
hgs
parents:
diff changeset
  1522
    iWait.Start();
hgs
parents:
diff changeset
  1523
    TEST_ASSERT_DESC( (status1 == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1524
hgs
parents:
diff changeset
  1525
    iSender->Play( iHaptics, fileHandle2, 0, effectHandle, status2 );
hgs
parents:
diff changeset
  1526
    iWait.Start();
hgs
parents:
diff changeset
  1527
    TEST_ASSERT_DESC( (status2.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1528
hgs
parents:
diff changeset
  1529
    iSender->Play( iHaptics, fileHandle3, 0, effectHandle, status3 );
hgs
parents:
diff changeset
  1530
    iWait.Start();
hgs
parents:
diff changeset
  1531
    TEST_ASSERT_DESC( (status3.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1532
hgs
parents:
diff changeset
  1533
    // play the first effect of the second data
hgs
parents:
diff changeset
  1534
    status2 = KRequestPending;
hgs
parents:
diff changeset
  1535
    iSender->Play( iHaptics, fileHandle2, 0, effectHandle, status2 );
hgs
parents:
diff changeset
  1536
    iWait.Start();
hgs
parents:
diff changeset
  1537
    TEST_ASSERT_DESC( (status2.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1538
hgs
parents:
diff changeset
  1539
    // delete second IVT-data
hgs
parents:
diff changeset
  1540
    TInt err = iHaptics->DeleteEffectData( fileHandle2 );
hgs
parents:
diff changeset
  1541
    TEST_ASSERT_DESC( (err == KErrNone), "Delete IVT data failed!" );
hgs
parents:
diff changeset
  1542
hgs
parents:
diff changeset
  1543
    // play the first effect of the second data
hgs
parents:
diff changeset
  1544
    status2 = KRequestPending;
hgs
parents:
diff changeset
  1545
    iSender->Play( iHaptics, fileHandle2, 0, effectHandle, status2 );
hgs
parents:
diff changeset
  1546
    iWait.Start();
hgs
parents:
diff changeset
  1547
    TEST_ASSERT_DESC( (status2.Int() == KErrBadHandle), "Playing deleted IVT data succeeded!" );
hgs
parents:
diff changeset
  1548
hgs
parents:
diff changeset
  1549
    // load second IVT-data once more (filehandle should change)
hgs
parents:
diff changeset
  1550
    TInt newHandle = KErrNotFound;
hgs
parents:
diff changeset
  1551
    err2 = LoadIVTDataInternal( newHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1552
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1553
    TEST_ASSERT_DESC( newHandle, "Loading IVT data failed, empty newHandle!" );
hgs
parents:
diff changeset
  1554
    TEST_ASSERT_DESC( (fileHandle2 != newHandle), "Received incorrect filehandle!" );
hgs
parents:
diff changeset
  1555
    fileHandle2 = newHandle;
hgs
parents:
diff changeset
  1556
hgs
parents:
diff changeset
  1557
    // play the first effect of the second data
hgs
parents:
diff changeset
  1558
    status2 = KRequestPending;
hgs
parents:
diff changeset
  1559
    iSender->Play( iHaptics, fileHandle2, 0, effectHandle, status2 );
hgs
parents:
diff changeset
  1560
    iWait.Start();
hgs
parents:
diff changeset
  1561
    TEST_ASSERT_DESC( (status2.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1562
hgs
parents:
diff changeset
  1563
    // delete all IVT-data
hgs
parents:
diff changeset
  1564
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  1565
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed!" );
hgs
parents:
diff changeset
  1566
hgs
parents:
diff changeset
  1567
    // play the first effect of each data (each should fail, since data is deleted)
hgs
parents:
diff changeset
  1568
    status1 = KRequestPending;
hgs
parents:
diff changeset
  1569
    status2 = KRequestPending;
hgs
parents:
diff changeset
  1570
    status3 = KRequestPending;
hgs
parents:
diff changeset
  1571
    iSender->Play( iHaptics, fileHandle1, 0, effectHandle, status1 );
hgs
parents:
diff changeset
  1572
    iWait.Start();
hgs
parents:
diff changeset
  1573
    TEST_ASSERT_DESC( (status1.Int() == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1574
    iSender->Play( iHaptics, fileHandle2, 0, effectHandle, status2 );
hgs
parents:
diff changeset
  1575
    iWait.Start();
hgs
parents:
diff changeset
  1576
    TEST_ASSERT_DESC( (status2.Int() == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1577
    iSender->Play( iHaptics, fileHandle3, 0, effectHandle, status3 );
hgs
parents:
diff changeset
  1578
    iWait.Start();
hgs
parents:
diff changeset
  1579
    TEST_ASSERT_DESC( (status3.Int() == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1580
hgs
parents:
diff changeset
  1581
    // load IVT-data
hgs
parents:
diff changeset
  1582
    err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic, EFalse );
hgs
parents:
diff changeset
  1583
    err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1584
    err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1585
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1586
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1587
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1588
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1589
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1590
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1591
hgs
parents:
diff changeset
  1592
    // check that filehandles are unique
hgs
parents:
diff changeset
  1593
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1594
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1595
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1596
hgs
parents:
diff changeset
  1597
    // play the first effect of each data
hgs
parents:
diff changeset
  1598
    status1 = KRequestPending;
hgs
parents:
diff changeset
  1599
    status2 = KRequestPending;
hgs
parents:
diff changeset
  1600
    status3 = KRequestPending;
hgs
parents:
diff changeset
  1601
    iSender->Play( iHaptics, fileHandle1, 0, effectHandle, status1 );
hgs
parents:
diff changeset
  1602
    iWait.Start();
hgs
parents:
diff changeset
  1603
    TEST_ASSERT_DESC( (status1.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1604
    iSender->Play( iHaptics, fileHandle2, 0, effectHandle, status2 );
hgs
parents:
diff changeset
  1605
    iWait.Start();
hgs
parents:
diff changeset
  1606
    TEST_ASSERT_DESC( (status2.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1607
    iSender->Play( iHaptics, fileHandle3, 0, effectHandle, status3 );
hgs
parents:
diff changeset
  1608
    iWait.Start();
hgs
parents:
diff changeset
  1609
    TEST_ASSERT_DESC( (status3.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1610
    return KErrNone;
hgs
parents:
diff changeset
  1611
    }
hgs
parents:
diff changeset
  1612
hgs
parents:
diff changeset
  1613
hgs
parents:
diff changeset
  1614
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1615
// Loads and deletes IVT-data. Plays using the filehandles
hgs
parents:
diff changeset
  1616
// received by calling the synchronous PlayRepeat-method.
hgs
parents:
diff changeset
  1617
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1618
//
hgs
parents:
diff changeset
  1619
TInt CHapticsClientTest::T_LoadDeletePlayRepeatSync()
hgs
parents:
diff changeset
  1620
    {
hgs
parents:
diff changeset
  1621
    TInt effectHandle = 0;
hgs
parents:
diff changeset
  1622
    TInt repeat = 2;
hgs
parents:
diff changeset
  1623
    TInt fileHandle1 = KErrNotFound;
hgs
parents:
diff changeset
  1624
    TInt fileHandle2 = KErrNotFound;
hgs
parents:
diff changeset
  1625
    TInt fileHandle3 = KErrNotFound;
hgs
parents:
diff changeset
  1626
hgs
parents:
diff changeset
  1627
    // load IVT-data (open actuator on the first load only inside LoadIVTDataInternal())
hgs
parents:
diff changeset
  1628
    TInt err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic );
hgs
parents:
diff changeset
  1629
    TInt err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1630
    TInt err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1631
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1632
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1633
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1634
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1635
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1636
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1637
hgs
parents:
diff changeset
  1638
    // check that filehandles are unique
hgs
parents:
diff changeset
  1639
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1640
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1641
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1642
hgs
parents:
diff changeset
  1643
    // play the first effect of each data
hgs
parents:
diff changeset
  1644
    TInt err = iHaptics->PlayEffectRepeat( fileHandle1, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1645
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1646
    err = iHaptics->PlayEffectRepeat( fileHandle2, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1647
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1648
    err = iHaptics->PlayEffectRepeat( fileHandle3, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1649
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1650
hgs
parents:
diff changeset
  1651
    // play the first effect of the second data
hgs
parents:
diff changeset
  1652
    err = iHaptics->PlayEffectRepeat( fileHandle2, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1653
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1654
hgs
parents:
diff changeset
  1655
    // delete second IVT-data
hgs
parents:
diff changeset
  1656
    err = iHaptics->DeleteEffectData( fileHandle2 );
hgs
parents:
diff changeset
  1657
    TEST_ASSERT_DESC( (err == KErrNone), "Delete IVT data failed!" );
hgs
parents:
diff changeset
  1658
hgs
parents:
diff changeset
  1659
    // play the first effect of the second data
hgs
parents:
diff changeset
  1660
    err = iHaptics->PlayEffectRepeat( fileHandle2, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1661
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1662
hgs
parents:
diff changeset
  1663
    // load second IVT-data once more (filehandle should change)
hgs
parents:
diff changeset
  1664
    TInt newHandle = KErrNotFound;
hgs
parents:
diff changeset
  1665
    err2 = LoadIVTDataInternal( newHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1666
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1667
    TEST_ASSERT_DESC( newHandle, "Loading IVT data failed, empty newHandle!" );
hgs
parents:
diff changeset
  1668
    TEST_ASSERT_DESC( (fileHandle2 != newHandle), "Received incorrect filehandle!" );
hgs
parents:
diff changeset
  1669
    fileHandle2 = newHandle;
hgs
parents:
diff changeset
  1670
hgs
parents:
diff changeset
  1671
    // play the first effect of the second data
hgs
parents:
diff changeset
  1672
    err = iHaptics->PlayEffectRepeat( fileHandle2, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1673
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1674
hgs
parents:
diff changeset
  1675
    // delete all IVT-data
hgs
parents:
diff changeset
  1676
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  1677
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed!" );
hgs
parents:
diff changeset
  1678
hgs
parents:
diff changeset
  1679
    // play the first effect of each data (each should fail, since data is deleted)
hgs
parents:
diff changeset
  1680
    err = iHaptics->PlayEffectRepeat( fileHandle1, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1681
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1682
    err = iHaptics->PlayEffectRepeat( fileHandle2, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1683
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1684
    err = iHaptics->PlayEffectRepeat( fileHandle3, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1685
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1686
hgs
parents:
diff changeset
  1687
    // load IVT-data
hgs
parents:
diff changeset
  1688
    err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic, EFalse );
hgs
parents:
diff changeset
  1689
    err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1690
    err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1691
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1692
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1693
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1694
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1695
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1696
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1697
hgs
parents:
diff changeset
  1698
    // check that filehandles are unique
hgs
parents:
diff changeset
  1699
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1700
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1701
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1702
hgs
parents:
diff changeset
  1703
    // play the first effect of each data
hgs
parents:
diff changeset
  1704
    err = iHaptics->PlayEffectRepeat( fileHandle1, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1705
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1706
    err = iHaptics->PlayEffectRepeat( fileHandle2, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1707
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1708
    err = iHaptics->PlayEffectRepeat( fileHandle3, 0, repeat, effectHandle );
hgs
parents:
diff changeset
  1709
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1710
    return err;
hgs
parents:
diff changeset
  1711
    }
hgs
parents:
diff changeset
  1712
hgs
parents:
diff changeset
  1713
hgs
parents:
diff changeset
  1714
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1715
// Loads and deletes IVT-data. Plays using the filehandles
hgs
parents:
diff changeset
  1716
// received by calling the asynchronous PlayRepeat-method.
hgs
parents:
diff changeset
  1717
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1718
//
hgs
parents:
diff changeset
  1719
TInt CHapticsClientTest::T_LoadDeletePlayRepeatAsync()
hgs
parents:
diff changeset
  1720
    {
hgs
parents:
diff changeset
  1721
    TRequestStatus status1 = KRequestPending;
hgs
parents:
diff changeset
  1722
    TRequestStatus status2 = KRequestPending;
hgs
parents:
diff changeset
  1723
    TRequestStatus status3 = KRequestPending;
hgs
parents:
diff changeset
  1724
hgs
parents:
diff changeset
  1725
    TInt effectHandle = 0;
hgs
parents:
diff changeset
  1726
    TInt repeat = 7;
hgs
parents:
diff changeset
  1727
hgs
parents:
diff changeset
  1728
    TInt fileHandle1 = KErrNotFound;
hgs
parents:
diff changeset
  1729
    TInt fileHandle2 = KErrNotFound;
hgs
parents:
diff changeset
  1730
    TInt fileHandle3 = KErrNotFound;
hgs
parents:
diff changeset
  1731
hgs
parents:
diff changeset
  1732
    // load IVT-data (open actuator on the first load only inside LoadIVTDataInternal())
hgs
parents:
diff changeset
  1733
    TInt err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic );
hgs
parents:
diff changeset
  1734
    TInt err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1735
    TInt err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1736
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1737
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1738
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1739
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1740
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1741
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1742
hgs
parents:
diff changeset
  1743
    // check that filehandles are unique
hgs
parents:
diff changeset
  1744
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1745
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1746
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1747
hgs
parents:
diff changeset
  1748
    // play the first effect of each data
hgs
parents:
diff changeset
  1749
    iSender->PlayRepeat( iHaptics, fileHandle1, 0, repeat, effectHandle, status1 );
hgs
parents:
diff changeset
  1750
    iWait.Start();
hgs
parents:
diff changeset
  1751
    TEST_ASSERT_DESC( (status1.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1752
    iSender->PlayRepeat( iHaptics, fileHandle2, 0, repeat, effectHandle, status2 );
hgs
parents:
diff changeset
  1753
    iWait.Start();
hgs
parents:
diff changeset
  1754
    TEST_ASSERT_DESC( (status2.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1755
    iSender->PlayRepeat( iHaptics, fileHandle3, 0, repeat, effectHandle, status3 );
hgs
parents:
diff changeset
  1756
    iWait.Start();
hgs
parents:
diff changeset
  1757
    TEST_ASSERT_DESC( (status3.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1758
hgs
parents:
diff changeset
  1759
    // play the first effect of the second data
hgs
parents:
diff changeset
  1760
    status2 = KRequestPending;
hgs
parents:
diff changeset
  1761
    iSender->PlayRepeat( iHaptics, fileHandle2, 0, repeat, effectHandle, status2 );
hgs
parents:
diff changeset
  1762
    iWait.Start();
hgs
parents:
diff changeset
  1763
    TEST_ASSERT_DESC( (status2.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1764
hgs
parents:
diff changeset
  1765
    // delete second IVT-data
hgs
parents:
diff changeset
  1766
    TInt err = iHaptics->DeleteEffectData( fileHandle2 );
hgs
parents:
diff changeset
  1767
    TEST_ASSERT_DESC( (err == KErrNone), "Delete IVT data failed!" );
hgs
parents:
diff changeset
  1768
hgs
parents:
diff changeset
  1769
    // play the first effect of the second data
hgs
parents:
diff changeset
  1770
    status2 = KRequestPending;
hgs
parents:
diff changeset
  1771
    iSender->PlayRepeat( iHaptics, fileHandle2, 0, repeat, effectHandle, status2 );
hgs
parents:
diff changeset
  1772
    iWait.Start();
hgs
parents:
diff changeset
  1773
    TEST_ASSERT_DESC( (status2.Int() == KErrBadHandle), "Playing deleted IVT data succeeded!" );
hgs
parents:
diff changeset
  1774
hgs
parents:
diff changeset
  1775
    // load second IVT-data once more (filehandle should change)
hgs
parents:
diff changeset
  1776
    TInt newHandle = KErrNotFound;
hgs
parents:
diff changeset
  1777
    err2 = LoadIVTDataInternal( newHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1778
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1779
    TEST_ASSERT_DESC( newHandle, "Loading IVT data failed, empty newHandle!" );
hgs
parents:
diff changeset
  1780
    TEST_ASSERT_DESC( (fileHandle2 != newHandle), "Received incorrect filehandle!" );
hgs
parents:
diff changeset
  1781
    fileHandle2 = newHandle;
hgs
parents:
diff changeset
  1782
hgs
parents:
diff changeset
  1783
    // play the first effect of the second data
hgs
parents:
diff changeset
  1784
    status2 = KRequestPending;
hgs
parents:
diff changeset
  1785
    iSender->PlayRepeat( iHaptics, fileHandle2, 0, repeat, effectHandle, status2 );
hgs
parents:
diff changeset
  1786
    iWait.Start();
hgs
parents:
diff changeset
  1787
    TEST_ASSERT_DESC( (status2.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1788
hgs
parents:
diff changeset
  1789
    // delete all IVT-data
hgs
parents:
diff changeset
  1790
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  1791
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed!" );
hgs
parents:
diff changeset
  1792
hgs
parents:
diff changeset
  1793
    // play the first effect of each data (each should fail, since data is deleted)
hgs
parents:
diff changeset
  1794
    status1 = KRequestPending;
hgs
parents:
diff changeset
  1795
    status2 = KRequestPending;
hgs
parents:
diff changeset
  1796
    status3 = KRequestPending;
hgs
parents:
diff changeset
  1797
    iSender->PlayRepeat( iHaptics, fileHandle1, 0, repeat, effectHandle, status1 );
hgs
parents:
diff changeset
  1798
    iWait.Start();
hgs
parents:
diff changeset
  1799
    TEST_ASSERT_DESC( (status1.Int() == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1800
    iSender->PlayRepeat( iHaptics, fileHandle2, 0, repeat, effectHandle, status2 );
hgs
parents:
diff changeset
  1801
    iWait.Start();
hgs
parents:
diff changeset
  1802
    TEST_ASSERT_DESC( (status2.Int() == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1803
    iSender->PlayRepeat( iHaptics, fileHandle3, 0, repeat, effectHandle, status3 );
hgs
parents:
diff changeset
  1804
    iWait.Start();
hgs
parents:
diff changeset
  1805
    TEST_ASSERT_DESC( (status3.Int() == KErrBadHandle), "Playing deleted IVT-data succeeded!" );
hgs
parents:
diff changeset
  1806
hgs
parents:
diff changeset
  1807
    // load IVT-data
hgs
parents:
diff changeset
  1808
    err1 = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypePeriodic, EFalse );
hgs
parents:
diff changeset
  1809
    err2 = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  1810
    err3 = LoadIVTDataInternal( fileHandle3, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  1811
    TEST_ASSERT_DESC( (err1 == KErrNone), "Loading IVT data1 failed!" );
hgs
parents:
diff changeset
  1812
    TEST_ASSERT_DESC( (err2 == KErrNone), "Loading IVT data2 failed!" );
hgs
parents:
diff changeset
  1813
    TEST_ASSERT_DESC( (err3 == KErrNone), "Loading IVT data3 failed!" );
hgs
parents:
diff changeset
  1814
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle1!" );
hgs
parents:
diff changeset
  1815
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle2!" );
hgs
parents:
diff changeset
  1816
    TEST_ASSERT_DESC( fileHandle3, "Loading IVT data failed, empty fileHandle3!" );
hgs
parents:
diff changeset
  1817
hgs
parents:
diff changeset
  1818
    // check that filehandles are unique
hgs
parents:
diff changeset
  1819
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1820
    TEST_ASSERT_DESC( (fileHandle1 != fileHandle2), "Received same filehandles!" );
hgs
parents:
diff changeset
  1821
    TEST_ASSERT_DESC( (fileHandle2 != fileHandle3), "Received same filehandles!" );
hgs
parents:
diff changeset
  1822
hgs
parents:
diff changeset
  1823
    // play the first effect of each data
hgs
parents:
diff changeset
  1824
    status1 = KRequestPending;
hgs
parents:
diff changeset
  1825
    status2 = KRequestPending;
hgs
parents:
diff changeset
  1826
    status3 = KRequestPending;
hgs
parents:
diff changeset
  1827
    iSender->PlayRepeat( iHaptics, fileHandle1, 0, repeat, effectHandle, status1 );
hgs
parents:
diff changeset
  1828
    iWait.Start();
hgs
parents:
diff changeset
  1829
    TEST_ASSERT_DESC( (status1.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1830
    iSender->PlayRepeat( iHaptics, fileHandle2, 0, repeat, effectHandle, status2 );
hgs
parents:
diff changeset
  1831
    iWait.Start();
hgs
parents:
diff changeset
  1832
    TEST_ASSERT_DESC( (status2.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1833
    iSender->PlayRepeat( iHaptics, fileHandle3, 0, repeat, effectHandle, status3 );
hgs
parents:
diff changeset
  1834
    iWait.Start();
hgs
parents:
diff changeset
  1835
    TEST_ASSERT_DESC( (status3.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1836
    return KErrNone;
hgs
parents:
diff changeset
  1837
    }
hgs
parents:
diff changeset
  1838
hgs
parents:
diff changeset
  1839
hgs
parents:
diff changeset
  1840
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1841
// Playing the previously loaded IVT data (synchronous version)
hgs
parents:
diff changeset
  1842
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1843
//
hgs
parents:
diff changeset
  1844
TInt CHapticsClientTest::T_PlayIVTEffectWithLoadedDataSynchronous()
hgs
parents:
diff changeset
  1845
    {
hgs
parents:
diff changeset
  1846
    // load the IVT data 
hgs
parents:
diff changeset
  1847
    TInt fileHandle;
hgs
parents:
diff changeset
  1848
    TInt err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  1849
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Playing synchronously case)!" );
hgs
parents:
diff changeset
  1850
    TEST_ASSERT_DESC( fileHandle, "Loading IVT data failed, empty fileHandle (Playing synchronously case)!" );
hgs
parents:
diff changeset
  1851
    
hgs
parents:
diff changeset
  1852
    // play the effect.. 
hgs
parents:
diff changeset
  1853
    TInt effectHandle;
hgs
parents:
diff changeset
  1854
    err = iHaptics->PlayEffect( fileHandle, 0, effectHandle );
hgs
parents:
diff changeset
  1855
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1856
    TEST_ASSERT_DESC( effectHandle, "Playing loaded IVT data failed, empty effectHandle (synch)!" );
hgs
parents:
diff changeset
  1857
hgs
parents:
diff changeset
  1858
    
hgs
parents:
diff changeset
  1859
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  1860
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  1861
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect synchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  1862
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  1863
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (Playing synchronously case))" );
hgs
parents:
diff changeset
  1864
    return err;
hgs
parents:
diff changeset
  1865
    }
hgs
parents:
diff changeset
  1866
hgs
parents:
diff changeset
  1867
hgs
parents:
diff changeset
  1868
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1869
// Playing the previously loaded IVT data (asynchronous version)
hgs
parents:
diff changeset
  1870
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1871
//
hgs
parents:
diff changeset
  1872
TInt CHapticsClientTest::T_PlayIVTEffectWithLoadedDataAsynchronous()
hgs
parents:
diff changeset
  1873
    {
hgs
parents:
diff changeset
  1874
    // load the IVT data 
hgs
parents:
diff changeset
  1875
    TInt fileHandle;
hgs
parents:
diff changeset
  1876
    TInt err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  1877
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Playing asynchronously case)!" );
hgs
parents:
diff changeset
  1878
    TEST_ASSERT_DESC( fileHandle, "Loading IVT data failed, empty fileHandle (Playing asynchronously case)!" );
hgs
parents:
diff changeset
  1879
hgs
parents:
diff changeset
  1880
    // play the effect.. 
hgs
parents:
diff changeset
  1881
    TInt effectHandle;
hgs
parents:
diff changeset
  1882
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
  1883
    iSender->Play( iHaptics, fileHandle, 0, effectHandle, status );
hgs
parents:
diff changeset
  1884
    iWait.Start();
hgs
parents:
diff changeset
  1885
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1886
    TEST_ASSERT_DESC( effectHandle, "Playing loaded IVT data failed, empty effectHandle (asynch)!" );
hgs
parents:
diff changeset
  1887
    
hgs
parents:
diff changeset
  1888
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  1889
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  1890
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect asynchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  1891
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  1892
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (Playing asynchronously case))" );
hgs
parents:
diff changeset
  1893
    return err;
hgs
parents:
diff changeset
  1894
    }
hgs
parents:
diff changeset
  1895
hgs
parents:
diff changeset
  1896
hgs
parents:
diff changeset
  1897
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1898
// Playing with repeat the previously loaded IVT data 
hgs
parents:
diff changeset
  1899
// (synchronous version). Uses timeline effect.
hgs
parents:
diff changeset
  1900
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1901
//
hgs
parents:
diff changeset
  1902
TInt CHapticsClientTest::T_PlayIVTEffectRepeatWithLoadedDataSynchronous()
hgs
parents:
diff changeset
  1903
    {
hgs
parents:
diff changeset
  1904
    // load the IVT data 
hgs
parents:
diff changeset
  1905
    TInt fileHandle;
hgs
parents:
diff changeset
  1906
    TInt err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypeTimeline );
hgs
parents:
diff changeset
  1907
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Repeat IVT synchronously case)!" );
hgs
parents:
diff changeset
  1908
    TEST_ASSERT_DESC( fileHandle, "Loading IVT data failed, empty fileHandle (Repeat IVT synchronously case)!" );
hgs
parents:
diff changeset
  1909
    
hgs
parents:
diff changeset
  1910
    // play the effect repeatedly (repeated 3 times) 
hgs
parents:
diff changeset
  1911
    TInt effectHandle;
hgs
parents:
diff changeset
  1912
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, 3, effectHandle );
hgs
parents:
diff changeset
  1913
    TEST_ASSERT_DESC( (err == KErrNone), "Playing repeatedly loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  1914
    TEST_ASSERT_DESC( effectHandle, "Playing repeatedly loaded IVT data failed, empty effectHandle (synch)!" );
hgs
parents:
diff changeset
  1915
hgs
parents:
diff changeset
  1916
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  1917
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  1918
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect repeatedly synchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  1919
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  1920
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (Repeat IVT synchronously case))" );
hgs
parents:
diff changeset
  1921
    return err;
hgs
parents:
diff changeset
  1922
    }
hgs
parents:
diff changeset
  1923
hgs
parents:
diff changeset
  1924
hgs
parents:
diff changeset
  1925
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1926
// Playing with repeat the previously loaded IVT data 
hgs
parents:
diff changeset
  1927
// (asynchronous version). Uses timeline effect.
hgs
parents:
diff changeset
  1928
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1929
//
hgs
parents:
diff changeset
  1930
TInt CHapticsClientTest::T_PlayIVTEffectRepeatWithLoadedDataAsynchronous()
hgs
parents:
diff changeset
  1931
    {
hgs
parents:
diff changeset
  1932
    // load the IVT data 
hgs
parents:
diff changeset
  1933
    TInt fileHandle;
hgs
parents:
diff changeset
  1934
    TInt err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  1935
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Repeat IVT asynchronously case)!" );
hgs
parents:
diff changeset
  1936
    TEST_ASSERT_DESC( fileHandle, "Loading IVT data failed, empty fileHandle (Repeat IVT asynchronously case)!" );
hgs
parents:
diff changeset
  1937
hgs
parents:
diff changeset
  1938
    // play the effect (repeated 5 times) 
hgs
parents:
diff changeset
  1939
    TInt effectHandle;
hgs
parents:
diff changeset
  1940
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
  1941
    iSender->PlayRepeat( iHaptics, fileHandle, 0, 5, effectHandle, status );
hgs
parents:
diff changeset
  1942
    iWait.Start();
hgs
parents:
diff changeset
  1943
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing repeatedly loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  1944
    TEST_ASSERT_DESC( effectHandle, "Playing repeatedly loaded IVT data failed, empty effectHandle (asynch)!" );
hgs
parents:
diff changeset
  1945
    
hgs
parents:
diff changeset
  1946
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  1947
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  1948
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect repeatedly asynchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  1949
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  1950
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (Repeat IVT asynchronously case))" );
hgs
parents:
diff changeset
  1951
    return err;
hgs
parents:
diff changeset
  1952
    }
hgs
parents:
diff changeset
  1953
hgs
parents:
diff changeset
  1954
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1955
// VibeStatus to S60 status conversions
hgs
parents:
diff changeset
  1956
// ---------------------------------------------------------
hgs
parents:
diff changeset
  1957
//
hgs
parents:
diff changeset
  1958
TInt CHapticsClientTest::T_VibeStatusToS60StatusConversions()
hgs
parents:
diff changeset
  1959
    {
hgs
parents:
diff changeset
  1960
    // this is a bit ugly, i.e., we're using special repeat 
hgs
parents:
diff changeset
  1961
    // values and then the test adaptation stub acknowledges
hgs
parents:
diff changeset
  1962
    // these special value and repeats accordingly with some
hgs
parents:
diff changeset
  1963
    // (Vibe-error) status
hgs
parents:
diff changeset
  1964
    
hgs
parents:
diff changeset
  1965
    // load the IVT data 
hgs
parents:
diff changeset
  1966
    TInt fileHandle;
hgs
parents:
diff changeset
  1967
    TInt err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypeTimeline );
hgs
parents:
diff changeset
  1968
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Status conversion case)!" );
hgs
parents:
diff changeset
  1969
    TEST_ASSERT_DESC( fileHandle, "Loading IVT data failed, empty fileHandle (Status conversion case)!" );
hgs
parents:
diff changeset
  1970
    
hgs
parents:
diff changeset
  1971
    // the actual status conversion cases (done with special repeat values
hgs
parents:
diff changeset
  1972
    // using PlayIVTEffectRepeat)
hgs
parents:
diff changeset
  1973
    TInt dummyEffectHandle; // we're not interested about this in these cases
hgs
parents:
diff changeset
  1974
    // first the synch cases..
hgs
parents:
diff changeset
  1975
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, SUCCESS_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  1976
    TEST_ASSERT_DESC( (err == KErrNone), "Status conversion subcase SUCCESS_TEST failed (synch)!" );
hgs
parents:
diff changeset
  1977
hgs
parents:
diff changeset
  1978
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, ALREADY_INITIALIZED_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  1979
    TEST_ASSERT_DESC( (err == KErrAlreadyExists), "Status conversion subcase ALREADY_INITIALIZED_TEST failed (synch)!" );
hgs
parents:
diff changeset
  1980
hgs
parents:
diff changeset
  1981
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, NOT_INITIALIZED_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  1982
    TEST_ASSERT_DESC( (err == KErrNotReady), "Status conversion subcase NOT_INITIALIZED_TEST failed (synch)!" );
hgs
parents:
diff changeset
  1983
hgs
parents:
diff changeset
  1984
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, INVALID_ARGUMENT_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  1985
    TEST_ASSERT_DESC( (err == KErrArgument), "Status conversion subcase INVALID_ARGUMENT_TEST failed (synch)!" );
hgs
parents:
diff changeset
  1986
hgs
parents:
diff changeset
  1987
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, FAIL_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  1988
    TEST_ASSERT_DESC( (err == KErrGeneral), "Status conversion subcase FAIL_TEST failed (synch)!" );
hgs
parents:
diff changeset
  1989
hgs
parents:
diff changeset
  1990
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, INCOMPATIBLE_EFFECT_TYPE_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  1991
    TEST_ASSERT_DESC( (err == KErrNotSupported), "Status conversion subcase INCOMPATIBLE_EFFECT_TYPE_TEST failed (synch)!" );
hgs
parents:
diff changeset
  1992
hgs
parents:
diff changeset
  1993
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, INCOMPATIBLE_CAPABILITY_TYPE_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  1994
    TEST_ASSERT_DESC( (err == KErrNotSupported), "Status conversion subcase INCOMPATIBLE_CAPABILITY_TYPE_TEST failed (synch)!" );
hgs
parents:
diff changeset
  1995
hgs
parents:
diff changeset
  1996
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, INCOMPATIBLE_PROPERTY_TYPE_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  1997
    TEST_ASSERT_DESC( (err == KErrNotSupported), "Status conversion subcase INCOMPATIBLE_PROPERTY_TYPE_TEST failed (synch)!" );
hgs
parents:
diff changeset
  1998
hgs
parents:
diff changeset
  1999
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, DEVICE_NEEDS_LICENSE_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  2000
    TEST_ASSERT_DESC( (err == KErrAccessDenied), "Status conversion subcase DEVICE_NEEDS_LICENSE_TEST failed (synch)!" );
hgs
parents:
diff changeset
  2001
hgs
parents:
diff changeset
  2002
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, NOT_ENOUGH_MEMORY_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  2003
    TEST_ASSERT_DESC( (err == KErrNoMemory), "Status conversion subcase NOT_ENOUGH_MEMORY_TEST failed (synch)!" );
hgs
parents:
diff changeset
  2004
hgs
parents:
diff changeset
  2005
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, SERVICE_NOT_RUNNING_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  2006
    TEST_ASSERT_DESC( (err == KErrNotReady), "Status conversion subcase SERVICE_NOT_RUNNING_TEST failed (synch)!" );
hgs
parents:
diff changeset
  2007
hgs
parents:
diff changeset
  2008
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, INSUFFICIENT_PRIORITY_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  2009
    TEST_ASSERT_DESC( (err == KErrAccessDenied), "Status conversion subcase INSUFFICIENT_PRIORITY_TEST failed (synch)!" );
hgs
parents:
diff changeset
  2010
hgs
parents:
diff changeset
  2011
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, SERVICE_BUSY_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  2012
    TEST_ASSERT_DESC( (err == KErrInUse), "Status conversion subcase SERVICE_BUSY_TEST failed (synch)!" );
hgs
parents:
diff changeset
  2013
hgs
parents:
diff changeset
  2014
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, WRN_NOT_PLAYING_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  2015
    TEST_ASSERT_DESC( (err == KErrArgument), "Status conversion subcase WRN_NOT_PLAYING_TEST failed (synch)!" );
hgs
parents:
diff changeset
  2016
hgs
parents:
diff changeset
  2017
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, WRN_INSUFFICIENT_PRIORITY_TEST, dummyEffectHandle );
hgs
parents:
diff changeset
  2018
    TEST_ASSERT_DESC( (err == KErrNone), "Status conversion subcase WRN_INSUFFICIENT_PRIORITY_TEST failed (synch)!" );
hgs
parents:
diff changeset
  2019
hgs
parents:
diff changeset
  2020
    // then the asycnh cases
hgs
parents:
diff changeset
  2021
    TRequestStatus status;
hgs
parents:
diff changeset
  2022
    
hgs
parents:
diff changeset
  2023
    status = KRequestPending;
hgs
parents:
diff changeset
  2024
    iSender->PlayRepeat( iHaptics, fileHandle, 0, SUCCESS_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2025
    iWait.Start();
hgs
parents:
diff changeset
  2026
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Status conversion subcase SUCCESS_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2027
 
hgs
parents:
diff changeset
  2028
    status = KRequestPending;
hgs
parents:
diff changeset
  2029
    iSender->PlayRepeat( iHaptics, fileHandle, 0, ALREADY_INITIALIZED_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2030
    iWait.Start();
hgs
parents:
diff changeset
  2031
    TEST_ASSERT_DESC( (status.Int() == KErrAlreadyExists), "Status conversion subcase ALREADY_INITIALIZED_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2032
    
hgs
parents:
diff changeset
  2033
    status = KRequestPending;
hgs
parents:
diff changeset
  2034
    iSender->PlayRepeat( iHaptics, fileHandle, 0, NOT_INITIALIZED_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2035
    iWait.Start();
hgs
parents:
diff changeset
  2036
    TEST_ASSERT_DESC( (status.Int() == KErrNotReady), "Status conversion subcase NOT_INITIALIZED_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2037
        
hgs
parents:
diff changeset
  2038
    status = KRequestPending;
hgs
parents:
diff changeset
  2039
    iSender->PlayRepeat( iHaptics, fileHandle, 0, INVALID_ARGUMENT_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2040
    iWait.Start();
hgs
parents:
diff changeset
  2041
    TEST_ASSERT_DESC( (status.Int() == KErrArgument), "Status conversion subcase INVALID_ARGUMENT_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2042
hgs
parents:
diff changeset
  2043
    status = KRequestPending;
hgs
parents:
diff changeset
  2044
    iSender->PlayRepeat( iHaptics, fileHandle, 0, FAIL_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2045
    iWait.Start();
hgs
parents:
diff changeset
  2046
    TEST_ASSERT_DESC( (status.Int() == KErrGeneral), "Status conversion subcase FAIL_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2047
hgs
parents:
diff changeset
  2048
    status = KRequestPending;
hgs
parents:
diff changeset
  2049
    iSender->PlayRepeat( iHaptics, fileHandle, 0, INCOMPATIBLE_EFFECT_TYPE_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2050
    iWait.Start();
hgs
parents:
diff changeset
  2051
    TEST_ASSERT_DESC( (status.Int() == KErrNotSupported), "Status conversion subcase INCOMPATIBLE_EFFECT_TYPE_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2052
 
hgs
parents:
diff changeset
  2053
    status = KRequestPending;
hgs
parents:
diff changeset
  2054
    iSender->PlayRepeat( iHaptics, fileHandle, 0, INCOMPATIBLE_CAPABILITY_TYPE_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2055
    iWait.Start();
hgs
parents:
diff changeset
  2056
    TEST_ASSERT_DESC( (status.Int() == KErrNotSupported), "Status conversion subcase INCOMPATIBLE_CAPABILITY_TYPE_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2057
        
hgs
parents:
diff changeset
  2058
    status = KRequestPending;
hgs
parents:
diff changeset
  2059
    iSender->PlayRepeat( iHaptics, fileHandle, 0, INCOMPATIBLE_PROPERTY_TYPE_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2060
    iWait.Start();
hgs
parents:
diff changeset
  2061
    TEST_ASSERT_DESC( (status.Int() == KErrNotSupported), "Status conversion subcase INCOMPATIBLE_PROPERTY_TYPE_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2062
hgs
parents:
diff changeset
  2063
    status = KRequestPending;
hgs
parents:
diff changeset
  2064
    iSender->PlayRepeat( iHaptics, fileHandle, 0, DEVICE_NEEDS_LICENSE_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2065
    iWait.Start();
hgs
parents:
diff changeset
  2066
    TEST_ASSERT_DESC( (status.Int() == KErrAccessDenied), "Status conversion subcase DEVICE_NEEDS_LICENSE_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2067
hgs
parents:
diff changeset
  2068
    status = KRequestPending;
hgs
parents:
diff changeset
  2069
    iSender->PlayRepeat( iHaptics, fileHandle, 0, NOT_ENOUGH_MEMORY_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2070
    iWait.Start();
hgs
parents:
diff changeset
  2071
    TEST_ASSERT_DESC( (status.Int() == KErrNoMemory), "Status conversion subcase NOT_ENOUGH_MEMORY_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2072
 
hgs
parents:
diff changeset
  2073
    status = KRequestPending;
hgs
parents:
diff changeset
  2074
    iSender->PlayRepeat( iHaptics, fileHandle, 0, SERVICE_NOT_RUNNING_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2075
    iWait.Start();
hgs
parents:
diff changeset
  2076
    TEST_ASSERT_DESC( (status.Int() == KErrNotReady), "Status conversion subcase SERVICE_NOT_RUNNING_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2077
        
hgs
parents:
diff changeset
  2078
    status = KRequestPending;
hgs
parents:
diff changeset
  2079
    iSender->PlayRepeat( iHaptics, fileHandle, 0, INSUFFICIENT_PRIORITY_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2080
    iWait.Start();
hgs
parents:
diff changeset
  2081
    TEST_ASSERT_DESC( (status.Int() == KErrAccessDenied), "Status conversion subcase INSUFFICIENT_PRIORITY_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2082
hgs
parents:
diff changeset
  2083
    status = KRequestPending;
hgs
parents:
diff changeset
  2084
    iSender->PlayRepeat( iHaptics, fileHandle, 0, SERVICE_BUSY_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2085
    iWait.Start();
hgs
parents:
diff changeset
  2086
    TEST_ASSERT_DESC( (status.Int() == KErrInUse), "Status conversion subcase SERVICE_BUSY_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2087
hgs
parents:
diff changeset
  2088
    status = KRequestPending;
hgs
parents:
diff changeset
  2089
    iSender->PlayRepeat( iHaptics, fileHandle, 0, WRN_NOT_PLAYING_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2090
    iWait.Start();
hgs
parents:
diff changeset
  2091
    TEST_ASSERT_DESC( (status.Int() == KErrArgument), "Status conversion subcase WRN_NOT_PLAYING_TEST failed (asynch)!" );
hgs
parents:
diff changeset
  2092
hgs
parents:
diff changeset
  2093
    status = KRequestPending;
hgs
parents:
diff changeset
  2094
    iSender->PlayRepeat( iHaptics, fileHandle, 0, WRN_INSUFFICIENT_PRIORITY_TEST, dummyEffectHandle, status );
hgs
parents:
diff changeset
  2095
    iWait.Start();
hgs
parents:
diff changeset
  2096
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Status conversion subcase WRN_INSUFFICIENT_PRIORITY_TEST failed (asynch)!" ); 
hgs
parents:
diff changeset
  2097
    return KErrNone;
hgs
parents:
diff changeset
  2098
    }
hgs
parents:
diff changeset
  2099
hgs
parents:
diff changeset
  2100
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2101
// Load multiple IVT-data
hgs
parents:
diff changeset
  2102
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2103
//
hgs
parents:
diff changeset
  2104
TInt CHapticsClientTest::T_LoadMultipleIVTData()
hgs
parents:
diff changeset
  2105
    {
hgs
parents:
diff changeset
  2106
    TInt fileHandle;
hgs
parents:
diff changeset
  2107
    TInt prevFileHandle;
hgs
parents:
diff changeset
  2108
hgs
parents:
diff changeset
  2109
    // load the IVT data 
hgs
parents:
diff changeset
  2110
    TInt err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  2111
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Load multiple IVT-data case)!" );
hgs
parents:
diff changeset
  2112
    TEST_ASSERT_DESC( fileHandle, "Loading IVT data failed, empty fileHandle (Load multiple IVT-data case)!" );
hgs
parents:
diff changeset
  2113
    prevFileHandle = fileHandle;
hgs
parents:
diff changeset
  2114
hgs
parents:
diff changeset
  2115
    // load the IVT data 
hgs
parents:
diff changeset
  2116
    fileHandle = 0;
hgs
parents:
diff changeset
  2117
    err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypeTimeline ,EFalse );
hgs
parents:
diff changeset
  2118
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Load multiple IVT-data case)!" );
hgs
parents:
diff changeset
  2119
    TEST_ASSERT_DESC( fileHandle, "Loading IVT data failed, empty fileHandle (Load multiple IVT-data case)!" );
hgs
parents:
diff changeset
  2120
    TEST_ASSERT_DESC( fileHandle!=prevFileHandle, "Loading IVT data failed, empty fileHandle (Playing synchronously case)!" );
hgs
parents:
diff changeset
  2121
    
hgs
parents:
diff changeset
  2122
    // try to load the same IVT data as before
hgs
parents:
diff changeset
  2123
    fileHandle = 0;
hgs
parents:
diff changeset
  2124
    err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  2125
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Load multiple IVT-data case)!" );
hgs
parents:
diff changeset
  2126
    TEST_ASSERT_DESC( fileHandle == prevFileHandle, "Loading IVT data failed, wrong fileHandle (Load multiple IVT-data case)!" );
hgs
parents:
diff changeset
  2127
hgs
parents:
diff changeset
  2128
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  2129
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  2130
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (Playing synchronously case))" );
hgs
parents:
diff changeset
  2131
    return err;
hgs
parents:
diff changeset
  2132
    }
hgs
parents:
diff changeset
  2133
hgs
parents:
diff changeset
  2134
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2135
// Playing from multiple IVT data (synchronous version)
hgs
parents:
diff changeset
  2136
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2137
//
hgs
parents:
diff changeset
  2138
TInt CHapticsClientTest::T_PlayIVTEffectsFromMultipleIVTDataSynchronous()
hgs
parents:
diff changeset
  2139
    {
hgs
parents:
diff changeset
  2140
    // load the IVT data 
hgs
parents:
diff changeset
  2141
    TInt fileHandle1;
hgs
parents:
diff changeset
  2142
    TInt err = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  2143
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Playing synchronously case)!" );
hgs
parents:
diff changeset
  2144
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle (Playing synchronously case)!" );
hgs
parents:
diff changeset
  2145
hgs
parents:
diff changeset
  2146
    // load the IVT data 
hgs
parents:
diff changeset
  2147
    TInt fileHandle2;
hgs
parents:
diff changeset
  2148
    err = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  2149
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Playing synchronously case)!" );
hgs
parents:
diff changeset
  2150
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle (Playing synchronously case)!" );
hgs
parents:
diff changeset
  2151
    
hgs
parents:
diff changeset
  2152
    // play the effect..
hgs
parents:
diff changeset
  2153
    TInt effectHandle;
hgs
parents:
diff changeset
  2154
    err = iHaptics->PlayEffect( fileHandle1, 0, effectHandle );
hgs
parents:
diff changeset
  2155
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  2156
    TEST_ASSERT_DESC( effectHandle, "Playing loaded IVT data failed, empty effectHandle (synch)!" );
hgs
parents:
diff changeset
  2157
hgs
parents:
diff changeset
  2158
    // play the effect.. 
hgs
parents:
diff changeset
  2159
    effectHandle = 0;
hgs
parents:
diff changeset
  2160
    err = iHaptics->PlayEffect( fileHandle2, 0, effectHandle );
hgs
parents:
diff changeset
  2161
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  2162
    TEST_ASSERT_DESC( effectHandle, "Playing loaded IVT data failed, empty effectHandle (synch)!" );
hgs
parents:
diff changeset
  2163
hgs
parents:
diff changeset
  2164
    // play the effect.. 
hgs
parents:
diff changeset
  2165
    effectHandle = 0;
hgs
parents:
diff changeset
  2166
    err = iHaptics->PlayEffect( fileHandle2, 0, effectHandle );
hgs
parents:
diff changeset
  2167
    TEST_ASSERT_DESC( (err == KErrNone), "Playing loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  2168
    TEST_ASSERT_DESC( effectHandle, "Playing loaded IVT data failed, empty effectHandle (synch)!" );
hgs
parents:
diff changeset
  2169
hgs
parents:
diff changeset
  2170
    // play the effect.. 
hgs
parents:
diff changeset
  2171
    effectHandle = 0;
hgs
parents:
diff changeset
  2172
    TInt unknownFileHandle = 3;
hgs
parents:
diff changeset
  2173
    err = iHaptics->PlayEffect( unknownFileHandle, 0, effectHandle );
hgs
parents:
diff changeset
  2174
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Playing loaded IVT data failed, not bad handle (synch)!" );
hgs
parents:
diff changeset
  2175
    TEST_ASSERT_DESC( !effectHandle, "Playing loaded IVT data failed, not empty effectHandle (synch)!" );
hgs
parents:
diff changeset
  2176
hgs
parents:
diff changeset
  2177
    
hgs
parents:
diff changeset
  2178
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  2179
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  2180
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect synchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  2181
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  2182
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (Playing synchronously case))" );
hgs
parents:
diff changeset
  2183
    return err;
hgs
parents:
diff changeset
  2184
    }
hgs
parents:
diff changeset
  2185
hgs
parents:
diff changeset
  2186
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2187
// Playing the previously loaded IVT data (asynchronous version)
hgs
parents:
diff changeset
  2188
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2189
//
hgs
parents:
diff changeset
  2190
TInt CHapticsClientTest::T_PlayIVTEffectsFromMultipleIVTDataAsynchronous()
hgs
parents:
diff changeset
  2191
    {
hgs
parents:
diff changeset
  2192
    // load the IVT data 
hgs
parents:
diff changeset
  2193
    TInt fileHandle1;
hgs
parents:
diff changeset
  2194
    TInt err = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  2195
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Playing asynchronously case)!" );
hgs
parents:
diff changeset
  2196
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle (Playing asynchronously case)!" );
hgs
parents:
diff changeset
  2197
hgs
parents:
diff changeset
  2198
    // load the IVT data 
hgs
parents:
diff changeset
  2199
    TInt fileHandle2;
hgs
parents:
diff changeset
  2200
    err = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  2201
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Playing asynchronously case)!" );
hgs
parents:
diff changeset
  2202
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle (Playing asynchronously case)!" );
hgs
parents:
diff changeset
  2203
hgs
parents:
diff changeset
  2204
    // play the effect..
hgs
parents:
diff changeset
  2205
    TInt effectHandle;
hgs
parents:
diff changeset
  2206
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
  2207
hgs
parents:
diff changeset
  2208
    iSender->Play( iHaptics, fileHandle1, 0, effectHandle, status );
hgs
parents:
diff changeset
  2209
    iWait.Start(); 
hgs
parents:
diff changeset
  2210
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  2211
    TEST_ASSERT_DESC( effectHandle, "Playing loaded IVT data failed, empty effectHandle (asynch)!" );
hgs
parents:
diff changeset
  2212
    
hgs
parents:
diff changeset
  2213
    // play the effect..
hgs
parents:
diff changeset
  2214
    effectHandle = 0;
hgs
parents:
diff changeset
  2215
    status = KRequestPending;
hgs
parents:
diff changeset
  2216
    iSender->Play( iHaptics, fileHandle2, 0, effectHandle, status );
hgs
parents:
diff changeset
  2217
    iWait.Start();
hgs
parents:
diff changeset
  2218
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  2219
    TEST_ASSERT_DESC( effectHandle, "Playing loaded IVT data failed, empty effectHandle (asynch)!" );
hgs
parents:
diff changeset
  2220
    
hgs
parents:
diff changeset
  2221
    // play the effect..
hgs
parents:
diff changeset
  2222
    effectHandle = 0;
hgs
parents:
diff changeset
  2223
    status = KRequestPending;
hgs
parents:
diff changeset
  2224
    TInt unknownFileHandle = 3;
hgs
parents:
diff changeset
  2225
    iSender->Play( iHaptics, unknownFileHandle, 0, effectHandle, status );
hgs
parents:
diff changeset
  2226
    iWait.Start();
hgs
parents:
diff changeset
  2227
    TEST_ASSERT_DESC( (status.Int() == KErrBadHandle), "Playing loaded IVT data failed, not bad handle (asynch)!" );
hgs
parents:
diff changeset
  2228
    TEST_ASSERT_DESC( !effectHandle, "Playing loaded IVT data failed, not empty effectHandle (asynch)!" );
hgs
parents:
diff changeset
  2229
    
hgs
parents:
diff changeset
  2230
    
hgs
parents:
diff changeset
  2231
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  2232
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  2233
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect asynchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  2234
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  2235
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (Playing asynchronously case))" );
hgs
parents:
diff changeset
  2236
    return err;
hgs
parents:
diff changeset
  2237
    }
hgs
parents:
diff changeset
  2238
hgs
parents:
diff changeset
  2239
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2240
// Playing with repeat the previously loaded IVT data 
hgs
parents:
diff changeset
  2241
// (synchronous version). Uses timeline effect.
hgs
parents:
diff changeset
  2242
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2243
//
hgs
parents:
diff changeset
  2244
TInt CHapticsClientTest::T_PlayIVTEffectRepeatFromMultipleIVTDataSynchronous()
hgs
parents:
diff changeset
  2245
    {
hgs
parents:
diff changeset
  2246
    // load the IVT data 
hgs
parents:
diff changeset
  2247
    TInt fileHandle1;
hgs
parents:
diff changeset
  2248
    TInt err = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypeTimeline );
hgs
parents:
diff changeset
  2249
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Repeat IVT synchronously case)!" );
hgs
parents:
diff changeset
  2250
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle (Repeat IVT synchronously case)!" );
hgs
parents:
diff changeset
  2251
hgs
parents:
diff changeset
  2252
    // load the IVT data 
hgs
parents:
diff changeset
  2253
    TInt fileHandle2;
hgs
parents:
diff changeset
  2254
    err = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeTimeline, EFalse );
hgs
parents:
diff changeset
  2255
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Repeat IVT synchronously case)!" );
hgs
parents:
diff changeset
  2256
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle (Repeat IVT synchronously case)!" );
hgs
parents:
diff changeset
  2257
    
hgs
parents:
diff changeset
  2258
    // play the effect repeatedly (repeated 3 times) 
hgs
parents:
diff changeset
  2259
    TInt effectHandle;
hgs
parents:
diff changeset
  2260
    err = iHaptics->PlayEffectRepeat( fileHandle1, 0, 3, effectHandle );
hgs
parents:
diff changeset
  2261
    TEST_ASSERT_DESC( (err == KErrNone), "Playing repeatedly loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  2262
    TEST_ASSERT_DESC( effectHandle, "Playing repeatedly loaded IVT data failed, empty effectHandle (synch)!" );
hgs
parents:
diff changeset
  2263
hgs
parents:
diff changeset
  2264
    // play the effect repeatedly (repeated 3 times) 
hgs
parents:
diff changeset
  2265
    effectHandle = 0;
hgs
parents:
diff changeset
  2266
    err = iHaptics->PlayEffectRepeat( fileHandle2, 0, 3, effectHandle );
hgs
parents:
diff changeset
  2267
    TEST_ASSERT_DESC( (err == KErrNone), "Playing repeatedly loaded IVT data failed (synch)!" );
hgs
parents:
diff changeset
  2268
    TEST_ASSERT_DESC( effectHandle, "Playing repeatedly loaded IVT data failed, empty effectHandle (synch)!" );
hgs
parents:
diff changeset
  2269
hgs
parents:
diff changeset
  2270
    // play the effect repeatedly (repeated 3 times) 
hgs
parents:
diff changeset
  2271
    effectHandle = 0;
hgs
parents:
diff changeset
  2272
    TInt unknownFileHandle = 3;
hgs
parents:
diff changeset
  2273
    err = iHaptics->PlayEffectRepeat( unknownFileHandle, 0, 3, effectHandle );
hgs
parents:
diff changeset
  2274
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Playing repeatedly loaded IVT data failed, not bad handle (synch)!" );
hgs
parents:
diff changeset
  2275
    TEST_ASSERT_DESC( !effectHandle, "Playing repeatedly loaded IVT data failed, not empty effectHandle (synch)!" );
hgs
parents:
diff changeset
  2276
hgs
parents:
diff changeset
  2277
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  2278
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  2279
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect repeatedly synchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  2280
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  2281
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (Repeat IVT synchronously case))" );
hgs
parents:
diff changeset
  2282
    return err;
hgs
parents:
diff changeset
  2283
    }
hgs
parents:
diff changeset
  2284
hgs
parents:
diff changeset
  2285
hgs
parents:
diff changeset
  2286
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2287
// Playing with repeat the previously loaded IVT data 
hgs
parents:
diff changeset
  2288
// (asynchronous version). Uses timeline effect.
hgs
parents:
diff changeset
  2289
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2290
//
hgs
parents:
diff changeset
  2291
TInt CHapticsClientTest::T_PlayIVTEffectRepeatFromMultipleIVTDataAsynchronous()
hgs
parents:
diff changeset
  2292
    {
hgs
parents:
diff changeset
  2293
    // load the IVT data 
hgs
parents:
diff changeset
  2294
    TInt fileHandle1;
hgs
parents:
diff changeset
  2295
    TInt err = LoadIVTDataInternal( fileHandle1, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  2296
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Repeat IVT asynchronously case)!" );
hgs
parents:
diff changeset
  2297
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle (Repeat IVT asynchronously case)!" );
hgs
parents:
diff changeset
  2298
    
hgs
parents:
diff changeset
  2299
    // load the IVT data 
hgs
parents:
diff changeset
  2300
    TInt fileHandle2;
hgs
parents:
diff changeset
  2301
    err = LoadIVTDataInternal( fileHandle2, CHWRMHaptics::EHWRMHapticsTypeMagSweep, EFalse );
hgs
parents:
diff changeset
  2302
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (Repeat IVT asynchronously case)!" );
hgs
parents:
diff changeset
  2303
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle (Repeat IVT asynchronously case)!" );
hgs
parents:
diff changeset
  2304
    
hgs
parents:
diff changeset
  2305
    // play the effect (repeated 5 times) 
hgs
parents:
diff changeset
  2306
    TInt effectHandle;
hgs
parents:
diff changeset
  2307
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
  2308
hgs
parents:
diff changeset
  2309
    iSender->PlayRepeat( iHaptics, fileHandle1, 0, 5, effectHandle, status );
hgs
parents:
diff changeset
  2310
    iWait.Start();
hgs
parents:
diff changeset
  2311
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing repeatedly loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  2312
    TEST_ASSERT_DESC( effectHandle, "Playing repeatedly loaded IVT data failed, empty effectHandle (asynch)!" );
hgs
parents:
diff changeset
  2313
hgs
parents:
diff changeset
  2314
    // play the effect (repeated 5 times) 
hgs
parents:
diff changeset
  2315
    effectHandle = 0;
hgs
parents:
diff changeset
  2316
    iSender->PlayRepeat( iHaptics, fileHandle2, 0, 5, effectHandle, status );
hgs
parents:
diff changeset
  2317
    iWait.Start();
hgs
parents:
diff changeset
  2318
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Playing repeatedly loaded IVT data failed (asynch)!" );
hgs
parents:
diff changeset
  2319
    TEST_ASSERT_DESC( effectHandle, "Playing repeatedly loaded IVT data failed, empty effectHandle (asynch)!" );
hgs
parents:
diff changeset
  2320
hgs
parents:
diff changeset
  2321
    // play the effect (repeated 5 times) 
hgs
parents:
diff changeset
  2322
    effectHandle = 0;
hgs
parents:
diff changeset
  2323
    status = KRequestPending;
hgs
parents:
diff changeset
  2324
    TInt unknownFileHandle = 3;
hgs
parents:
diff changeset
  2325
    iSender->PlayRepeat( iHaptics, unknownFileHandle, 0, 5, effectHandle, status );
hgs
parents:
diff changeset
  2326
    iWait.Start();
hgs
parents:
diff changeset
  2327
    TEST_ASSERT_DESC( (status.Int() == KErrBadHandle), "Playing repeatedly loaded IVT data failed, not bad handle (asynch)!" );
hgs
parents:
diff changeset
  2328
    TEST_ASSERT_DESC( !effectHandle, "Playing repeatedly loaded IVT data failed, not empty effectHandle (asynch)!" );
hgs
parents:
diff changeset
  2329
hgs
parents:
diff changeset
  2330
    
hgs
parents:
diff changeset
  2331
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  2332
    err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  2333
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect repeatedly asynchronously failed! (StopAllPlayingEffects)" );
hgs
parents:
diff changeset
  2334
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  2335
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (Repeat IVT asynchronously case))" );
hgs
parents:
diff changeset
  2336
    return err;
hgs
parents:
diff changeset
  2337
    }
hgs
parents:
diff changeset
  2338
hgs
parents:
diff changeset
  2339
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2340
// Releasing previously reserved haptics
hgs
parents:
diff changeset
  2341
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2342
//  
hgs
parents:
diff changeset
  2343
TInt CHapticsClientTest::T_ReserveAndReleaseHaptics()
hgs
parents:
diff changeset
  2344
    {
hgs
parents:
diff changeset
  2345
    // reserve
hgs
parents:
diff changeset
  2346
    TRAPD( err, iHaptics->ReserveHapticsL() );
hgs
parents:
diff changeset
  2347
    TEST_ASSERT_DESC( (err == KErrNone), "Release haptics case failed (ReserveHapticsL leaves)!" );
hgs
parents:
diff changeset
  2348
hgs
parents:
diff changeset
  2349
    // release (does not return an error code)
hgs
parents:
diff changeset
  2350
    iHaptics->ReleaseHaptics();
hgs
parents:
diff changeset
  2351
    return err;
hgs
parents:
diff changeset
  2352
    }
hgs
parents:
diff changeset
  2353
hgs
parents:
diff changeset
  2354
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2355
// Reserving haptics several (in this case three) times
hgs
parents:
diff changeset
  2356
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2357
//
hgs
parents:
diff changeset
  2358
TInt CHapticsClientTest::T_ReserveHapticsSeveralTimes()
hgs
parents:
diff changeset
  2359
    {
hgs
parents:
diff changeset
  2360
    TRAPD( err, iHaptics->ReserveHapticsL() );
hgs
parents:
diff changeset
  2361
    TEST_ASSERT_DESC( (err == KErrNone), "Reserve haptics (1st call) failed!" );
hgs
parents:
diff changeset
  2362
    TRAP( err, iHaptics->ReserveHapticsL() );
hgs
parents:
diff changeset
  2363
    TEST_ASSERT_DESC( (err == KErrNone), "Reserve haptics (2nd call) failed!" );
hgs
parents:
diff changeset
  2364
    TRAP( err, iHaptics->ReserveHapticsL() );
hgs
parents:
diff changeset
  2365
    TEST_ASSERT_DESC( (err == KErrNone), "Reserve haptics (3rd call) failed!" );
hgs
parents:
diff changeset
  2366
    return err;
hgs
parents:
diff changeset
  2367
    }
hgs
parents:
diff changeset
  2368
hgs
parents:
diff changeset
  2369
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2370
// Reserving haptics
hgs
parents:
diff changeset
  2371
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2372
//  
hgs
parents:
diff changeset
  2373
TInt CHapticsClientTest::T_ReserveHapticsNoReleaseL()
hgs
parents:
diff changeset
  2374
    {
hgs
parents:
diff changeset
  2375
    // create first haptics instance
hgs
parents:
diff changeset
  2376
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  2377
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  2378
hgs
parents:
diff changeset
  2379
    // reserve
hgs
parents:
diff changeset
  2380
    TRAPD( err, haptics1->ReserveHapticsL() );
hgs
parents:
diff changeset
  2381
    TEST_ASSERT_DESC( (err == KErrNone), "Reserve haptics failed!" );
hgs
parents:
diff changeset
  2382
hgs
parents:
diff changeset
  2383
    // create second haptics instance and open actuator
hgs
parents:
diff changeset
  2384
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  2385
    TRAP( err, haptics2->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  2386
hgs
parents:
diff changeset
  2387
    // play an effect using second client (should fail because 
hgs
parents:
diff changeset
  2388
    // of reservation)
hgs
parents:
diff changeset
  2389
    RBuf8 effBuf;
hgs
parents:
diff changeset
  2390
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  2391
    TInt effectHandle = 0;
hgs
parents:
diff changeset
  2392
    err = haptics2->PlayEffect( effBuf, 0, effectHandle ); 
hgs
parents:
diff changeset
  2393
    TEST_ASSERT_DESC( (err == KErrInUse), "Playing IVT effect succeeded although server reserved!" );
hgs
parents:
diff changeset
  2394
hgs
parents:
diff changeset
  2395
    // destroy first client --> should release reservation
hgs
parents:
diff changeset
  2396
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  2397
hgs
parents:
diff changeset
  2398
    // play an effect using second client (should succeed, since no
hgs
parents:
diff changeset
  2399
    // reservation)
hgs
parents:
diff changeset
  2400
    err = haptics2->PlayEffect( effBuf, 0, effectHandle ); 
hgs
parents:
diff changeset
  2401
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect failed (no reservation)!" );
hgs
parents:
diff changeset
  2402
hgs
parents:
diff changeset
  2403
    // cleanup
hgs
parents:
diff changeset
  2404
    effBuf.Close();
hgs
parents:
diff changeset
  2405
    delete haptics2;
hgs
parents:
diff changeset
  2406
    return err;
hgs
parents:
diff changeset
  2407
    }
hgs
parents:
diff changeset
  2408
hgs
parents:
diff changeset
  2409
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2410
// Releasing haptics when it has not been previously reserved
hgs
parents:
diff changeset
  2411
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2412
//  
hgs
parents:
diff changeset
  2413
TInt CHapticsClientTest::T_ReleaseHapticsWithoutReservingFirst()
hgs
parents:
diff changeset
  2414
    {
hgs
parents:
diff changeset
  2415
    // no return values nor leave to check, just execute
hgs
parents:
diff changeset
  2416
    iHaptics->ReleaseHaptics();
hgs
parents:
diff changeset
  2417
    return KErrNone;
hgs
parents:
diff changeset
  2418
    }
hgs
parents:
diff changeset
  2419
hgs
parents:
diff changeset
  2420
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2421
// Tries to reserve haptics with forceNoCoeEnv flag on.
hgs
parents:
diff changeset
  2422
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2423
//  
hgs
parents:
diff changeset
  2424
TInt CHapticsClientTest::T_ReserveNoAutomaticFocusNotTrusted()
hgs
parents:
diff changeset
  2425
    {
hgs
parents:
diff changeset
  2426
    TRAPD( err, iHaptics->ReserveHapticsL( ETrue ) );
hgs
parents:
diff changeset
  2427
    TEST_ASSERT_DESC( (err == KErrAccessDenied), "Reservation succeeded although not a trusted client!" );
hgs
parents:
diff changeset
  2428
    return KErrNone;
hgs
parents:
diff changeset
  2429
    }
hgs
parents:
diff changeset
  2430
hgs
parents:
diff changeset
  2431
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2432
// Tries to reserve haptics, when it has already been 
hgs
parents:
diff changeset
  2433
// reserved for another client with higher priority.
hgs
parents:
diff changeset
  2434
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2435
//  
hgs
parents:
diff changeset
  2436
TInt CHapticsClientTest::T_ReserveAlreadyReservedHigherL()
hgs
parents:
diff changeset
  2437
    {
hgs
parents:
diff changeset
  2438
    // create haptics instances and open actuators
hgs
parents:
diff changeset
  2439
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  2440
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  2441
    TRAPD( err, haptics1->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  2442
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  2443
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  2444
    TRAP( err, haptics2->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  2445
hgs
parents:
diff changeset
  2446
    // set first client priority (max)
hgs
parents:
diff changeset
  2447
    haptics1->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  2448
                                 KHWRMHapticsMaxDevicePriority );
hgs
parents:
diff changeset
  2449
hgs
parents:
diff changeset
  2450
    // reserve
hgs
parents:
diff changeset
  2451
    TRAP( err, haptics1->ReserveHapticsL() );
hgs
parents:
diff changeset
  2452
    TEST_ASSERT_DESC( (err == KErrNone), "Reserve haptics failed!" );
hgs
parents:
diff changeset
  2453
hgs
parents:
diff changeset
  2454
    // set second client priority (min)
hgs
parents:
diff changeset
  2455
    haptics2->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  2456
                                 KHWRMHapticsMinDevicePriority );
hgs
parents:
diff changeset
  2457
hgs
parents:
diff changeset
  2458
    // reserve
hgs
parents:
diff changeset
  2459
    TRAP( err, haptics2->ReserveHapticsL() );
hgs
parents:
diff changeset
  2460
    TEST_ASSERT_DESC( (err == KErrNone), "Reserve haptics failed!" );
hgs
parents:
diff changeset
  2461
hgs
parents:
diff changeset
  2462
    // play effect using the second client
hgs
parents:
diff changeset
  2463
    RBuf8 effBuf;
hgs
parents:
diff changeset
  2464
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  2465
    TInt effectHandle = 0;
hgs
parents:
diff changeset
  2466
    err = haptics2->PlayEffect( effBuf, 0, effectHandle ); 
hgs
parents:
diff changeset
  2467
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect failed!" );
hgs
parents:
diff changeset
  2468
hgs
parents:
diff changeset
  2469
    // release first client's reservation
hgs
parents:
diff changeset
  2470
    haptics1->ReleaseHaptics();
hgs
parents:
diff changeset
  2471
hgs
parents:
diff changeset
  2472
    // play effect using the second client
hgs
parents:
diff changeset
  2473
    err = haptics2->PlayEffect( effBuf, 0, effectHandle ); 
hgs
parents:
diff changeset
  2474
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect failed!" );
hgs
parents:
diff changeset
  2475
    
hgs
parents:
diff changeset
  2476
    // release second client's reservation
hgs
parents:
diff changeset
  2477
    haptics2->ReleaseHaptics();
hgs
parents:
diff changeset
  2478
hgs
parents:
diff changeset
  2479
    // cleanup
hgs
parents:
diff changeset
  2480
    effBuf.Close();
hgs
parents:
diff changeset
  2481
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  2482
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  2483
    return err;
hgs
parents:
diff changeset
  2484
    }
hgs
parents:
diff changeset
  2485
hgs
parents:
diff changeset
  2486
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2487
// Tries to reserve haptics, when it has already been 
hgs
parents:
diff changeset
  2488
// reserved for another client with lower priority.
hgs
parents:
diff changeset
  2489
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2490
//  
hgs
parents:
diff changeset
  2491
TInt CHapticsClientTest::T_ReserveAlreadyReservedLowerL()
hgs
parents:
diff changeset
  2492
    {
hgs
parents:
diff changeset
  2493
    // create haptics instances and open actuators
hgs
parents:
diff changeset
  2494
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  2495
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  2496
    TRAPD( err, haptics1->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  2497
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  2498
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  2499
    TRAP( err, haptics2->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  2500
hgs
parents:
diff changeset
  2501
    // set first client priority (min)
hgs
parents:
diff changeset
  2502
    haptics1->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  2503
                                 KHWRMHapticsMinDevicePriority );
hgs
parents:
diff changeset
  2504
hgs
parents:
diff changeset
  2505
    // reserve
hgs
parents:
diff changeset
  2506
    TRAP( err, haptics1->ReserveHapticsL() );
hgs
parents:
diff changeset
  2507
    TEST_ASSERT_DESC( (err == KErrNone), "Reserve haptics failed!" );
hgs
parents:
diff changeset
  2508
hgs
parents:
diff changeset
  2509
    // set second client priority (max)
hgs
parents:
diff changeset
  2510
    haptics2->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  2511
                                 KHWRMHapticsMaxDevicePriority );
hgs
parents:
diff changeset
  2512
hgs
parents:
diff changeset
  2513
    // reserve
hgs
parents:
diff changeset
  2514
    TRAP( err, haptics2->ReserveHapticsL() );
hgs
parents:
diff changeset
  2515
    TEST_ASSERT_DESC( (err == KErrNone), "Reserve haptics failed!" );
hgs
parents:
diff changeset
  2516
    
hgs
parents:
diff changeset
  2517
    // play effect using first client
hgs
parents:
diff changeset
  2518
    RBuf8 effBuf;
hgs
parents:
diff changeset
  2519
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  2520
    TInt effectHandle = 0;
hgs
parents:
diff changeset
  2521
    err = haptics1->PlayEffect( effBuf, 0, effectHandle ); 
hgs
parents:
diff changeset
  2522
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect failed!" );
hgs
parents:
diff changeset
  2523
hgs
parents:
diff changeset
  2524
    // play effect using second client
hgs
parents:
diff changeset
  2525
    err = haptics2->PlayEffect( effBuf, 0, effectHandle ); 
hgs
parents:
diff changeset
  2526
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect failed!" );
hgs
parents:
diff changeset
  2527
hgs
parents:
diff changeset
  2528
    // release second client
hgs
parents:
diff changeset
  2529
    haptics2->ReleaseHaptics();
hgs
parents:
diff changeset
  2530
hgs
parents:
diff changeset
  2531
    // play effect using first client
hgs
parents:
diff changeset
  2532
    err = haptics1->PlayEffect( effBuf, 0, effectHandle ); 
hgs
parents:
diff changeset
  2533
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect failed!" );
hgs
parents:
diff changeset
  2534
hgs
parents:
diff changeset
  2535
    // play effect using second client
hgs
parents:
diff changeset
  2536
    err = haptics2->PlayEffect( effBuf, 0, effectHandle ); 
hgs
parents:
diff changeset
  2537
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect failed!" );
hgs
parents:
diff changeset
  2538
hgs
parents:
diff changeset
  2539
    // release first client
hgs
parents:
diff changeset
  2540
    haptics1->ReleaseHaptics();
hgs
parents:
diff changeset
  2541
hgs
parents:
diff changeset
  2542
    // cleanup
hgs
parents:
diff changeset
  2543
    effBuf.Close();
hgs
parents:
diff changeset
  2544
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  2545
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  2546
    return err;
hgs
parents:
diff changeset
  2547
    }
hgs
parents:
diff changeset
  2548
hgs
parents:
diff changeset
  2549
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2550
// Tries to play effects, when haptics has been reserved
hgs
parents:
diff changeset
  2551
// for a higher priority client.
hgs
parents:
diff changeset
  2552
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2553
// 
hgs
parents:
diff changeset
  2554
TInt CHapticsClientTest::T_PlayWhenReservedL()
hgs
parents:
diff changeset
  2555
    {
hgs
parents:
diff changeset
  2556
    // create haptics instances and open actuators
hgs
parents:
diff changeset
  2557
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  2558
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  2559
    TRAPD( err, haptics1->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  2560
    TRAP( err, iHaptics->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  2561
hgs
parents:
diff changeset
  2562
    // set first client priority (max)
hgs
parents:
diff changeset
  2563
    haptics1->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  2564
                                 KHWRMHapticsMaxDevicePriority );
hgs
parents:
diff changeset
  2565
hgs
parents:
diff changeset
  2566
    // reserve for first client
hgs
parents:
diff changeset
  2567
    TRAP( err, haptics1->ReserveHapticsL() );
hgs
parents:
diff changeset
  2568
    TEST_ASSERT_DESC( (err == KErrNone), "Reserve haptics failed!" );
hgs
parents:
diff changeset
  2569
hgs
parents:
diff changeset
  2570
    // set second client priority (min)
hgs
parents:
diff changeset
  2571
    iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  2572
                                 KHWRMHapticsMinDevicePriority );
hgs
parents:
diff changeset
  2573
hgs
parents:
diff changeset
  2574
    // play effects using second client, when reserved for the first
hgs
parents:
diff changeset
  2575
    // ---> 
hgs
parents:
diff changeset
  2576
hgs
parents:
diff changeset
  2577
    // create effect data for playing effect directly using IVT-data
hgs
parents:
diff changeset
  2578
    RBuf8 effBuf;
hgs
parents:
diff changeset
  2579
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  2580
hgs
parents:
diff changeset
  2581
    // load the IVT data for playing effects using filehandle
hgs
parents:
diff changeset
  2582
    TInt fileHandle = 0;
hgs
parents:
diff changeset
  2583
    err = LoadIVTDataInternal( fileHandle, CHWRMHaptics::EHWRMHapticsTypePeriodic, EFalse );
hgs
parents:
diff changeset
  2584
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed!" );
hgs
parents:
diff changeset
  2585
hgs
parents:
diff changeset
  2586
    // create a magsweep effect
hgs
parents:
diff changeset
  2587
    CHWRMHaptics::THWRMHapticsMagSweepEffect magSweepEffect;
hgs
parents:
diff changeset
  2588
    CreateMagSweepEffect( magSweepEffect );
hgs
parents:
diff changeset
  2589
hgs
parents:
diff changeset
  2590
    // create a periodic effect
hgs
parents:
diff changeset
  2591
    CHWRMHaptics::THWRMHapticsPeriodicEffect periodicEffect;
hgs
parents:
diff changeset
  2592
    CreatePeriodicEffect( periodicEffect );
hgs
parents:
diff changeset
  2593
hgs
parents:
diff changeset
  2594
    TInt effectHandle = 0;
hgs
parents:
diff changeset
  2595
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
  2596
hgs
parents:
diff changeset
  2597
    // synchronous play with data
hgs
parents:
diff changeset
  2598
    err = iHaptics->PlayEffect( effBuf, 0, effectHandle ); 
hgs
parents:
diff changeset
  2599
    TEST_ASSERT_DESC( (err == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2600
    
hgs
parents:
diff changeset
  2601
    // synchronous play-repeat with data
hgs
parents:
diff changeset
  2602
    err = iHaptics->PlayEffectRepeat( effBuf, 0, 2, effectHandle ); 
hgs
parents:
diff changeset
  2603
    TEST_ASSERT_DESC( (err == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2604
    
hgs
parents:
diff changeset
  2605
    // asynchronous play with data
hgs
parents:
diff changeset
  2606
    status = KRequestPending;
hgs
parents:
diff changeset
  2607
    iHaptics->PlayEffect( effBuf, 0, effectHandle, status );
hgs
parents:
diff changeset
  2608
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  2609
    TEST_ASSERT_DESC( (status.Int() == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2610
hgs
parents:
diff changeset
  2611
    // asynchronous play-repeat with data
hgs
parents:
diff changeset
  2612
    status = KRequestPending;
hgs
parents:
diff changeset
  2613
    iHaptics->PlayEffectRepeat( effBuf, 0, 2, effectHandle, status ); 
hgs
parents:
diff changeset
  2614
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  2615
    TEST_ASSERT_DESC( (status.Int() == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2616
hgs
parents:
diff changeset
  2617
    // synchronous play with filehandle
hgs
parents:
diff changeset
  2618
    err = iHaptics->PlayEffect( fileHandle, 0, effectHandle ); 
hgs
parents:
diff changeset
  2619
    TEST_ASSERT_DESC( (err == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2620
    
hgs
parents:
diff changeset
  2621
    // synchronous play-repeat with filehandle
hgs
parents:
diff changeset
  2622
    err = iHaptics->PlayEffectRepeat( fileHandle, 0, 2, effectHandle ); 
hgs
parents:
diff changeset
  2623
    TEST_ASSERT_DESC( (err == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2624
hgs
parents:
diff changeset
  2625
    // asynchronous play with filehandle
hgs
parents:
diff changeset
  2626
    status = KRequestPending;
hgs
parents:
diff changeset
  2627
    iSender->Play( iHaptics, fileHandle, 0, effectHandle, status );
hgs
parents:
diff changeset
  2628
    iWait.Start();
hgs
parents:
diff changeset
  2629
    TEST_ASSERT_DESC( (status.Int() == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2630
hgs
parents:
diff changeset
  2631
    // asynchronous play-repeat with filehandle
hgs
parents:
diff changeset
  2632
    status = KRequestPending;
hgs
parents:
diff changeset
  2633
    iSender->PlayRepeat( iHaptics, fileHandle, 0, 2, effectHandle, status );
hgs
parents:
diff changeset
  2634
    iWait.Start();
hgs
parents:
diff changeset
  2635
    TEST_ASSERT_DESC( (status.Int() == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2636
hgs
parents:
diff changeset
  2637
    // synchronous manual magsweep
hgs
parents:
diff changeset
  2638
    err = iHaptics->PlayMagSweepEffect( magSweepEffect, effectHandle ); 
hgs
parents:
diff changeset
  2639
    TEST_ASSERT_DESC( (err == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2640
hgs
parents:
diff changeset
  2641
    // synchronous manual periodic
hgs
parents:
diff changeset
  2642
    err = iHaptics->PlayPeriodicEffect( periodicEffect, effectHandle ); 
hgs
parents:
diff changeset
  2643
    TEST_ASSERT_DESC( (err == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2644
hgs
parents:
diff changeset
  2645
    // asynchronous manual magsweep
hgs
parents:
diff changeset
  2646
    status = KRequestPending;
hgs
parents:
diff changeset
  2647
    iHaptics->PlayMagSweepEffect( magSweepEffect, effectHandle, status ); 
hgs
parents:
diff changeset
  2648
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  2649
    TEST_ASSERT_DESC( (status.Int() == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2650
hgs
parents:
diff changeset
  2651
    // asynchronous manual periodic
hgs
parents:
diff changeset
  2652
    status = KRequestPending;
hgs
parents:
diff changeset
  2653
    iHaptics->PlayPeriodicEffect( periodicEffect, effectHandle, status ); 
hgs
parents:
diff changeset
  2654
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  2655
    TEST_ASSERT_DESC( (status.Int() == KErrInUse), "Playing IVT effect succeeded although reserved!" );
hgs
parents:
diff changeset
  2656
hgs
parents:
diff changeset
  2657
    // <--- 
hgs
parents:
diff changeset
  2658
hgs
parents:
diff changeset
  2659
    // cleanup
hgs
parents:
diff changeset
  2660
    effBuf.Close();
hgs
parents:
diff changeset
  2661
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  2662
    return KErrNone;
hgs
parents:
diff changeset
  2663
    }
hgs
parents:
diff changeset
  2664
hgs
parents:
diff changeset
  2665
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2666
// Getting effect count from preloaded IVT-data
hgs
parents:
diff changeset
  2667
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2668
// 
hgs
parents:
diff changeset
  2669
TInt CHapticsClientTest::T_GetIVTEffectCount()
hgs
parents:
diff changeset
  2670
    {
hgs
parents:
diff changeset
  2671
    TInt fileHandle1;
hgs
parents:
diff changeset
  2672
    TInt fileHandle2;
hgs
parents:
diff changeset
  2673
    TInt corruptedFile;
hgs
parents:
diff changeset
  2674
    TInt unknownFileHandle = 9;
hgs
parents:
diff changeset
  2675
    
hgs
parents:
diff changeset
  2676
    // load the IVT effect set 1
hgs
parents:
diff changeset
  2677
    TInt err = LoadIVTDataInternal( fileHandle1, EffectSetMT_ivt,
hgs
parents:
diff changeset
  2678
                                    sizeof( EffectSetMT_ivt ) );
hgs
parents:
diff changeset
  2679
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2680
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2681
hgs
parents:
diff changeset
  2682
    // load corrupted IVT effect set
hgs
parents:
diff changeset
  2683
    err = LoadIVTDataInternal( corruptedFile, CorruptedMT_ivt,
hgs
parents:
diff changeset
  2684
                                    sizeof( CorruptedMT_ivt ), EFalse );
hgs
parents:
diff changeset
  2685
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2686
    TEST_ASSERT_DESC( corruptedFile, "Loading IVT data failed, empty fileHandle (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2687
hgs
parents:
diff changeset
  2688
    // load the IVT effect set 2
hgs
parents:
diff changeset
  2689
    err = LoadIVTDataInternal( fileHandle2, Magsweep4HapticsMT_ivt,
hgs
parents:
diff changeset
  2690
                                    sizeof( Magsweep4HapticsMT_ivt ), EFalse );
hgs
parents:
diff changeset
  2691
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2692
    TEST_ASSERT_DESC( fileHandle2, "Loading IVT data failed, empty fileHandle (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2693
hgs
parents:
diff changeset
  2694
hgs
parents:
diff changeset
  2695
    TInt effectCount;
hgs
parents:
diff changeset
  2696
    // get effect count from IVT-data 1
hgs
parents:
diff changeset
  2697
    err = iHaptics->GetEffectCount( fileHandle1, effectCount );
hgs
parents:
diff changeset
  2698
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect count failed (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2699
    TEST_ASSERT_DESC( (effectCount == 6), "Wrong effect count (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2700
hgs
parents:
diff changeset
  2701
    // get effect count from corrupted IVT-data
hgs
parents:
diff changeset
  2702
    err = iHaptics->GetEffectCount( corruptedFile, effectCount );
hgs
parents:
diff changeset
  2703
    TEST_ASSERT_DESC( (err == KErrArgument), "Get count from corrupted IVT-data, incorrect error code (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2704
hgs
parents:
diff changeset
  2705
    // get effect count from IVT-data 2
hgs
parents:
diff changeset
  2706
    err = iHaptics->GetEffectCount( fileHandle2, effectCount );
hgs
parents:
diff changeset
  2707
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect count failed (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2708
    TEST_ASSERT_DESC( (effectCount == 1), "Wrong effect count (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2709
hgs
parents:
diff changeset
  2710
    // get effect count using unknown file handle
hgs
parents:
diff changeset
  2711
    err = iHaptics->GetEffectCount( unknownFileHandle, effectCount );
hgs
parents:
diff changeset
  2712
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Incorrect error code (GetIVTEffectCount case)!" );
hgs
parents:
diff changeset
  2713
hgs
parents:
diff changeset
  2714
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  2715
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  2716
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (GetIVTEffectCount case))" );
hgs
parents:
diff changeset
  2717
    return KErrNone;
hgs
parents:
diff changeset
  2718
    }
hgs
parents:
diff changeset
  2719
hgs
parents:
diff changeset
  2720
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2721
// Getting effect duration from preloaded IVT-data
hgs
parents:
diff changeset
  2722
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2723
// 
hgs
parents:
diff changeset
  2724
TInt CHapticsClientTest::T_GetIVTEffectDuration()
hgs
parents:
diff changeset
  2725
    {
hgs
parents:
diff changeset
  2726
    TInt fileHandle1;
hgs
parents:
diff changeset
  2727
    TInt corruptedFile;
hgs
parents:
diff changeset
  2728
    TInt unknownFileHandle = 9;
hgs
parents:
diff changeset
  2729
    
hgs
parents:
diff changeset
  2730
    // load the IVT effect set 1
hgs
parents:
diff changeset
  2731
    TInt err = LoadIVTDataInternal( fileHandle1, EffectSetMT_ivt,
hgs
parents:
diff changeset
  2732
                                    sizeof( EffectSetMT_ivt ) );
hgs
parents:
diff changeset
  2733
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2734
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2735
hgs
parents:
diff changeset
  2736
    // load corrupted IVT effect set
hgs
parents:
diff changeset
  2737
    err = LoadIVTDataInternal( corruptedFile, CorruptedMT_ivt,
hgs
parents:
diff changeset
  2738
                                    sizeof( CorruptedMT_ivt ), EFalse );
hgs
parents:
diff changeset
  2739
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2740
    TEST_ASSERT_DESC( corruptedFile, "Loading IVT data failed, empty fileHandle (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2741
hgs
parents:
diff changeset
  2742
    TInt effectDuration;
hgs
parents:
diff changeset
  2743
    // duration of the last effect
hgs
parents:
diff changeset
  2744
    TInt index = 5;
hgs
parents:
diff changeset
  2745
    err = iHaptics->GetEffectDuration( fileHandle1, index, effectDuration );
hgs
parents:
diff changeset
  2746
    TEST_ASSERT_DESC( (err == KErrNone), "Get duration failed (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2747
    TEST_ASSERT_DESC( (effectDuration == 4000), "Wrong duration (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2748
hgs
parents:
diff changeset
  2749
    // get duration using effect index out of bounds
hgs
parents:
diff changeset
  2750
    index = 6;
hgs
parents:
diff changeset
  2751
    err = iHaptics->GetEffectDuration( fileHandle1, index, effectDuration );
hgs
parents:
diff changeset
  2752
    TEST_ASSERT_DESC( (err != KErrNone), "Get duration succeeded (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2753
hgs
parents:
diff changeset
  2754
    // get duration from corrupted IVT-data
hgs
parents:
diff changeset
  2755
    index = 0; err = KErrNone;
hgs
parents:
diff changeset
  2756
    err = iHaptics->GetEffectDuration( corruptedFile, index, effectDuration );
hgs
parents:
diff changeset
  2757
    TEST_ASSERT_DESC( (err == KErrArgument), "Get duration from corrupted data, incorrect error code (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2758
hgs
parents:
diff changeset
  2759
    // duration of the first effect
hgs
parents:
diff changeset
  2760
    index = 0;
hgs
parents:
diff changeset
  2761
    err = iHaptics->GetEffectDuration( fileHandle1, index, effectDuration );
hgs
parents:
diff changeset
  2762
    TEST_ASSERT_DESC( (err == KErrNone), "Get duration failed (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2763
    TEST_ASSERT_DESC( (effectDuration == 3915), "Wrong duration (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2764
hgs
parents:
diff changeset
  2765
    // get duration using unknown file handle
hgs
parents:
diff changeset
  2766
    index = 0;
hgs
parents:
diff changeset
  2767
    err = iHaptics->GetEffectDuration( unknownFileHandle, index, effectDuration );
hgs
parents:
diff changeset
  2768
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Incorrect error code (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2769
hgs
parents:
diff changeset
  2770
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  2771
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  2772
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (GetIVTEffectDuration case))" );
hgs
parents:
diff changeset
  2773
    return KErrNone;
hgs
parents:
diff changeset
  2774
    }
hgs
parents:
diff changeset
  2775
hgs
parents:
diff changeset
  2776
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2777
// Getting effect index from preloaded IVT-data
hgs
parents:
diff changeset
  2778
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2779
// 
hgs
parents:
diff changeset
  2780
TInt CHapticsClientTest::T_GetIVTEffectIndexFromName()
hgs
parents:
diff changeset
  2781
    {
hgs
parents:
diff changeset
  2782
    TInt fileHandle1;
hgs
parents:
diff changeset
  2783
    TInt corruptedFile;
hgs
parents:
diff changeset
  2784
    TInt unknownFileHandle = 9;
hgs
parents:
diff changeset
  2785
    
hgs
parents:
diff changeset
  2786
    // load the IVT effect set 1
hgs
parents:
diff changeset
  2787
    TInt err = LoadIVTDataInternal( fileHandle1, EffectSetMT_ivt,
hgs
parents:
diff changeset
  2788
                                    sizeof( EffectSetMT_ivt ) );
hgs
parents:
diff changeset
  2789
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetEffectIndexFromName case)!" );
hgs
parents:
diff changeset
  2790
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle (GetEffectIndexFromName case)!" );
hgs
parents:
diff changeset
  2791
hgs
parents:
diff changeset
  2792
    // load corrupted IVT effect set
hgs
parents:
diff changeset
  2793
    err = LoadIVTDataInternal( corruptedFile, CorruptedMT_ivt,
hgs
parents:
diff changeset
  2794
                                    sizeof( CorruptedMT_ivt ), EFalse );
hgs
parents:
diff changeset
  2795
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetEffectIndexFromName case)!" );
hgs
parents:
diff changeset
  2796
    TEST_ASSERT_DESC( corruptedFile, "Loading IVT data failed, empty fileHandle (GetEffectIndexFromName case)!" );
hgs
parents:
diff changeset
  2797
hgs
parents:
diff changeset
  2798
hgs
parents:
diff changeset
  2799
    TInt effectIndex;
hgs
parents:
diff changeset
  2800
    _LIT8( KFirstName, "Timeline1" );
hgs
parents:
diff changeset
  2801
    _LIT8( KLastName, "MagSweep2" );
hgs
parents:
diff changeset
  2802
    _LIT8( KUnknownName, "Tiline1" );
hgs
parents:
diff changeset
  2803
    TBuf8<128> effectName;
hgs
parents:
diff changeset
  2804
hgs
parents:
diff changeset
  2805
    // get index of the first name
hgs
parents:
diff changeset
  2806
    effectName = KFirstName;
hgs
parents:
diff changeset
  2807
    err = iHaptics->GetEffectIndexFromName( fileHandle1, effectName, effectIndex );
hgs
parents:
diff changeset
  2808
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect index failed (GetEffectIndexFromName case)!" );
hgs
parents:
diff changeset
  2809
    TEST_ASSERT_DESC( (effectIndex == 0), "Wrong effect index (GetEffectIndexFromName case)!" );
hgs
parents:
diff changeset
  2810
    
hgs
parents:
diff changeset
  2811
    // get index of the last name
hgs
parents:
diff changeset
  2812
    effectName = KLastName;
hgs
parents:
diff changeset
  2813
    err = iHaptics->GetEffectIndexFromName( fileHandle1, effectName, effectIndex );
hgs
parents:
diff changeset
  2814
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect index failed (GetEffectIndexFromName case)!" );
hgs
parents:
diff changeset
  2815
    TEST_ASSERT_DESC( (effectIndex == 5), "Wrong effect index (GetEffectIndexFromName case)!" );
hgs
parents:
diff changeset
  2816
hgs
parents:
diff changeset
  2817
    // get index from corrupted IVT-data
hgs
parents:
diff changeset
  2818
    effectName = KFirstName;
hgs
parents:
diff changeset
  2819
    err = iHaptics->GetEffectIndexFromName( corruptedFile, effectName, effectIndex );
hgs
parents:
diff changeset
  2820
    TEST_ASSERT_DESC( (err == KErrArgument), "Get effect index from corrupted data, incorrect error code (GetEffectIndexFromName case)!" );
hgs
parents:
diff changeset
  2821
hgs
parents:
diff changeset
  2822
    // get index using unknown name
hgs
parents:
diff changeset
  2823
    effectName = KUnknownName;
hgs
parents:
diff changeset
  2824
    err = iHaptics->GetEffectIndexFromName( fileHandle1, effectName, effectIndex );
hgs
parents:
diff changeset
  2825
    TEST_ASSERT_DESC( (err != KErrNone), "Get effect succeeded (GetEffectIndexFromName case)!" );
hgs
parents:
diff changeset
  2826
hgs
parents:
diff changeset
  2827
    // get index using unknown file handle
hgs
parents:
diff changeset
  2828
    effectName = KUnknownName;
hgs
parents:
diff changeset
  2829
    err = iHaptics->GetEffectIndexFromName( unknownFileHandle, effectName, effectIndex );
hgs
parents:
diff changeset
  2830
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Incorrect error code (GetEffectIndexFromName case)!" );
hgs
parents:
diff changeset
  2831
hgs
parents:
diff changeset
  2832
hgs
parents:
diff changeset
  2833
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  2834
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  2835
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (GetEffectIndexFromName case))" );
hgs
parents:
diff changeset
  2836
    return err;
hgs
parents:
diff changeset
  2837
    }
hgs
parents:
diff changeset
  2838
hgs
parents:
diff changeset
  2839
hgs
parents:
diff changeset
  2840
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2841
// Getting effect type from preloaded IVT-data
hgs
parents:
diff changeset
  2842
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2843
// 
hgs
parents:
diff changeset
  2844
TInt CHapticsClientTest::T_GetIVTEffectType()
hgs
parents:
diff changeset
  2845
    {
hgs
parents:
diff changeset
  2846
    TInt fileHandle1;
hgs
parents:
diff changeset
  2847
    TInt corruptedFile;
hgs
parents:
diff changeset
  2848
    TInt unknownFileHandle = 9;
hgs
parents:
diff changeset
  2849
    
hgs
parents:
diff changeset
  2850
    // load the IVT effect set 1
hgs
parents:
diff changeset
  2851
    TInt err = LoadIVTDataInternal( fileHandle1, EffectSetMT_ivt,
hgs
parents:
diff changeset
  2852
                                    sizeof( EffectSetMT_ivt ) );
hgs
parents:
diff changeset
  2853
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTEffectType case)!" );
hgs
parents:
diff changeset
  2854
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle (GetIVTEffectType case)!" );
hgs
parents:
diff changeset
  2855
hgs
parents:
diff changeset
  2856
    // load corrupted IVT effect set
hgs
parents:
diff changeset
  2857
    err = LoadIVTDataInternal( corruptedFile, CorruptedMT_ivt,
hgs
parents:
diff changeset
  2858
                                    sizeof( CorruptedMT_ivt ), EFalse );
hgs
parents:
diff changeset
  2859
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTEffectType case)!" );
hgs
parents:
diff changeset
  2860
    TEST_ASSERT_DESC( corruptedFile, "Loading IVT data failed, empty fileHandle (GetIVTEffectType case)!" );
hgs
parents:
diff changeset
  2861
hgs
parents:
diff changeset
  2862
hgs
parents:
diff changeset
  2863
    // get type of the first effect
hgs
parents:
diff changeset
  2864
    TInt effectType;
hgs
parents:
diff changeset
  2865
    TInt effectIndex = 0;
hgs
parents:
diff changeset
  2866
    err = iHaptics->GetEffectType( fileHandle1, effectIndex, effectType );
hgs
parents:
diff changeset
  2867
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect type failed (GetIVTEffectType case)!" );
hgs
parents:
diff changeset
  2868
    TEST_ASSERT_DESC( (effectType == CHWRMHaptics::EHWRMHapticsTypeTimeline), "Wrong effect type (GetIVTEffectType case)!" );    
hgs
parents:
diff changeset
  2869
hgs
parents:
diff changeset
  2870
    // get type from corrupted IVT-data
hgs
parents:
diff changeset
  2871
    effectIndex = 5;
hgs
parents:
diff changeset
  2872
    err = iHaptics->GetEffectType( corruptedFile, effectIndex, effectType );
hgs
parents:
diff changeset
  2873
    TEST_ASSERT_DESC( (err == KErrArgument), "Get effect type from corrupted data, incorrect error code (GetIVTEffectType case)!" );
hgs
parents:
diff changeset
  2874
hgs
parents:
diff changeset
  2875
    // get type of the last effect
hgs
parents:
diff changeset
  2876
    effectIndex = 5;
hgs
parents:
diff changeset
  2877
    err = iHaptics->GetEffectType( fileHandle1, effectIndex, effectType );
hgs
parents:
diff changeset
  2878
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect type failed (GetIVTEffectType case)!" );
hgs
parents:
diff changeset
  2879
    TEST_ASSERT_DESC( (effectType == CHWRMHaptics::EHWRMHapticsTypeMagSweep), "Wrong effect type (GetIVTEffectType case)!" );    
hgs
parents:
diff changeset
  2880
hgs
parents:
diff changeset
  2881
    // get type using effect index out of bounds
hgs
parents:
diff changeset
  2882
    effectIndex = 6;
hgs
parents:
diff changeset
  2883
    err = iHaptics->GetEffectType( fileHandle1, effectIndex, effectType );
hgs
parents:
diff changeset
  2884
    TEST_ASSERT_DESC( (err != KErrNone), "Get effect type succeeded (GetIVTEffectType case)!" );
hgs
parents:
diff changeset
  2885
hgs
parents:
diff changeset
  2886
    // get type using unknown file handle
hgs
parents:
diff changeset
  2887
    effectIndex = 6;
hgs
parents:
diff changeset
  2888
    err = iHaptics->GetEffectType( unknownFileHandle, effectIndex, effectType );
hgs
parents:
diff changeset
  2889
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Incorrect error code (GetIVTEffectType case)!" );
hgs
parents:
diff changeset
  2890
hgs
parents:
diff changeset
  2891
hgs
parents:
diff changeset
  2892
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  2893
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  2894
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (GetIVTEffectType case))" );
hgs
parents:
diff changeset
  2895
    return err;
hgs
parents:
diff changeset
  2896
    }
hgs
parents:
diff changeset
  2897
hgs
parents:
diff changeset
  2898
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2899
// Getting effect name from preloaded IVT-data
hgs
parents:
diff changeset
  2900
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2901
// 
hgs
parents:
diff changeset
  2902
TInt CHapticsClientTest::T_GetIVTEffectName()
hgs
parents:
diff changeset
  2903
    {
hgs
parents:
diff changeset
  2904
    TInt fileHandle1;
hgs
parents:
diff changeset
  2905
    TInt corruptedFile;
hgs
parents:
diff changeset
  2906
    TInt unknownFileHandle = 9;
hgs
parents:
diff changeset
  2907
    
hgs
parents:
diff changeset
  2908
    // load the IVT effect set 1
hgs
parents:
diff changeset
  2909
    TInt err = LoadIVTDataInternal( fileHandle1, EffectSetMT_ivt,
hgs
parents:
diff changeset
  2910
                                    sizeof( EffectSetMT_ivt ) );
hgs
parents:
diff changeset
  2911
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2912
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle (GetIVTEffectName case)!" );
hgs
parents:
diff changeset
  2913
hgs
parents:
diff changeset
  2914
    // load corrupted IVT effect set
hgs
parents:
diff changeset
  2915
    err = LoadIVTDataInternal( corruptedFile, CorruptedMT_ivt,
hgs
parents:
diff changeset
  2916
                                    sizeof( CorruptedMT_ivt ), EFalse );
hgs
parents:
diff changeset
  2917
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTEffectDuration case)!" );
hgs
parents:
diff changeset
  2918
    TEST_ASSERT_DESC( corruptedFile, "Loading IVT data failed, empty fileHandle (GetIVTEffectName case)!" );
hgs
parents:
diff changeset
  2919
hgs
parents:
diff changeset
  2920
hgs
parents:
diff changeset
  2921
    // get name of the first effect
hgs
parents:
diff changeset
  2922
    TBuf8<128> effectName;
hgs
parents:
diff changeset
  2923
    TInt effectIndex = 0;
hgs
parents:
diff changeset
  2924
    _LIT8( KTimeline1, "Timeline1" );
hgs
parents:
diff changeset
  2925
    _LIT8( KMagSweep2, "MagSweep2" );
hgs
parents:
diff changeset
  2926
    err = iHaptics->GetEffectName( fileHandle1, effectIndex, effectName );
hgs
parents:
diff changeset
  2927
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect name failed (GetIVTEffectName case)!" );
hgs
parents:
diff changeset
  2928
    TEST_ASSERT_DESC( (effectName == KTimeline1), "Wrong effect name (GetIVTEffectName case)!" );    
hgs
parents:
diff changeset
  2929
hgs
parents:
diff changeset
  2930
    // get name from corrupted IVT-data
hgs
parents:
diff changeset
  2931
    effectIndex = 0;
hgs
parents:
diff changeset
  2932
    err = iHaptics->GetEffectName( corruptedFile, effectIndex, effectName );
hgs
parents:
diff changeset
  2933
    TEST_ASSERT_DESC( (err == KErrArgument), "Get effect name from corrupted data, incorrect error code (GetIVTEffectName case)!" );
hgs
parents:
diff changeset
  2934
hgs
parents:
diff changeset
  2935
    // get name of the last effect
hgs
parents:
diff changeset
  2936
    effectIndex = 5;
hgs
parents:
diff changeset
  2937
    err = iHaptics->GetEffectName( fileHandle1, effectIndex, effectName );
hgs
parents:
diff changeset
  2938
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect name failed (GetIVTEffectName case)!" );
hgs
parents:
diff changeset
  2939
    TEST_ASSERT_DESC( (effectName == KMagSweep2), "Wrong effect name (GetIVTEffectType case)!" );    
hgs
parents:
diff changeset
  2940
hgs
parents:
diff changeset
  2941
    // get name using effect index out of bounds
hgs
parents:
diff changeset
  2942
    effectIndex = 6;
hgs
parents:
diff changeset
  2943
    err = iHaptics->GetEffectName( fileHandle1, effectIndex, effectName );
hgs
parents:
diff changeset
  2944
    TEST_ASSERT_DESC( (err != KErrNone), "Get effect name succeeded (GetIVTEffectName case)!" );
hgs
parents:
diff changeset
  2945
hgs
parents:
diff changeset
  2946
    // get name using unknown file handle
hgs
parents:
diff changeset
  2947
    effectIndex = 0;
hgs
parents:
diff changeset
  2948
    err = iHaptics->GetEffectName( unknownFileHandle, effectIndex, effectName );
hgs
parents:
diff changeset
  2949
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Incorrect error code (GetIVTEffectName case)!" );
hgs
parents:
diff changeset
  2950
hgs
parents:
diff changeset
  2951
hgs
parents:
diff changeset
  2952
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  2953
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  2954
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (GetIVTEffectName case))" );
hgs
parents:
diff changeset
  2955
    return KErrNone;
hgs
parents:
diff changeset
  2956
    }
hgs
parents:
diff changeset
  2957
hgs
parents:
diff changeset
  2958
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2959
// Getting MagSweep effect definition from preloaded IVT-data
hgs
parents:
diff changeset
  2960
// ---------------------------------------------------------
hgs
parents:
diff changeset
  2961
// 
hgs
parents:
diff changeset
  2962
TInt CHapticsClientTest::T_GetIVTMagSweepEffectDefinition()
hgs
parents:
diff changeset
  2963
    {
hgs
parents:
diff changeset
  2964
    TInt fileHandle1;
hgs
parents:
diff changeset
  2965
    TInt corruptedFile;
hgs
parents:
diff changeset
  2966
    TInt unknownFileHandle = 9;
hgs
parents:
diff changeset
  2967
    
hgs
parents:
diff changeset
  2968
    // load the IVT effect set 1
hgs
parents:
diff changeset
  2969
    TInt err = LoadIVTDataInternal( fileHandle1, EffectSetMT_ivt,
hgs
parents:
diff changeset
  2970
                                    sizeof( EffectSetMT_ivt ) );
hgs
parents:
diff changeset
  2971
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTMagSweepEffectDefinition case)!" );
hgs
parents:
diff changeset
  2972
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle (GetIVTMagSweepEffectDefinition case)!" );
hgs
parents:
diff changeset
  2973
hgs
parents:
diff changeset
  2974
    // load corrupted IVT effect set
hgs
parents:
diff changeset
  2975
    err = LoadIVTDataInternal( corruptedFile, CorruptedMT_ivt,
hgs
parents:
diff changeset
  2976
                                    sizeof( CorruptedMT_ivt ), EFalse );
hgs
parents:
diff changeset
  2977
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTMagSweepEffectDefinition case)!" );
hgs
parents:
diff changeset
  2978
    TEST_ASSERT_DESC( corruptedFile, "Loading IVT data failed, empty fileHandle (GetIVTMagSweepEffectDefinition case)!" );
hgs
parents:
diff changeset
  2979
hgs
parents:
diff changeset
  2980
hgs
parents:
diff changeset
  2981
    // get definition of the first MagSweep effect
hgs
parents:
diff changeset
  2982
    CHWRMHaptics::THWRMHapticsMagSweepEffect effectDefinition;
hgs
parents:
diff changeset
  2983
    TInt effectIndex = 4;
hgs
parents:
diff changeset
  2984
    err = iHaptics->GetMagSweepEffectDefinition( fileHandle1, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  2985
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect definition failed (GetIVTMagSweepEffectDefinition case)!" );
hgs
parents:
diff changeset
  2986
    TEST_ASSERT_DESC( (effectDefinition.iDuration == 3000), "Wrong effect definition (GetIVTMagSweepEffectDefinition case)!" );    
hgs
parents:
diff changeset
  2987
hgs
parents:
diff changeset
  2988
    // get definition from corrupted IVT-data
hgs
parents:
diff changeset
  2989
    effectIndex = 0;
hgs
parents:
diff changeset
  2990
    err = iHaptics->GetMagSweepEffectDefinition( corruptedFile, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  2991
    TEST_ASSERT_DESC( (err == KErrArgument), "Get effect definition from corrupted data, incorrect error code (GetIVTMagSweepEffectDefinition case)!" );
hgs
parents:
diff changeset
  2992
hgs
parents:
diff changeset
  2993
    // get definition of the last MagSweep effect
hgs
parents:
diff changeset
  2994
    effectIndex = 5;
hgs
parents:
diff changeset
  2995
    err = iHaptics->GetMagSweepEffectDefinition( fileHandle1, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  2996
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect definition failed (GetIVTMagSweepEffectDefinition case)!" );
hgs
parents:
diff changeset
  2997
    TEST_ASSERT_DESC( (effectDefinition.iDuration == 4000), "Wrong effect definition (GetIVTMagSweepEffectDefinition case)!" );    
hgs
parents:
diff changeset
  2998
hgs
parents:
diff changeset
  2999
    // get definition using effect index out of bounds
hgs
parents:
diff changeset
  3000
    effectIndex = 6;
hgs
parents:
diff changeset
  3001
    err = iHaptics->GetMagSweepEffectDefinition( fileHandle1, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  3002
    TEST_ASSERT_DESC( (err != KErrNone), "Get effect definition succeeded (GetIVTMagSweepEffectDefinition case)!" );
hgs
parents:
diff changeset
  3003
hgs
parents:
diff changeset
  3004
    // get definition using effect index not pointing to MagSweep effect
hgs
parents:
diff changeset
  3005
    effectIndex = 2;
hgs
parents:
diff changeset
  3006
    err = iHaptics->GetMagSweepEffectDefinition( fileHandle1, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  3007
    TEST_ASSERT_DESC( (err != KErrNone), "Get effect definition succeeded (GetIVTMagSweepEffectDefinition case)!" );
hgs
parents:
diff changeset
  3008
hgs
parents:
diff changeset
  3009
    // get definition using unknown file handle
hgs
parents:
diff changeset
  3010
    effectIndex = 0;
hgs
parents:
diff changeset
  3011
    err = iHaptics->GetMagSweepEffectDefinition( unknownFileHandle, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  3012
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Incorrect error code (GetIVTMagSweepEffectDefinition case)!" );
hgs
parents:
diff changeset
  3013
hgs
parents:
diff changeset
  3014
hgs
parents:
diff changeset
  3015
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  3016
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  3017
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (GetIVTMagSweepEffectDefinition case))" );
hgs
parents:
diff changeset
  3018
    return KErrNone;
hgs
parents:
diff changeset
  3019
    }
hgs
parents:
diff changeset
  3020
hgs
parents:
diff changeset
  3021
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3022
// Getting Periodic effect definition from preloaded IVT-data
hgs
parents:
diff changeset
  3023
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3024
// 
hgs
parents:
diff changeset
  3025
TInt CHapticsClientTest::T_GetIVTPeriodicEffectDefinition()
hgs
parents:
diff changeset
  3026
    {
hgs
parents:
diff changeset
  3027
    TInt fileHandle1;
hgs
parents:
diff changeset
  3028
    TInt corruptedFile;
hgs
parents:
diff changeset
  3029
    TInt unknownFileHandle = 9;
hgs
parents:
diff changeset
  3030
    
hgs
parents:
diff changeset
  3031
    // load the IVT effect set 1
hgs
parents:
diff changeset
  3032
    TInt err = LoadIVTDataInternal( fileHandle1, EffectSetMT_ivt,
hgs
parents:
diff changeset
  3033
                                    sizeof( EffectSetMT_ivt ) );
hgs
parents:
diff changeset
  3034
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTPeriodicEffectDefinition case)!" );
hgs
parents:
diff changeset
  3035
    TEST_ASSERT_DESC( fileHandle1, "Loading IVT data failed, empty fileHandle (GetIVTPeriodicEffectDefinition case)!" );
hgs
parents:
diff changeset
  3036
hgs
parents:
diff changeset
  3037
    // load corrupted IVT effect set
hgs
parents:
diff changeset
  3038
    err = LoadIVTDataInternal( corruptedFile, CorruptedMT_ivt,
hgs
parents:
diff changeset
  3039
                                    sizeof( CorruptedMT_ivt ), EFalse );
hgs
parents:
diff changeset
  3040
    TEST_ASSERT_DESC( (err == KErrNone), "Loading IVT data failed (GetIVTPeriodicEffectDefinition case)!" );
hgs
parents:
diff changeset
  3041
    TEST_ASSERT_DESC( corruptedFile, "Loading IVT data failed, empty fileHandle (GetIVTPeriodicEffectDefinition case)!" );
hgs
parents:
diff changeset
  3042
hgs
parents:
diff changeset
  3043
hgs
parents:
diff changeset
  3044
    // get definition of the first Periodic effect
hgs
parents:
diff changeset
  3045
    CHWRMHaptics::THWRMHapticsPeriodicEffect effectDefinition;
hgs
parents:
diff changeset
  3046
    TInt effectIndex = 2;
hgs
parents:
diff changeset
  3047
    err = iHaptics->GetPeriodicEffectDefinition( fileHandle1, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  3048
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect definition failed (GetIVTPeriodicEffectDefinition case)!" );
hgs
parents:
diff changeset
  3049
    TEST_ASSERT_DESC( (effectDefinition.iDuration == 1000), "Wrong effect definition (GetIVTPeriodicEffectDefinition case)!" );    
hgs
parents:
diff changeset
  3050
hgs
parents:
diff changeset
  3051
    // get definition from corrupted IVT-data
hgs
parents:
diff changeset
  3052
    effectIndex = 0;
hgs
parents:
diff changeset
  3053
    err = iHaptics->GetPeriodicEffectDefinition( corruptedFile, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  3054
    TEST_ASSERT_DESC( (err == KErrArgument), "Get effect definition from corrupted data, incorrect error code (GetIVTPeriodicEffectDefinition case)!" );
hgs
parents:
diff changeset
  3055
hgs
parents:
diff changeset
  3056
    // get definition of the last Periodic effect
hgs
parents:
diff changeset
  3057
    effectIndex = 3;
hgs
parents:
diff changeset
  3058
    err = iHaptics->GetPeriodicEffectDefinition( fileHandle1, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  3059
    TEST_ASSERT_DESC( (err == KErrNone), "Get effect definition failed (GetIVTPeriodicEffectDefinition case)!" );
hgs
parents:
diff changeset
  3060
    TEST_ASSERT_DESC( (effectDefinition.iDuration == 2000), "Wrong effect definition (GetIVTPeriodicEffectDefinition case)!" );    
hgs
parents:
diff changeset
  3061
hgs
parents:
diff changeset
  3062
    // get definition using effect index out of bounds
hgs
parents:
diff changeset
  3063
    effectIndex = 6;
hgs
parents:
diff changeset
  3064
    err = iHaptics->GetPeriodicEffectDefinition( fileHandle1, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  3065
    TEST_ASSERT_DESC( (err != KErrNone), "Get effect definition succeeded (GetIVTPeriodicEffectDefinition case)!" );
hgs
parents:
diff changeset
  3066
hgs
parents:
diff changeset
  3067
    // get definition using effect index not pointing to Periodic effect
hgs
parents:
diff changeset
  3068
    effectIndex = 5;
hgs
parents:
diff changeset
  3069
    err = iHaptics->GetPeriodicEffectDefinition( fileHandle1, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  3070
    TEST_ASSERT_DESC( (err != KErrNone), "Get effect definition succeeded (GetIVTPeriodicEffectDefinition case)!" );
hgs
parents:
diff changeset
  3071
hgs
parents:
diff changeset
  3072
    // get definition using unknown file handle
hgs
parents:
diff changeset
  3073
    effectIndex = 0;
hgs
parents:
diff changeset
  3074
    err = iHaptics->GetPeriodicEffectDefinition( unknownFileHandle, effectIndex, effectDefinition );
hgs
parents:
diff changeset
  3075
    TEST_ASSERT_DESC( (err == KErrBadHandle), "Incorrect error code (GetIVTPeriodicEffectDefinition case)!" );
hgs
parents:
diff changeset
  3076
hgs
parents:
diff changeset
  3077
hgs
parents:
diff changeset
  3078
    // clean up.. (Teardown() will handle the rest)
hgs
parents:
diff changeset
  3079
    err = iHaptics->DeleteAllEffectData();
hgs
parents:
diff changeset
  3080
    TEST_ASSERT_DESC( (err == KErrNone), "Delete All IVT data failed! (GetIVTPeriodicEffectDefinition case))" );
hgs
parents:
diff changeset
  3081
    return KErrNone;
hgs
parents:
diff changeset
  3082
    }
hgs
parents:
diff changeset
  3083
hgs
parents:
diff changeset
  3084
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3085
// Open asynchronously and close haptics client-server session, i.e.
hgs
parents:
diff changeset
  3086
// create and delete haptics client.
hgs
parents:
diff changeset
  3087
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3088
//
hgs
parents:
diff changeset
  3089
TInt CHapticsClientTest::T_CreateAndDeleteAsynchronousL()
hgs
parents:
diff changeset
  3090
    {
hgs
parents:
diff changeset
  3091
    // create iHaptics instance without observers
hgs
parents:
diff changeset
  3092
    TRequestStatus status;
hgs
parents:
diff changeset
  3093
    iHaptics = CHWRMHaptics::NewL( NULL, NULL, status );
hgs
parents:
diff changeset
  3094
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  3095
hgs
parents:
diff changeset
  3096
    // the connection has been opened successfully, if iHaptics is valid and
hgs
parents:
diff changeset
  3097
    // error code is not returned
hgs
parents:
diff changeset
  3098
    TEST_ASSERT_DESC( status == KErrNone, "Haptics client creation failed!");
hgs
parents:
diff changeset
  3099
    TEST_ASSERT_DESC( iHaptics, "Haptics client creation failed!");
hgs
parents:
diff changeset
  3100
hgs
parents:
diff changeset
  3101
    // the connection is closed, when iHaptics is deleted
hgs
parents:
diff changeset
  3102
    delete iHaptics;
hgs
parents:
diff changeset
  3103
    iHaptics = NULL;
hgs
parents:
diff changeset
  3104
    return KErrNone;
hgs
parents:
diff changeset
  3105
    }
hgs
parents:
diff changeset
  3106
    
hgs
parents:
diff changeset
  3107
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3108
// Create several simultaneous sessions to haptics server
hgs
parents:
diff changeset
  3109
// asynchronously.
hgs
parents:
diff changeset
  3110
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3111
//
hgs
parents:
diff changeset
  3112
TInt CHapticsClientTest::T_SeveralSessionsAsynchronousL()
hgs
parents:
diff changeset
  3113
    {
hgs
parents:
diff changeset
  3114
    // create haptics instances without observers. This creates
hgs
parents:
diff changeset
  3115
    // client-server sessions (session instances in the server)
hgs
parents:
diff changeset
  3116
    TRequestStatus status1;
hgs
parents:
diff changeset
  3117
    TRequestStatus status2;
hgs
parents:
diff changeset
  3118
    TRequestStatus status3;
hgs
parents:
diff changeset
  3119
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( NULL, NULL, status1 );
hgs
parents:
diff changeset
  3120
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL, status2 );
hgs
parents:
diff changeset
  3121
    CHWRMHaptics* haptics3 = CHWRMHaptics::NewL( NULL, NULL, status3 );
hgs
parents:
diff changeset
  3122
    User::WaitForRequest( status1 );
hgs
parents:
diff changeset
  3123
    User::WaitForRequest( status2 );
hgs
parents:
diff changeset
  3124
    User::WaitForRequest( status3 );
hgs
parents:
diff changeset
  3125
hgs
parents:
diff changeset
  3126
    // the connection has been opened successfully, if instances are valid and
hgs
parents:
diff changeset
  3127
    // error code is not returned
hgs
parents:
diff changeset
  3128
    TEST_ASSERT_DESC( status1 == KErrNone, "First haptics client creation failed!");
hgs
parents:
diff changeset
  3129
    TEST_ASSERT_DESC( status2 == KErrNone, "Second haptics client creation failed!");
hgs
parents:
diff changeset
  3130
    TEST_ASSERT_DESC( status3 == KErrNone, "Third haptics client creation failed!");
hgs
parents:
diff changeset
  3131
    TEST_ASSERT_DESC( haptics1, "First haptics client creation failed!");
hgs
parents:
diff changeset
  3132
    TEST_ASSERT_DESC( haptics2, "Second haptics client creation failed!");
hgs
parents:
diff changeset
  3133
    TEST_ASSERT_DESC( haptics3, "Third haptics client creation failed!");
hgs
parents:
diff changeset
  3134
hgs
parents:
diff changeset
  3135
    // delete haptics instances. This removes the sessions from 
hgs
parents:
diff changeset
  3136
    // haptics server, and closes the server, when the last session 
hgs
parents:
diff changeset
  3137
    // is closed
hgs
parents:
diff changeset
  3138
    delete haptics1; haptics1 = NULL;
hgs
parents:
diff changeset
  3139
    delete haptics2; haptics2 = NULL;
hgs
parents:
diff changeset
  3140
    delete haptics3; haptics3 = NULL;
hgs
parents:
diff changeset
  3141
    return KErrNone;
hgs
parents:
diff changeset
  3142
    }
hgs
parents:
diff changeset
  3143
hgs
parents:
diff changeset
  3144
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3145
// Create several consecutive sessions asynchronously
hgs
parents:
diff changeset
  3146
// to haptics server.
hgs
parents:
diff changeset
  3147
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3148
//
hgs
parents:
diff changeset
  3149
TInt CHapticsClientTest::T_ConsecutiveSessionsAsynchronousL()
hgs
parents:
diff changeset
  3150
    {
hgs
parents:
diff changeset
  3151
    // Do create and delete three times in a row
hgs
parents:
diff changeset
  3152
    T_CreateAndDeleteAsynchronousL();
hgs
parents:
diff changeset
  3153
    T_CreateAndDeleteAsynchronousL();
hgs
parents:
diff changeset
  3154
    T_CreateAndDeleteAsynchronousL();
hgs
parents:
diff changeset
  3155
    return KErrNone;
hgs
parents:
diff changeset
  3156
    }
hgs
parents:
diff changeset
  3157
    
hgs
parents:
diff changeset
  3158
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3159
// Attemps to pause an effect.
hgs
parents:
diff changeset
  3160
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3161
//
hgs
parents:
diff changeset
  3162
TInt CHapticsClientTest::T_PauseEffect()
hgs
parents:
diff changeset
  3163
    {
hgs
parents:
diff changeset
  3164
    // open a supported actuator
hgs
parents:
diff changeset
  3165
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3166
    
hgs
parents:
diff changeset
  3167
    // pause effect testing
hgs
parents:
diff changeset
  3168
    TInt err = iHaptics->PausePlayingEffect( 0 );
hgs
parents:
diff changeset
  3169
    TEST_ASSERT_DESC( err == KErrNone, "Pausing an effect with handle 0 failed!");
hgs
parents:
diff changeset
  3170
    err = iHaptics->PausePlayingEffect( INT_MIN );
hgs
parents:
diff changeset
  3171
    TEST_ASSERT_DESC( err == KErrNone, "Pausing an effect with handle INT_MIN failed!");
hgs
parents:
diff changeset
  3172
    err = iHaptics->PausePlayingEffect( INT_MAX );
hgs
parents:
diff changeset
  3173
    TEST_ASSERT_DESC( err == KErrNone, "Pausing an effect with handle INT_MAX failed!");
hgs
parents:
diff changeset
  3174
    return err;
hgs
parents:
diff changeset
  3175
    }
hgs
parents:
diff changeset
  3176
hgs
parents:
diff changeset
  3177
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3178
// Attemps to resume an effect.
hgs
parents:
diff changeset
  3179
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3180
//
hgs
parents:
diff changeset
  3181
TInt CHapticsClientTest::T_ResumeEffect()
hgs
parents:
diff changeset
  3182
    {
hgs
parents:
diff changeset
  3183
    // open a supported actuator
hgs
parents:
diff changeset
  3184
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3185
    
hgs
parents:
diff changeset
  3186
    // resume effect testing
hgs
parents:
diff changeset
  3187
    TInt err = iHaptics->ResumePausedEffect( 0 );
hgs
parents:
diff changeset
  3188
    TEST_ASSERT_DESC( err == KErrNone, "Resuming an effect with handle 0 failed!");
hgs
parents:
diff changeset
  3189
    err = iHaptics->ResumePausedEffect( INT_MIN );
hgs
parents:
diff changeset
  3190
    TEST_ASSERT_DESC( err == KErrNone, "Resuming an effect with handle INT_MIN failed!");
hgs
parents:
diff changeset
  3191
    err = iHaptics->ResumePausedEffect( INT_MAX );
hgs
parents:
diff changeset
  3192
    TEST_ASSERT_DESC( err == KErrNone, "Resuming an effect with handle INT_MAX failed!");
hgs
parents:
diff changeset
  3193
    return err;
hgs
parents:
diff changeset
  3194
    }
hgs
parents:
diff changeset
  3195
hgs
parents:
diff changeset
  3196
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3197
// Attemps to stop an effect.
hgs
parents:
diff changeset
  3198
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3199
//
hgs
parents:
diff changeset
  3200
TInt CHapticsClientTest::T_StopEffect()
hgs
parents:
diff changeset
  3201
    {
hgs
parents:
diff changeset
  3202
    // open a supported actuator
hgs
parents:
diff changeset
  3203
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3204
    
hgs
parents:
diff changeset
  3205
    // stop effect testing
hgs
parents:
diff changeset
  3206
    TInt err = iHaptics->StopPlayingEffect( 0 );
hgs
parents:
diff changeset
  3207
    TEST_ASSERT_DESC( err == KErrNone, "Stopping an effect with handle 0 failed!");
hgs
parents:
diff changeset
  3208
    err = iHaptics->StopPlayingEffect( INT_MIN );
hgs
parents:
diff changeset
  3209
    TEST_ASSERT_DESC( err == KErrNone, "Stopping an effect with handle INT_MIN failed!");
hgs
parents:
diff changeset
  3210
    err = iHaptics->StopPlayingEffect( INT_MAX );
hgs
parents:
diff changeset
  3211
    TEST_ASSERT_DESC( err == KErrNone, "Stopping an effect with handle INT_MAX failed!");
hgs
parents:
diff changeset
  3212
    return err;
hgs
parents:
diff changeset
  3213
    }
hgs
parents:
diff changeset
  3214
hgs
parents:
diff changeset
  3215
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3216
// Attemps to stop all effects.
hgs
parents:
diff changeset
  3217
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3218
//
hgs
parents:
diff changeset
  3219
TInt CHapticsClientTest::T_StopAllEffects()
hgs
parents:
diff changeset
  3220
    {
hgs
parents:
diff changeset
  3221
    // open a supported actuator
hgs
parents:
diff changeset
  3222
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3223
    
hgs
parents:
diff changeset
  3224
    // resume effect testing
hgs
parents:
diff changeset
  3225
    TInt err = iHaptics->StopAllPlayingEffects();
hgs
parents:
diff changeset
  3226
    TEST_ASSERT_DESC( err == KErrNone, "Stopping all effects failed!");
hgs
parents:
diff changeset
  3227
    return err;
hgs
parents:
diff changeset
  3228
    }
hgs
parents:
diff changeset
  3229
hgs
parents:
diff changeset
  3230
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3231
// Executes sequence: play effect, pause, resume, stop.
hgs
parents:
diff changeset
  3232
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3233
//
hgs
parents:
diff changeset
  3234
TInt CHapticsClientTest::T_PlayPauseResumeStop()
hgs
parents:
diff changeset
  3235
    {
hgs
parents:
diff changeset
  3236
    // open a supported actuator
hgs
parents:
diff changeset
  3237
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3238
    
hgs
parents:
diff changeset
  3239
    // read magsweep effect to buffer
hgs
parents:
diff changeset
  3240
    RBuf8 effBuf;
hgs
parents:
diff changeset
  3241
    CleanupClosePushL( effBuf );
hgs
parents:
diff changeset
  3242
    CreateIVTEffect( effBuf, CHWRMHaptics::EHWRMHapticsTypeMagSweep );
hgs
parents:
diff changeset
  3243
    
hgs
parents:
diff changeset
  3244
    // play the effect  
hgs
parents:
diff changeset
  3245
    TInt effectHandle = 0;
hgs
parents:
diff changeset
  3246
    TInt err = iHaptics->PlayEffect( effBuf, 0, effectHandle ); 
hgs
parents:
diff changeset
  3247
    TEST_ASSERT_DESC( (err == KErrNone), "Playing IVT effect synchronously failed!" );
hgs
parents:
diff changeset
  3248
    TEST_ASSERT_DESC( effectHandle, "Playing IVT effect synchronously returned empty effect handle!" );
hgs
parents:
diff changeset
  3249
hgs
parents:
diff changeset
  3250
    // cleanup buffer
hgs
parents:
diff changeset
  3251
    CleanupStack::PopAndDestroy( &effBuf );
hgs
parents:
diff changeset
  3252
hgs
parents:
diff changeset
  3253
    // pause the effect
hgs
parents:
diff changeset
  3254
    err = iHaptics->PausePlayingEffect( effectHandle );
hgs
parents:
diff changeset
  3255
    TEST_ASSERT_DESC( err == KErrNone, "Pausing the effect failed!");
hgs
parents:
diff changeset
  3256
hgs
parents:
diff changeset
  3257
    // resume the effect
hgs
parents:
diff changeset
  3258
    err = iHaptics->ResumePausedEffect( effectHandle );
hgs
parents:
diff changeset
  3259
    TEST_ASSERT_DESC( err == KErrNone, "Resuming the effect failed!");
hgs
parents:
diff changeset
  3260
hgs
parents:
diff changeset
  3261
    // stop the effect
hgs
parents:
diff changeset
  3262
    err = iHaptics->StopPlayingEffect( effectHandle );
hgs
parents:
diff changeset
  3263
    TEST_ASSERT_DESC( err == KErrNone, "Stopping the effect failed!");
hgs
parents:
diff changeset
  3264
    return err;
hgs
parents:
diff changeset
  3265
    }
hgs
parents:
diff changeset
  3266
hgs
parents:
diff changeset
  3267
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3268
// Constant getters testing.
hgs
parents:
diff changeset
  3269
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3270
//
hgs
parents:
diff changeset
  3271
TInt CHapticsClientTest::T_ConstantGetters()
hgs
parents:
diff changeset
  3272
    {
hgs
parents:
diff changeset
  3273
    const TInt expectedInfRepeat          = 255;     // VIBE_REPEAT_COUNT_INFINITE
hgs
parents:
diff changeset
  3274
    const TInt expectedInfDuration        = INT_MAX; // VIBE_TIME_INFINITE;
hgs
parents:
diff changeset
  3275
    const TInt expectedMaxEffNameLen      = 128;     // VIBE_MAX_EFFECT_NAME_LENGTH
hgs
parents:
diff changeset
  3276
    const TInt expectedMaxDevNameLen      = 64;      // VIBE_MAX_DEVICE_NAME_LENGTH
hgs
parents:
diff changeset
  3277
    const TInt expectedMaxCapaStrLen      = 64;      // VIBE_MAX_CAPABILITY_STRING_LENGTH
hgs
parents:
diff changeset
  3278
    const TInt expectedMaxPropStrLen      = 64;      // VIBE_MAX_PROPERTY_STRING_LENGTH
hgs
parents:
diff changeset
  3279
    const TInt expectedMaxStrmSampleLen   = 255;     // VIBE_MAX_STREAMING_SAMPLE_SIZE
hgs
parents:
diff changeset
  3280
    const TInt expectedDefaultDevPriority = 0;       // VIBE_DEVPRIORITY_DEFAULT
hgs
parents:
diff changeset
  3281
hgs
parents:
diff changeset
  3282
    TInt infRepeat = iHaptics->InfiniteRepeat();
hgs
parents:
diff changeset
  3283
    TEST_ASSERT_DESC( KErrNotReady == infRepeat, "InfiniteRepeat() wrong error code" );
hgs
parents:
diff changeset
  3284
    TInt infDuration = iHaptics->InfiniteDuration();
hgs
parents:
diff changeset
  3285
    TEST_ASSERT_DESC( KErrNotReady == infDuration, "InfiniteDuration() wrong error code" );
hgs
parents:
diff changeset
  3286
    TInt maxEffNameLen = iHaptics->MaxEffectNameLength();
hgs
parents:
diff changeset
  3287
    TEST_ASSERT_DESC( KErrNotReady == maxEffNameLen, "MaxEffectNameLength() wrong error code" );
hgs
parents:
diff changeset
  3288
    TInt maxDevNameLen = iHaptics->MaxDeviceNameLength();
hgs
parents:
diff changeset
  3289
    TEST_ASSERT_DESC( KErrNotReady == maxDevNameLen, "MaxDeviceNameLength() wrong error code" );
hgs
parents:
diff changeset
  3290
    TInt maxCapaStrLen = iHaptics->MaxCapabilityStringLength();
hgs
parents:
diff changeset
  3291
    TEST_ASSERT_DESC( KErrNotReady == maxCapaStrLen, "MaxCapabilityStringLength() wrong error code" );
hgs
parents:
diff changeset
  3292
    TInt maxPropStrLen = iHaptics->MaxPropertyStringLength();
hgs
parents:
diff changeset
  3293
    TEST_ASSERT_DESC( KErrNotReady == maxPropStrLen, "MaxPropertyStringLength() wrong error code" );
hgs
parents:
diff changeset
  3294
    TInt maxStrmSampleLen = iHaptics->MaxStreamingSampleSize();
hgs
parents:
diff changeset
  3295
    TEST_ASSERT_DESC( KErrNotReady == maxStrmSampleLen, "MaxStreamingSampleSize() wrong error code" );
hgs
parents:
diff changeset
  3296
    TInt defaultDevPriority = iHaptics->DefaultDevicePriority();
hgs
parents:
diff changeset
  3297
    TEST_ASSERT_DESC( KErrNotReady == defaultDevPriority, "DefaultDevicePriority() wrong error code" );
hgs
parents:
diff changeset
  3298
hgs
parents:
diff changeset
  3299
    // open a supported actuator
hgs
parents:
diff changeset
  3300
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3301
hgs
parents:
diff changeset
  3302
    infRepeat = iHaptics->InfiniteRepeat();
hgs
parents:
diff changeset
  3303
    TEST_ASSERT_DESC( expectedInfRepeat == infRepeat, "InfiniteRepeat() failed" );
hgs
parents:
diff changeset
  3304
    infDuration = iHaptics->InfiniteDuration();
hgs
parents:
diff changeset
  3305
    TEST_ASSERT_DESC( expectedInfDuration == infDuration, "InfiniteDuration() failed" );
hgs
parents:
diff changeset
  3306
    maxEffNameLen = iHaptics->MaxEffectNameLength();
hgs
parents:
diff changeset
  3307
    TEST_ASSERT_DESC( expectedMaxEffNameLen == maxEffNameLen, "MaxEffectNameLength() failed" );
hgs
parents:
diff changeset
  3308
    maxDevNameLen = iHaptics->MaxDeviceNameLength();
hgs
parents:
diff changeset
  3309
    TEST_ASSERT_DESC( expectedMaxDevNameLen == maxDevNameLen, "MaxDeviceNameLength() failed" );
hgs
parents:
diff changeset
  3310
    maxCapaStrLen = iHaptics->MaxCapabilityStringLength();
hgs
parents:
diff changeset
  3311
    TEST_ASSERT_DESC( expectedMaxCapaStrLen == maxCapaStrLen, "MaxCapabilityStringLength() failed" );
hgs
parents:
diff changeset
  3312
    maxPropStrLen = iHaptics->MaxPropertyStringLength();
hgs
parents:
diff changeset
  3313
    TEST_ASSERT_DESC( expectedMaxPropStrLen == maxPropStrLen, "MaxPropertyStringLength() failed" );
hgs
parents:
diff changeset
  3314
    maxStrmSampleLen = iHaptics->MaxStreamingSampleSize();
hgs
parents:
diff changeset
  3315
    TEST_ASSERT_DESC( expectedMaxStrmSampleLen == maxStrmSampleLen, "MaxStreamingSampleSize() failed" );
hgs
parents:
diff changeset
  3316
    defaultDevPriority = iHaptics->DefaultDevicePriority();
hgs
parents:
diff changeset
  3317
    TEST_ASSERT_DESC( expectedDefaultDevPriority == defaultDevPriority, "DefaultDevicePriority() failed" );
hgs
parents:
diff changeset
  3318
    return KErrNone;
hgs
parents:
diff changeset
  3319
    }
hgs
parents:
diff changeset
  3320
hgs
parents:
diff changeset
  3321
hgs
parents:
diff changeset
  3322
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3323
// Modifies playing magsweep effect using synchronous API call.
hgs
parents:
diff changeset
  3324
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3325
//
hgs
parents:
diff changeset
  3326
TInt CHapticsClientTest::T_ModifyMagSweepEffectSynchronous()
hgs
parents:
diff changeset
  3327
    {
hgs
parents:
diff changeset
  3328
    // open actuator.. 
hgs
parents:
diff changeset
  3329
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3330
    
hgs
parents:
diff changeset
  3331
    // modify effect
hgs
parents:
diff changeset
  3332
    CHWRMHaptics::THWRMHapticsMagSweepEffect modifiedEffect;
hgs
parents:
diff changeset
  3333
    modifiedEffect.iDuration    = 3030;
hgs
parents:
diff changeset
  3334
    modifiedEffect.iMagnitude   = 7070;
hgs
parents:
diff changeset
  3335
    modifiedEffect.iStyle       = CHWRMHaptics::EHWRMHapticsStyleStrong;
hgs
parents:
diff changeset
  3336
    modifiedEffect.iAttackTime  = 2000;
hgs
parents:
diff changeset
  3337
    modifiedEffect.iAttackLevel = 500;
hgs
parents:
diff changeset
  3338
    modifiedEffect.iFadeTime    = 100;
hgs
parents:
diff changeset
  3339
    modifiedEffect.iFadeLevel   = 10;
hgs
parents:
diff changeset
  3340
hgs
parents:
diff changeset
  3341
    TInt err = iHaptics->ModifyPlayingMagSweepEffect( 0, modifiedEffect );
hgs
parents:
diff changeset
  3342
    TEST_ASSERT_DESC( (err == KErrNone), "Modifying magsweep effect with handle 0 failed!" );
hgs
parents:
diff changeset
  3343
hgs
parents:
diff changeset
  3344
    err = iHaptics->ModifyPlayingMagSweepEffect( INT_MIN, modifiedEffect );
hgs
parents:
diff changeset
  3345
    TEST_ASSERT_DESC( (err == KErrNone), "Modifying magsweep effect with handle INT_MIN failed!" );
hgs
parents:
diff changeset
  3346
hgs
parents:
diff changeset
  3347
    err = iHaptics->ModifyPlayingMagSweepEffect( INT_MAX, modifiedEffect );
hgs
parents:
diff changeset
  3348
    TEST_ASSERT_DESC( (err == KErrNone), "Modifying magsweep effect with handle INT_MAX failed!" );
hgs
parents:
diff changeset
  3349
    return err;
hgs
parents:
diff changeset
  3350
    }
hgs
parents:
diff changeset
  3351
hgs
parents:
diff changeset
  3352
hgs
parents:
diff changeset
  3353
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3354
// Modifies playing magsweep effect using asynchronous API call.
hgs
parents:
diff changeset
  3355
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3356
//
hgs
parents:
diff changeset
  3357
TInt CHapticsClientTest::T_ModifyMagSweepEffectAsynchronous()
hgs
parents:
diff changeset
  3358
    {
hgs
parents:
diff changeset
  3359
    // open actuator.. 
hgs
parents:
diff changeset
  3360
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3361
    
hgs
parents:
diff changeset
  3362
    // modify effect
hgs
parents:
diff changeset
  3363
    CHWRMHaptics::THWRMHapticsMagSweepEffect modifiedEffect;
hgs
parents:
diff changeset
  3364
    modifiedEffect.iDuration    = 5050;
hgs
parents:
diff changeset
  3365
    modifiedEffect.iMagnitude   = 1010;
hgs
parents:
diff changeset
  3366
    modifiedEffect.iStyle       = CHWRMHaptics::EHWRMHapticsStyleStrong;
hgs
parents:
diff changeset
  3367
    modifiedEffect.iAttackTime  = 2000;
hgs
parents:
diff changeset
  3368
    modifiedEffect.iAttackLevel = 500;
hgs
parents:
diff changeset
  3369
    modifiedEffect.iFadeTime    = 100;
hgs
parents:
diff changeset
  3370
    modifiedEffect.iFadeLevel   = 10;
hgs
parents:
diff changeset
  3371
hgs
parents:
diff changeset
  3372
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
  3373
    iHaptics->ModifyPlayingMagSweepEffect( 0, modifiedEffect, status );
hgs
parents:
diff changeset
  3374
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  3375
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Modifying magsweep effect with handle 0 failed!" );
hgs
parents:
diff changeset
  3376
hgs
parents:
diff changeset
  3377
    status = KRequestPending;
hgs
parents:
diff changeset
  3378
    iHaptics->ModifyPlayingMagSweepEffect( INT_MIN, modifiedEffect, status );
hgs
parents:
diff changeset
  3379
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  3380
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Modifying magsweep effect with handle INT_MIN failed!" );
hgs
parents:
diff changeset
  3381
hgs
parents:
diff changeset
  3382
    status = KRequestPending;
hgs
parents:
diff changeset
  3383
    iHaptics->ModifyPlayingMagSweepEffect( INT_MAX, modifiedEffect, status );
hgs
parents:
diff changeset
  3384
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  3385
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Modifying magsweep effect with handle INT_MAX failed!" );
hgs
parents:
diff changeset
  3386
    return KErrNone;
hgs
parents:
diff changeset
  3387
    }
hgs
parents:
diff changeset
  3388
hgs
parents:
diff changeset
  3389
hgs
parents:
diff changeset
  3390
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3391
// Modifies playing periodic effect using synchronous API call.
hgs
parents:
diff changeset
  3392
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3393
//  
hgs
parents:
diff changeset
  3394
TInt CHapticsClientTest::T_ModifyPeriodicEffectSynchronous()
hgs
parents:
diff changeset
  3395
    {
hgs
parents:
diff changeset
  3396
    // open actuator.. 
hgs
parents:
diff changeset
  3397
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3398
    
hgs
parents:
diff changeset
  3399
    // modify effect
hgs
parents:
diff changeset
  3400
    CHWRMHaptics::THWRMHapticsPeriodicEffect modifiedEffect;
hgs
parents:
diff changeset
  3401
    modifiedEffect.iDuration    = 6060;
hgs
parents:
diff changeset
  3402
    modifiedEffect.iMagnitude   = 2020;
hgs
parents:
diff changeset
  3403
    modifiedEffect.iPeriod      = 200;
hgs
parents:
diff changeset
  3404
    modifiedEffect.iStyle       = CHWRMHaptics::EHWRMHapticsStyleStrong;
hgs
parents:
diff changeset
  3405
    modifiedEffect.iAttackTime  = 2000;
hgs
parents:
diff changeset
  3406
    modifiedEffect.iAttackLevel = 500;
hgs
parents:
diff changeset
  3407
    modifiedEffect.iFadeTime    = 100;
hgs
parents:
diff changeset
  3408
    modifiedEffect.iFadeLevel   = 10;
hgs
parents:
diff changeset
  3409
hgs
parents:
diff changeset
  3410
    TInt err = iHaptics->ModifyPlayingPeriodicEffect( 0, modifiedEffect );
hgs
parents:
diff changeset
  3411
    TEST_ASSERT_DESC( (err == KErrNone), "Modifying periodic effect with handle 0 failed!" );
hgs
parents:
diff changeset
  3412
    
hgs
parents:
diff changeset
  3413
    err = iHaptics->ModifyPlayingPeriodicEffect( INT_MIN, modifiedEffect );
hgs
parents:
diff changeset
  3414
    TEST_ASSERT_DESC( (err == KErrNone), "Modifying periodic effect with handle INT_MIN failed!" );
hgs
parents:
diff changeset
  3415
hgs
parents:
diff changeset
  3416
    err = iHaptics->ModifyPlayingPeriodicEffect( INT_MAX, modifiedEffect );
hgs
parents:
diff changeset
  3417
    TEST_ASSERT_DESC( (err == KErrNone), "Modifying periodic effect with handle INT_MAX failed!" );
hgs
parents:
diff changeset
  3418
    return err;
hgs
parents:
diff changeset
  3419
    }
hgs
parents:
diff changeset
  3420
hgs
parents:
diff changeset
  3421
hgs
parents:
diff changeset
  3422
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3423
// Modifies playing periodic effect using asynchronous API call.
hgs
parents:
diff changeset
  3424
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3425
//  
hgs
parents:
diff changeset
  3426
TInt CHapticsClientTest::T_ModifyPeriodicEffectAsynchronous()
hgs
parents:
diff changeset
  3427
    {
hgs
parents:
diff changeset
  3428
    // open actuator.. 
hgs
parents:
diff changeset
  3429
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3430
hgs
parents:
diff changeset
  3431
    // modify effect
hgs
parents:
diff changeset
  3432
    CHWRMHaptics::THWRMHapticsPeriodicEffect modifiedEffect;
hgs
parents:
diff changeset
  3433
    modifiedEffect.iDuration    = 4040;
hgs
parents:
diff changeset
  3434
    modifiedEffect.iMagnitude   = 6060;
hgs
parents:
diff changeset
  3435
    modifiedEffect.iPeriod      = 200;
hgs
parents:
diff changeset
  3436
    modifiedEffect.iStyle       = CHWRMHaptics::EHWRMHapticsStyleStrong;
hgs
parents:
diff changeset
  3437
    modifiedEffect.iAttackTime  = 2000;
hgs
parents:
diff changeset
  3438
    modifiedEffect.iAttackLevel = 500;
hgs
parents:
diff changeset
  3439
    modifiedEffect.iFadeTime    = 100;
hgs
parents:
diff changeset
  3440
    modifiedEffect.iFadeLevel   = 10;
hgs
parents:
diff changeset
  3441
hgs
parents:
diff changeset
  3442
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
  3443
    iHaptics->ModifyPlayingPeriodicEffect( 0, modifiedEffect, status );
hgs
parents:
diff changeset
  3444
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  3445
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Modifying periodic effect with handle 0 failed!" );
hgs
parents:
diff changeset
  3446
hgs
parents:
diff changeset
  3447
    status = KRequestPending;
hgs
parents:
diff changeset
  3448
    iHaptics->ModifyPlayingPeriodicEffect( INT_MIN, modifiedEffect, status );
hgs
parents:
diff changeset
  3449
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  3450
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Modifying periodic effect with handle INT_MIN failed!" );
hgs
parents:
diff changeset
  3451
hgs
parents:
diff changeset
  3452
    status = KRequestPending;
hgs
parents:
diff changeset
  3453
    iHaptics->ModifyPlayingPeriodicEffect( INT_MAX, modifiedEffect, status );
hgs
parents:
diff changeset
  3454
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  3455
    TEST_ASSERT_DESC( (status.Int() == KErrNone), "Modifying periodic effect with handle INT_MAX failed!" );
hgs
parents:
diff changeset
  3456
    return KErrNone;
hgs
parents:
diff changeset
  3457
    }
hgs
parents:
diff changeset
  3458
hgs
parents:
diff changeset
  3459
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3460
// Gets device TInt property
hgs
parents:
diff changeset
  3461
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3462
//  
hgs
parents:
diff changeset
  3463
TInt CHapticsClientTest::T_GetDeviceProperty_TInt_TInt()
hgs
parents:
diff changeset
  3464
    {
hgs
parents:
diff changeset
  3465
    // open actuator.. 
hgs
parents:
diff changeset
  3466
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3467
    
hgs
parents:
diff changeset
  3468
    // get the same value 1
hgs
parents:
diff changeset
  3469
    TInt retValue (0);
hgs
parents:
diff changeset
  3470
    TInt err = iHaptics->GetDeviceProperty( CHWRMHaptics::EHWRMHapticsStrength, retValue );
hgs
parents:
diff changeset
  3471
    TEST_ASSERT_DESC( (err == KErrNone), "Getting device property (Strength) failed(1)!" );
hgs
parents:
diff changeset
  3472
hgs
parents:
diff changeset
  3473
    err = iHaptics->GetDeviceProperty( CHWRMHaptics::EHWRMHapticsDisableEffects, retValue );
hgs
parents:
diff changeset
  3474
    TEST_ASSERT_DESC( (err == KErrNone), "Getting device property (disableEffects) failed(1)!" );
hgs
parents:
diff changeset
  3475
    return err;
hgs
parents:
diff changeset
  3476
    }
hgs
parents:
diff changeset
  3477
hgs
parents:
diff changeset
  3478
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3479
// Gets device TDesC property
hgs
parents:
diff changeset
  3480
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3481
//  
hgs
parents:
diff changeset
  3482
TInt CHapticsClientTest::T_GetDeviceProperty_TInt_TDesC()
hgs
parents:
diff changeset
  3483
    {
hgs
parents:
diff changeset
  3484
    // open actuator.. 
hgs
parents:
diff changeset
  3485
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3486
    
hgs
parents:
diff changeset
  3487
    // get property 
hgs
parents:
diff changeset
  3488
    TBuf8<100> retValue;
hgs
parents:
diff changeset
  3489
    TInt err = iHaptics->GetDeviceProperty( CHWRMHaptics::EHWRMHapticsLicensekey, retValue );
hgs
parents:
diff changeset
  3490
    TEST_ASSERT_DESC( (err == KErrNone), "Setting device property (EHWRMHapticsLicensekey) failed!" );
hgs
parents:
diff changeset
  3491
    return err;
hgs
parents:
diff changeset
  3492
    }
hgs
parents:
diff changeset
  3493
hgs
parents:
diff changeset
  3494
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3495
// Sets device TInt property
hgs
parents:
diff changeset
  3496
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3497
//  
hgs
parents:
diff changeset
  3498
TInt CHapticsClientTest::T_SetDeviceProperty_TInt_TInt()
hgs
parents:
diff changeset
  3499
    {
hgs
parents:
diff changeset
  3500
    const TInt KSomeValue = 50; 
hgs
parents:
diff changeset
  3501
    // open actuator.. 
hgs
parents:
diff changeset
  3502
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3503
    
hgs
parents:
diff changeset
  3504
    // set property 
hgs
parents:
diff changeset
  3505
    TInt err = iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsStrength, KSomeValue ); 
hgs
parents:
diff changeset
  3506
    TEST_ASSERT_DESC( (err == KErrNone), "Setting device property (Strength) failed!" );
hgs
parents:
diff changeset
  3507
hgs
parents:
diff changeset
  3508
    err = iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsDisableEffects, 0 ); 
hgs
parents:
diff changeset
  3509
    TEST_ASSERT_DESC( (err == KErrNone), "Setting device property (disableEffects) failed!" );
hgs
parents:
diff changeset
  3510
    return err;
hgs
parents:
diff changeset
  3511
    }
hgs
parents:
diff changeset
  3512
hgs
parents:
diff changeset
  3513
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3514
// Sets device TDesC property
hgs
parents:
diff changeset
  3515
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3516
//  
hgs
parents:
diff changeset
  3517
TInt CHapticsClientTest::T_SetDeviceProperty_TInt_TDesC()
hgs
parents:
diff changeset
  3518
    {
hgs
parents:
diff changeset
  3519
    // open actuator.. 
hgs
parents:
diff changeset
  3520
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3521
    
hgs
parents:
diff changeset
  3522
    // set property    
hgs
parents:
diff changeset
  3523
    TInt err = iHaptics->SetDeviceProperty( 
hgs
parents:
diff changeset
  3524
                CHWRMHaptics::EHWRMHapticsLicensekey, 
hgs
parents:
diff changeset
  3525
                KNullDesC8 ); 
hgs
parents:
diff changeset
  3526
    TEST_ASSERT_DESC( (err == KErrNone), "Setting device property (NULL license key) failed!" );
hgs
parents:
diff changeset
  3527
hgs
parents:
diff changeset
  3528
    err = iHaptics->SetDeviceProperty( 
hgs
parents:
diff changeset
  3529
                CHWRMHaptics::EHWRMHapticsLicensekey, 
hgs
parents:
diff changeset
  3530
                KPlainKey ); 
hgs
parents:
diff changeset
  3531
    TEST_ASSERT_DESC( (err == KErrNone), "Setting device property (license key) failed!" );
hgs
parents:
diff changeset
  3532
    return err;
hgs
parents:
diff changeset
  3533
    }
hgs
parents:
diff changeset
  3534
hgs
parents:
diff changeset
  3535
TInt CHapticsClientTest::T_PluginMgrTransTimerExpires()
hgs
parents:
diff changeset
  3536
    {
hgs
parents:
diff changeset
  3537
    // open actuator.. 
hgs
parents:
diff changeset
  3538
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3539
hgs
parents:
diff changeset
  3540
    _LIT8 ( KTestPluginMgrTransTimerExpires, "KTestPluginMgrTransTimerExpires" );
hgs
parents:
diff changeset
  3541
    // set property with the TestCase ID string, so that the test plug-in doesn't send the response for the current
hgs
parents:
diff changeset
  3542
    // transaction, till the Plug-in manager Transction timer expires.
hgs
parents:
diff changeset
  3543
    // Out-come: Plug-in manager should hanlde this scenario and send cancel transaction command to test plug-in.
hgs
parents:
diff changeset
  3544
    TInt err = iHaptics->SetDeviceProperty( 
hgs
parents:
diff changeset
  3545
                CHWRMHaptics::EHWRMHapticsLicensekey, 
hgs
parents:
diff changeset
  3546
                KTestPluginMgrTransTimerExpires ); 
hgs
parents:
diff changeset
  3547
    TEST_ASSERT_DESC( (err == KErrTimedOut), "Setting device property (license key) failed!" );
hgs
parents:
diff changeset
  3548
    return KErrNone;
hgs
parents:
diff changeset
  3549
    }
hgs
parents:
diff changeset
  3550
hgs
parents:
diff changeset
  3551
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3552
// Gets device TInt capability
hgs
parents:
diff changeset
  3553
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3554
//  
hgs
parents:
diff changeset
  3555
TInt CHapticsClientTest::T_GetDeviceCapability_TInt_TInt()
hgs
parents:
diff changeset
  3556
    {
hgs
parents:
diff changeset
  3557
    // open actuator.. 
hgs
parents:
diff changeset
  3558
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3559
    
hgs
parents:
diff changeset
  3560
    // get the value
hgs
parents:
diff changeset
  3561
    TInt retValue (0);
hgs
parents:
diff changeset
  3562
    TInt expectedValue (1); // from testplugin's stubresponse.txt
hgs
parents:
diff changeset
  3563
    TInt err = iHaptics->GetDeviceCapability( CHWRMHaptics::EHWRMHapticsMaxNestedRepeats, retValue ); 
hgs
parents:
diff changeset
  3564
    TEST_ASSERT_DESC( (err == KErrNone), 
hgs
parents:
diff changeset
  3565
                       "Getting device property (MaxNestedRepeats) failed!" );
hgs
parents:
diff changeset
  3566
    TEST_ASSERT_DESC( expectedValue == retValue, 
hgs
parents:
diff changeset
  3567
                       "Getting device property (MaxNestedRepeats) failed, wrong value!")                   
hgs
parents:
diff changeset
  3568
    return err;
hgs
parents:
diff changeset
  3569
    }
hgs
parents:
diff changeset
  3570
hgs
parents:
diff changeset
  3571
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3572
// Gets device TDesC capability
hgs
parents:
diff changeset
  3573
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3574
//  
hgs
parents:
diff changeset
  3575
TInt CHapticsClientTest::T_GetDeviceCapability_TInt_TDesC()
hgs
parents:
diff changeset
  3576
    {
hgs
parents:
diff changeset
  3577
    // open actuator.. 
hgs
parents:
diff changeset
  3578
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3579
    
hgs
parents:
diff changeset
  3580
    // get the same value
hgs
parents:
diff changeset
  3581
    TBuf8<100> retValue;
hgs
parents:
diff changeset
  3582
    retValue.FillZ(); // sets length, important here..
hgs
parents:
diff changeset
  3583
    TInt err = iHaptics->GetDeviceCapability( CHWRMHaptics::EHWRMHapticsDeviceName, retValue ); 
hgs
parents:
diff changeset
  3584
    TEST_ASSERT_DESC( (err == KErrNone), "Getting device property (DevName) failed!" );
hgs
parents:
diff changeset
  3585
    // the following are based on what the testplugin retunrs (i.e., bytes 
hgs
parents:
diff changeset
  3586
    // containing the ASCII character values for "S","T","U" and "B")
hgs
parents:
diff changeset
  3587
    const TInt expectedSize( 4 );
hgs
parents:
diff changeset
  3588
    TEST_ASSERT_DESC( expectedSize == retValue.Size(),
hgs
parents:
diff changeset
  3589
        "Getting device property (DevName) failed, wrong length!" );
hgs
parents:
diff changeset
  3590
    const TUint8 ascii4S( 0x53 );
hgs
parents:
diff changeset
  3591
    const TUint8 ascii4T( 0x54 );
hgs
parents:
diff changeset
  3592
    const TUint8 ascii4U( 0x55 );
hgs
parents:
diff changeset
  3593
    const TUint8 ascii4B( 0x42 );   
hgs
parents:
diff changeset
  3594
    TEST_ASSERT_DESC( ascii4S == retValue[0] && ascii4T == retValue[1] &&
hgs
parents:
diff changeset
  3595
                       ascii4U == retValue[2] && ascii4B == retValue[3],
hgs
parents:
diff changeset
  3596
        "Getting device property (DevName) failed, wrong data!" );
hgs
parents:
diff changeset
  3597
    return KErrNone;
hgs
parents:
diff changeset
  3598
    }
hgs
parents:
diff changeset
  3599
hgs
parents:
diff changeset
  3600
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3601
// Fetches the haptics status using the getter method.
hgs
parents:
diff changeset
  3602
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3603
//
hgs
parents:
diff changeset
  3604
TInt CHapticsClientTest::T_GetHapticsStatus()
hgs
parents:
diff changeset
  3605
    {
hgs
parents:
diff changeset
  3606
    MHWRMHapticsObserver::THWRMHapticsStatus status = iHaptics->HapticsStatus();
hgs
parents:
diff changeset
  3607
    TEST_ASSERT_DESC( (status == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable), 
hgs
parents:
diff changeset
  3608
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3609
    return KErrNone;
hgs
parents:
diff changeset
  3610
    }
hgs
parents:
diff changeset
  3611
hgs
parents:
diff changeset
  3612
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3613
// Fetches the haptics status using the observer.
hgs
parents:
diff changeset
  3614
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3615
//
hgs
parents:
diff changeset
  3616
TInt CHapticsClientTest::T_ObserveHapticsStatus()
hgs
parents:
diff changeset
  3617
    {
hgs
parents:
diff changeset
  3618
    // create callback instance
hgs
parents:
diff changeset
  3619
    THapticsStatusCallback callback( this );
hgs
parents:
diff changeset
  3620
    
hgs
parents:
diff changeset
  3621
    // create haptics client with observer
hgs
parents:
diff changeset
  3622
    CHWRMHaptics* haptics = CHWRMHaptics::NewL( &callback, NULL );
hgs
parents:
diff changeset
  3623
hgs
parents:
diff changeset
  3624
    // wait for the callback to be called
hgs
parents:
diff changeset
  3625
    iWait.Start();
hgs
parents:
diff changeset
  3626
    
hgs
parents:
diff changeset
  3627
    // check status (since execution of this method continues, the status
hgs
parents:
diff changeset
  3628
    // has been updated in the callback)
hgs
parents:
diff changeset
  3629
    TEST_ASSERT_DESC( (callback.Status() == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable), 
hgs
parents:
diff changeset
  3630
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3631
hgs
parents:
diff changeset
  3632
    // cleanup
hgs
parents:
diff changeset
  3633
    delete haptics;
hgs
parents:
diff changeset
  3634
    return KErrNone;
hgs
parents:
diff changeset
  3635
    }
hgs
parents:
diff changeset
  3636
hgs
parents:
diff changeset
  3637
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3638
// Fetches status values, when one client is reserving 
hgs
parents:
diff changeset
  3639
// haptics.
hgs
parents:
diff changeset
  3640
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3641
//
hgs
parents:
diff changeset
  3642
TInt CHapticsClientTest::T_GetHapticsStatusWithReservations()
hgs
parents:
diff changeset
  3643
    {
hgs
parents:
diff changeset
  3644
    // create haptics instances
hgs
parents:
diff changeset
  3645
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  3646
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  3647
    
hgs
parents:
diff changeset
  3648
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  3649
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  3650
hgs
parents:
diff changeset
  3651
    // make reservation using the first client
hgs
parents:
diff changeset
  3652
    haptics1->ReserveHapticsL();
hgs
parents:
diff changeset
  3653
hgs
parents:
diff changeset
  3654
    // check client status values
hgs
parents:
diff changeset
  3655
    MHWRMHapticsObserver::THWRMHapticsStatus status1 = haptics1->HapticsStatus();
hgs
parents:
diff changeset
  3656
    TEST_ASSERT_DESC( ( status1 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3657
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3658
    MHWRMHapticsObserver::THWRMHapticsStatus status2 = haptics2->HapticsStatus();
hgs
parents:
diff changeset
  3659
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusReserved ), 
hgs
parents:
diff changeset
  3660
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3661
hgs
parents:
diff changeset
  3662
    // release reservation
hgs
parents:
diff changeset
  3663
    haptics1->ReleaseHaptics();
hgs
parents:
diff changeset
  3664
hgs
parents:
diff changeset
  3665
    // check client status values
hgs
parents:
diff changeset
  3666
    status1 = haptics1->HapticsStatus();
hgs
parents:
diff changeset
  3667
    TEST_ASSERT_DESC( ( status1 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3668
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3669
    status2 = haptics2->HapticsStatus();
hgs
parents:
diff changeset
  3670
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3671
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3672
hgs
parents:
diff changeset
  3673
    // cleanup
hgs
parents:
diff changeset
  3674
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  3675
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  3676
    return KErrNone;
hgs
parents:
diff changeset
  3677
    }
hgs
parents:
diff changeset
  3678
hgs
parents:
diff changeset
  3679
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3680
// Status value observing, when one client is reserving
hgs
parents:
diff changeset
  3681
// haptics.
hgs
parents:
diff changeset
  3682
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3683
//
hgs
parents:
diff changeset
  3684
TInt CHapticsClientTest::T_ObserveHapticsStatusWithReservations()
hgs
parents:
diff changeset
  3685
    {
hgs
parents:
diff changeset
  3686
    // create callback instances
hgs
parents:
diff changeset
  3687
    THapticsStatusCallback callback1( this );
hgs
parents:
diff changeset
  3688
    THapticsStatusCallback callback2( this );
hgs
parents:
diff changeset
  3689
hgs
parents:
diff changeset
  3690
    // create haptics instances
hgs
parents:
diff changeset
  3691
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( &callback1, NULL );
hgs
parents:
diff changeset
  3692
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  3693
    
hgs
parents:
diff changeset
  3694
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( &callback2, NULL );
hgs
parents:
diff changeset
  3695
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  3696
hgs
parents:
diff changeset
  3697
    // wait for the initial notifications to arrive
hgs
parents:
diff changeset
  3698
    iWait.Start();
hgs
parents:
diff changeset
  3699
    iWait.Start();
hgs
parents:
diff changeset
  3700
hgs
parents:
diff changeset
  3701
    // make reservation using the first client
hgs
parents:
diff changeset
  3702
    haptics1->ReserveHapticsL();
hgs
parents:
diff changeset
  3703
    
hgs
parents:
diff changeset
  3704
    // wait for the callback to be called (only second client 
hgs
parents:
diff changeset
  3705
    // should receive notification)
hgs
parents:
diff changeset
  3706
    iWait.Start();
hgs
parents:
diff changeset
  3707
hgs
parents:
diff changeset
  3708
    // check client status values
hgs
parents:
diff changeset
  3709
    MHWRMHapticsObserver::THWRMHapticsStatus status2 = callback2.Status();
hgs
parents:
diff changeset
  3710
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusReserved ), 
hgs
parents:
diff changeset
  3711
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3712
hgs
parents:
diff changeset
  3713
    // release reservation
hgs
parents:
diff changeset
  3714
    haptics1->ReleaseHaptics();
hgs
parents:
diff changeset
  3715
hgs
parents:
diff changeset
  3716
    // wait for the callback to be called (only second client 
hgs
parents:
diff changeset
  3717
    // should receive notification)
hgs
parents:
diff changeset
  3718
    iWait.Start();
hgs
parents:
diff changeset
  3719
hgs
parents:
diff changeset
  3720
    // check client status values
hgs
parents:
diff changeset
  3721
    status2 = callback2.Status();
hgs
parents:
diff changeset
  3722
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3723
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3724
hgs
parents:
diff changeset
  3725
    // cleanup
hgs
parents:
diff changeset
  3726
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  3727
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  3728
    return KErrNone;
hgs
parents:
diff changeset
  3729
    }
hgs
parents:
diff changeset
  3730
hgs
parents:
diff changeset
  3731
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3732
// Haptics status, when several clients are making 
hgs
parents:
diff changeset
  3733
// reservations with equal priorities.
hgs
parents:
diff changeset
  3734
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3735
//
hgs
parents:
diff changeset
  3736
TInt CHapticsClientTest::T_GetHapticsStatusWithSeveralReservations()
hgs
parents:
diff changeset
  3737
    {
hgs
parents:
diff changeset
  3738
    // create haptics instances
hgs
parents:
diff changeset
  3739
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  3740
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  3741
    
hgs
parents:
diff changeset
  3742
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  3743
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  3744
    
hgs
parents:
diff changeset
  3745
    // make reservation using both clients (second should become suspended)
hgs
parents:
diff changeset
  3746
    haptics1->ReserveHapticsL();
hgs
parents:
diff changeset
  3747
    haptics2->ReserveHapticsL();
hgs
parents:
diff changeset
  3748
hgs
parents:
diff changeset
  3749
    // check client status values
hgs
parents:
diff changeset
  3750
    MHWRMHapticsObserver::THWRMHapticsStatus status1 = haptics1->HapticsStatus();
hgs
parents:
diff changeset
  3751
    TEST_ASSERT_DESC( ( status1 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3752
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3753
    MHWRMHapticsObserver::THWRMHapticsStatus status2 = haptics2->HapticsStatus();
hgs
parents:
diff changeset
  3754
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusSuspended ), 
hgs
parents:
diff changeset
  3755
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3756
    
hgs
parents:
diff changeset
  3757
    // release reservation of the first client
hgs
parents:
diff changeset
  3758
    haptics1->ReleaseHaptics();
hgs
parents:
diff changeset
  3759
    
hgs
parents:
diff changeset
  3760
    // check client status values
hgs
parents:
diff changeset
  3761
    status1 = haptics1->HapticsStatus();
hgs
parents:
diff changeset
  3762
    TEST_ASSERT_DESC( ( status1 == MHWRMHapticsObserver::EHWRMHapticsStatusReserved ), 
hgs
parents:
diff changeset
  3763
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3764
    status2 = haptics2->HapticsStatus();
hgs
parents:
diff changeset
  3765
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3766
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3767
    
hgs
parents:
diff changeset
  3768
    // release reservation of the second client
hgs
parents:
diff changeset
  3769
    haptics2->ReleaseHaptics();
hgs
parents:
diff changeset
  3770
    
hgs
parents:
diff changeset
  3771
    // check client status values
hgs
parents:
diff changeset
  3772
    status1 = haptics1->HapticsStatus();
hgs
parents:
diff changeset
  3773
    TEST_ASSERT_DESC( ( status1 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3774
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3775
    status2 = haptics2->HapticsStatus();
hgs
parents:
diff changeset
  3776
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3777
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3778
hgs
parents:
diff changeset
  3779
    // cleanup
hgs
parents:
diff changeset
  3780
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  3781
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  3782
    return KErrNone;
hgs
parents:
diff changeset
  3783
    }
hgs
parents:
diff changeset
  3784
hgs
parents:
diff changeset
  3785
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3786
// Haptics status using observation, when several clients 
hgs
parents:
diff changeset
  3787
// are making reservations with equal priorities.
hgs
parents:
diff changeset
  3788
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3789
//
hgs
parents:
diff changeset
  3790
TInt CHapticsClientTest::T_ObserveHapticsStatusWithSeveralReservations()
hgs
parents:
diff changeset
  3791
    {
hgs
parents:
diff changeset
  3792
    // create callback instances
hgs
parents:
diff changeset
  3793
    THapticsStatusCallback callback1( this );
hgs
parents:
diff changeset
  3794
    THapticsStatusCallback callback2( this );
hgs
parents:
diff changeset
  3795
hgs
parents:
diff changeset
  3796
    // create haptics instances
hgs
parents:
diff changeset
  3797
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( &callback1, NULL );
hgs
parents:
diff changeset
  3798
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  3799
    
hgs
parents:
diff changeset
  3800
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( &callback2, NULL );
hgs
parents:
diff changeset
  3801
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  3802
hgs
parents:
diff changeset
  3803
    // wait for the initial notifications to arrive
hgs
parents:
diff changeset
  3804
    iWait.Start();
hgs
parents:
diff changeset
  3805
    iWait.Start();
hgs
parents:
diff changeset
  3806
hgs
parents:
diff changeset
  3807
    // make reservation using the first client
hgs
parents:
diff changeset
  3808
    haptics1->ReserveHapticsL();
hgs
parents:
diff changeset
  3809
hgs
parents:
diff changeset
  3810
    // wait for the callback to be called (only second client 
hgs
parents:
diff changeset
  3811
    // should receive notification)
hgs
parents:
diff changeset
  3812
    iWait.Start();
hgs
parents:
diff changeset
  3813
hgs
parents:
diff changeset
  3814
    // check client status values
hgs
parents:
diff changeset
  3815
    MHWRMHapticsObserver::THWRMHapticsStatus status2 = callback2.Status();
hgs
parents:
diff changeset
  3816
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusReserved ), 
hgs
parents:
diff changeset
  3817
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3818
hgs
parents:
diff changeset
  3819
    // make reservation using the second client
hgs
parents:
diff changeset
  3820
    haptics2->ReserveHapticsL();
hgs
parents:
diff changeset
  3821
hgs
parents:
diff changeset
  3822
    // wait for the callback to be called (only second client 
hgs
parents:
diff changeset
  3823
    // should receive notification)
hgs
parents:
diff changeset
  3824
    iWait.Start();
hgs
parents:
diff changeset
  3825
hgs
parents:
diff changeset
  3826
    // check client status values
hgs
parents:
diff changeset
  3827
    status2 = callback2.Status();
hgs
parents:
diff changeset
  3828
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusSuspended ), 
hgs
parents:
diff changeset
  3829
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3830
hgs
parents:
diff changeset
  3831
    // release first client's reservation
hgs
parents:
diff changeset
  3832
    haptics1->ReleaseHaptics();
hgs
parents:
diff changeset
  3833
hgs
parents:
diff changeset
  3834
    // wait for the callback to be called (both clients should
hgs
parents:
diff changeset
  3835
    // receive new status)
hgs
parents:
diff changeset
  3836
    iWait.Start();
hgs
parents:
diff changeset
  3837
    iWait.Start();
hgs
parents:
diff changeset
  3838
hgs
parents:
diff changeset
  3839
    // check client status values
hgs
parents:
diff changeset
  3840
    MHWRMHapticsObserver::THWRMHapticsStatus status1 = callback1.Status();
hgs
parents:
diff changeset
  3841
    TEST_ASSERT_DESC( ( status1 == MHWRMHapticsObserver::EHWRMHapticsStatusReserved ), 
hgs
parents:
diff changeset
  3842
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3843
    status2 = callback2.Status();
hgs
parents:
diff changeset
  3844
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3845
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3846
hgs
parents:
diff changeset
  3847
    // release second client's reservation
hgs
parents:
diff changeset
  3848
    haptics2->ReleaseHaptics();
hgs
parents:
diff changeset
  3849
hgs
parents:
diff changeset
  3850
    // wait for the callback to be called (only first client 
hgs
parents:
diff changeset
  3851
    // should receive notification)
hgs
parents:
diff changeset
  3852
    iWait.Start();
hgs
parents:
diff changeset
  3853
hgs
parents:
diff changeset
  3854
    // check client status values
hgs
parents:
diff changeset
  3855
    status1 = callback1.Status();
hgs
parents:
diff changeset
  3856
    TEST_ASSERT_DESC( ( status1 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3857
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3858
hgs
parents:
diff changeset
  3859
    // cleanup
hgs
parents:
diff changeset
  3860
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  3861
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  3862
    return KErrNone;
hgs
parents:
diff changeset
  3863
    }
hgs
parents:
diff changeset
  3864
hgs
parents:
diff changeset
  3865
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3866
// Several clients with one making a reservation --> tests
hgs
parents:
diff changeset
  3867
// that all other clients become "reserved".
hgs
parents:
diff changeset
  3868
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3869
//
hgs
parents:
diff changeset
  3870
TInt CHapticsClientTest::T_GetHapticsStatusWithSeveralClientsOneReservation()
hgs
parents:
diff changeset
  3871
    {
hgs
parents:
diff changeset
  3872
    // create haptics instances
hgs
parents:
diff changeset
  3873
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  3874
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  3875
    
hgs
parents:
diff changeset
  3876
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  3877
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  3878
hgs
parents:
diff changeset
  3879
    CHWRMHaptics* haptics3 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  3880
    CleanupStack::PushL( haptics3 );
hgs
parents:
diff changeset
  3881
hgs
parents:
diff changeset
  3882
    // reservation using first client
hgs
parents:
diff changeset
  3883
    haptics1->ReserveHapticsL();
hgs
parents:
diff changeset
  3884
    
hgs
parents:
diff changeset
  3885
    // check client status values
hgs
parents:
diff changeset
  3886
    MHWRMHapticsObserver::THWRMHapticsStatus status1 = haptics1->HapticsStatus();
hgs
parents:
diff changeset
  3887
    TEST_ASSERT_DESC( ( status1 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3888
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3889
    MHWRMHapticsObserver::THWRMHapticsStatus status2 = haptics2->HapticsStatus();
hgs
parents:
diff changeset
  3890
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusReserved ), 
hgs
parents:
diff changeset
  3891
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3892
    MHWRMHapticsObserver::THWRMHapticsStatus status3 = haptics3->HapticsStatus();
hgs
parents:
diff changeset
  3893
    TEST_ASSERT_DESC( ( status3 == MHWRMHapticsObserver::EHWRMHapticsStatusReserved ), 
hgs
parents:
diff changeset
  3894
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3895
hgs
parents:
diff changeset
  3896
    // release reservation
hgs
parents:
diff changeset
  3897
    haptics1->ReleaseHaptics();
hgs
parents:
diff changeset
  3898
hgs
parents:
diff changeset
  3899
    // check client status values
hgs
parents:
diff changeset
  3900
    status1 = haptics1->HapticsStatus();
hgs
parents:
diff changeset
  3901
    TEST_ASSERT_DESC( ( status1 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3902
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3903
    status2 = haptics2->HapticsStatus();
hgs
parents:
diff changeset
  3904
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3905
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3906
    status3 = haptics3->HapticsStatus();
hgs
parents:
diff changeset
  3907
    TEST_ASSERT_DESC( ( status3 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3908
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3909
hgs
parents:
diff changeset
  3910
    // cleanup
hgs
parents:
diff changeset
  3911
    CleanupStack::PopAndDestroy( haptics3 );
hgs
parents:
diff changeset
  3912
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  3913
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  3914
    return KErrNone;
hgs
parents:
diff changeset
  3915
    }
hgs
parents:
diff changeset
  3916
hgs
parents:
diff changeset
  3917
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3918
// Several clients with one making a reservation --> tests
hgs
parents:
diff changeset
  3919
// that all other clients become "reserved" using observers.
hgs
parents:
diff changeset
  3920
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3921
//
hgs
parents:
diff changeset
  3922
TInt CHapticsClientTest::T_ObserveHapticsStatusWithSeveralClientsOneReservations()
hgs
parents:
diff changeset
  3923
    {
hgs
parents:
diff changeset
  3924
    // create callback instances
hgs
parents:
diff changeset
  3925
    THapticsStatusCallback callback1( this );
hgs
parents:
diff changeset
  3926
    THapticsStatusCallback callback2( this );
hgs
parents:
diff changeset
  3927
    THapticsStatusCallback callback3( this );
hgs
parents:
diff changeset
  3928
hgs
parents:
diff changeset
  3929
    // create haptics instances
hgs
parents:
diff changeset
  3930
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( &callback1, NULL );
hgs
parents:
diff changeset
  3931
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  3932
    
hgs
parents:
diff changeset
  3933
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( &callback2, NULL );
hgs
parents:
diff changeset
  3934
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  3935
hgs
parents:
diff changeset
  3936
    CHWRMHaptics* haptics3 = CHWRMHaptics::NewL( &callback3, NULL );
hgs
parents:
diff changeset
  3937
    CleanupStack::PushL( haptics3 );
hgs
parents:
diff changeset
  3938
hgs
parents:
diff changeset
  3939
    // wait for the initial notifications to arrive
hgs
parents:
diff changeset
  3940
    iWait.Start();
hgs
parents:
diff changeset
  3941
    iWait.Start();
hgs
parents:
diff changeset
  3942
    iWait.Start();
hgs
parents:
diff changeset
  3943
hgs
parents:
diff changeset
  3944
    // reservation using first client
hgs
parents:
diff changeset
  3945
    haptics1->ReserveHapticsL();
hgs
parents:
diff changeset
  3946
hgs
parents:
diff changeset
  3947
    // wait for the notifications for client2 and client3
hgs
parents:
diff changeset
  3948
    iWait.Start();
hgs
parents:
diff changeset
  3949
    iWait.Start();
hgs
parents:
diff changeset
  3950
hgs
parents:
diff changeset
  3951
    // check client status values
hgs
parents:
diff changeset
  3952
    MHWRMHapticsObserver::THWRMHapticsStatus status2 = callback2.Status();
hgs
parents:
diff changeset
  3953
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusReserved ), 
hgs
parents:
diff changeset
  3954
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3955
    MHWRMHapticsObserver::THWRMHapticsStatus status3 = callback3.Status();
hgs
parents:
diff changeset
  3956
    TEST_ASSERT_DESC( ( status3 == MHWRMHapticsObserver::EHWRMHapticsStatusReserved ), 
hgs
parents:
diff changeset
  3957
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3958
hgs
parents:
diff changeset
  3959
    // release reservation using first client
hgs
parents:
diff changeset
  3960
    haptics1->ReleaseHaptics();
hgs
parents:
diff changeset
  3961
hgs
parents:
diff changeset
  3962
    // wait for the notifications for client2 and client3
hgs
parents:
diff changeset
  3963
    iWait.Start();
hgs
parents:
diff changeset
  3964
    iWait.Start();
hgs
parents:
diff changeset
  3965
hgs
parents:
diff changeset
  3966
    // check client status values
hgs
parents:
diff changeset
  3967
    status2 = callback2.Status();
hgs
parents:
diff changeset
  3968
    TEST_ASSERT_DESC( ( status2 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3969
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3970
    status3 = callback3.Status();
hgs
parents:
diff changeset
  3971
    TEST_ASSERT_DESC( ( status3 == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  3972
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  3973
hgs
parents:
diff changeset
  3974
    // cleanup
hgs
parents:
diff changeset
  3975
    CleanupStack::PopAndDestroy( haptics3 );
hgs
parents:
diff changeset
  3976
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  3977
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  3978
    return KErrNone;
hgs
parents:
diff changeset
  3979
    }
hgs
parents:
diff changeset
  3980
hgs
parents:
diff changeset
  3981
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3982
// Creates streaming effect.
hgs
parents:
diff changeset
  3983
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3984
//  
hgs
parents:
diff changeset
  3985
TInt CHapticsClientTest::T_CreateStreamingEffect()
hgs
parents:
diff changeset
  3986
    {
hgs
parents:
diff changeset
  3987
    // open actuator.. 
hgs
parents:
diff changeset
  3988
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  3989
    
hgs
parents:
diff changeset
  3990
    TInt effectHandle;
hgs
parents:
diff changeset
  3991
    TInt err = iHaptics->CreateStreamingEffect( effectHandle );
hgs
parents:
diff changeset
  3992
    TEST_ASSERT_DESC( (err == KErrNone), "Creating streaming effect failed!" );
hgs
parents:
diff changeset
  3993
    TEST_ASSERT_DESC( effectHandle, "Creating streaming effect returned empty effect handle!" );
hgs
parents:
diff changeset
  3994
    return err;
hgs
parents:
diff changeset
  3995
    }
hgs
parents:
diff changeset
  3996
hgs
parents:
diff changeset
  3997
// ---------------------------------------------------------
hgs
parents:
diff changeset
  3998
// Plays streaming sample using synchronous API call.
hgs
parents:
diff changeset
  3999
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4000
//  
hgs
parents:
diff changeset
  4001
TInt CHapticsClientTest::T_PlayStreamingSample()
hgs
parents:
diff changeset
  4002
    {
hgs
parents:
diff changeset
  4003
    // open actuator.. 
hgs
parents:
diff changeset
  4004
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  4005
    RBuf8 validStreamSample;
hgs
parents:
diff changeset
  4006
    RBuf8 tooBigStreamSample;
hgs
parents:
diff changeset
  4007
    CleanupClosePushL( validStreamSample );
hgs
parents:
diff changeset
  4008
    CleanupClosePushL( tooBigStreamSample );
hgs
parents:
diff changeset
  4009
    
hgs
parents:
diff changeset
  4010
    TInt maxValidSize = iHaptics->MaxStreamingSampleSize();
hgs
parents:
diff changeset
  4011
    CreateDummyStreamSample( maxValidSize, validStreamSample );
hgs
parents:
diff changeset
  4012
hgs
parents:
diff changeset
  4013
    // valid sized sample 0 handle 0 offset
hgs
parents:
diff changeset
  4014
    TInt err = iHaptics->PlayStreamingSample( 0, validStreamSample );
hgs
parents:
diff changeset
  4015
    TEST_ASSERT_DESC( (err == KErrNone), "Play streaming sample failed!" );
hgs
parents:
diff changeset
  4016
hgs
parents:
diff changeset
  4017
    // normal sample MIN handle MIN offset
hgs
parents:
diff changeset
  4018
    err = iHaptics->PlayStreamingSample( INT_MIN, validStreamSample );
hgs
parents:
diff changeset
  4019
    TEST_ASSERT_DESC( (err == KErrNone), "Play streaming sample failed!" );
hgs
parents:
diff changeset
  4020
hgs
parents:
diff changeset
  4021
    // normal sample MAX handle MAX offset
hgs
parents:
diff changeset
  4022
    err = iHaptics->PlayStreamingSample( INT_MAX, validStreamSample );
hgs
parents:
diff changeset
  4023
    TEST_ASSERT_DESC( (err == KErrNone), "Play streaming sample failed!" );
hgs
parents:
diff changeset
  4024
    
hgs
parents:
diff changeset
  4025
    // over sized sample
hgs
parents:
diff changeset
  4026
    CreateDummyStreamSample( maxValidSize+1, tooBigStreamSample );
hgs
parents:
diff changeset
  4027
    err = iHaptics->PlayStreamingSample( INT_MAX, tooBigStreamSample );
hgs
parents:
diff changeset
  4028
    TEST_ASSERT_DESC( (err == KErrArgument), "Play streaming sample (over sized sample), wrong error code" );
hgs
parents:
diff changeset
  4029
hgs
parents:
diff changeset
  4030
hgs
parents:
diff changeset
  4031
    // Haptics reserved for higher priority client
hgs
parents:
diff changeset
  4032
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  4033
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  4034
hgs
parents:
diff changeset
  4035
    TRAPD( error, haptics2->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  4036
hgs
parents:
diff changeset
  4037
    // set new client priority to maximum
hgs
parents:
diff changeset
  4038
    haptics2->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  4039
                                 KHWRMHapticsMaxDevicePriority );
hgs
parents:
diff changeset
  4040
    // set default client priority to min
hgs
parents:
diff changeset
  4041
    iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  4042
                                 KHWRMHapticsMinDevicePriority );
hgs
parents:
diff changeset
  4043
    TRAP( error, haptics2->ReserveHapticsL() );
hgs
parents:
diff changeset
  4044
hgs
parents:
diff changeset
  4045
    err = iHaptics->PlayStreamingSample( INT_MIN, validStreamSample );
hgs
parents:
diff changeset
  4046
    TEST_ASSERT_DESC( ( err == KErrInUse ), "Play streaming sample (haptics reserved), wrong error code" );
hgs
parents:
diff changeset
  4047
hgs
parents:
diff changeset
  4048
hgs
parents:
diff changeset
  4049
hgs
parents:
diff changeset
  4050
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
  4051
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  4052
    CleanupStack::PopAndDestroy(); //tooBigStreamSample
hgs
parents:
diff changeset
  4053
    CleanupStack::PopAndDestroy(); //validStreamSample
hgs
parents:
diff changeset
  4054
    return KErrNone;
hgs
parents:
diff changeset
  4055
    }
hgs
parents:
diff changeset
  4056
hgs
parents:
diff changeset
  4057
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4058
// Plays streaming sample using asynchronous API call.
hgs
parents:
diff changeset
  4059
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4060
//  
hgs
parents:
diff changeset
  4061
TInt CHapticsClientTest::T_PlayStreamingSampleAsync()
hgs
parents:
diff changeset
  4062
    {
hgs
parents:
diff changeset
  4063
    // open actuator.. 
hgs
parents:
diff changeset
  4064
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  4065
    RBuf8 validStreamSample;
hgs
parents:
diff changeset
  4066
    RBuf8 tooBigStreamSample;
hgs
parents:
diff changeset
  4067
    CleanupClosePushL( validStreamSample );
hgs
parents:
diff changeset
  4068
    CleanupClosePushL( tooBigStreamSample );
hgs
parents:
diff changeset
  4069
    
hgs
parents:
diff changeset
  4070
    TInt maxValidSize = iHaptics->MaxStreamingSampleSize();
hgs
parents:
diff changeset
  4071
    CreateDummyStreamSample( maxValidSize, validStreamSample );
hgs
parents:
diff changeset
  4072
hgs
parents:
diff changeset
  4073
    // normal sample 0 handle 0 offset
hgs
parents:
diff changeset
  4074
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
  4075
    iHaptics->PlayStreamingSample( 0, validStreamSample, status );
hgs
parents:
diff changeset
  4076
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  4077
    TEST_ASSERT_DESC( (status.Int() == KErrNone ), "Play streaming sample failed!" );
hgs
parents:
diff changeset
  4078
hgs
parents:
diff changeset
  4079
    // normal sample MIN handle MIN offset
hgs
parents:
diff changeset
  4080
    status = KRequestPending;
hgs
parents:
diff changeset
  4081
    iHaptics->PlayStreamingSample( INT_MIN, validStreamSample, status );
hgs
parents:
diff changeset
  4082
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  4083
    TEST_ASSERT_DESC( (status.Int() == KErrNone ), "Play streaming sample failed!" );
hgs
parents:
diff changeset
  4084
hgs
parents:
diff changeset
  4085
    // normal sample MAX handle MAX offset
hgs
parents:
diff changeset
  4086
    status = KRequestPending;
hgs
parents:
diff changeset
  4087
    iHaptics->PlayStreamingSample( INT_MAX, validStreamSample, status );
hgs
parents:
diff changeset
  4088
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  4089
    TEST_ASSERT_DESC( (status.Int() == KErrNone ), "Play streaming sample failed!" );
hgs
parents:
diff changeset
  4090
    
hgs
parents:
diff changeset
  4091
    // over sized sample
hgs
parents:
diff changeset
  4092
    CreateDummyStreamSample( maxValidSize+1, tooBigStreamSample );
hgs
parents:
diff changeset
  4093
    status = KRequestPending;
hgs
parents:
diff changeset
  4094
    iHaptics->PlayStreamingSample( INT_MAX, tooBigStreamSample, status );
hgs
parents:
diff changeset
  4095
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  4096
    TEST_ASSERT_DESC( (status.Int() == KErrArgument ), "Play streaming sample (over sized sample), wrong error code" );
hgs
parents:
diff changeset
  4097
hgs
parents:
diff changeset
  4098
    // Haptics reserved for higher priority client
hgs
parents:
diff changeset
  4099
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  4100
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  4101
hgs
parents:
diff changeset
  4102
    TRAPD( error, haptics2->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  4103
hgs
parents:
diff changeset
  4104
    // set new client priority to maximum
hgs
parents:
diff changeset
  4105
    haptics2->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  4106
                                 KHWRMHapticsMaxDevicePriority );
hgs
parents:
diff changeset
  4107
    // set default client priority to min
hgs
parents:
diff changeset
  4108
    iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  4109
                                 KHWRMHapticsMinDevicePriority );
hgs
parents:
diff changeset
  4110
    TRAP( error, haptics2->ReserveHapticsL() );
hgs
parents:
diff changeset
  4111
hgs
parents:
diff changeset
  4112
    status = KRequestPending;
hgs
parents:
diff changeset
  4113
    iHaptics->PlayStreamingSample( INT_MIN, validStreamSample, status );
hgs
parents:
diff changeset
  4114
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  4115
    TEST_ASSERT_DESC( (status.Int() == KErrInUse ), "Play streaming sample (haptics reserved), wrong error code" );
hgs
parents:
diff changeset
  4116
hgs
parents:
diff changeset
  4117
hgs
parents:
diff changeset
  4118
hgs
parents:
diff changeset
  4119
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
  4120
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  4121
    CleanupStack::PopAndDestroy(); //tooBigStreamSample
hgs
parents:
diff changeset
  4122
    CleanupStack::PopAndDestroy(); //validStreamSample
hgs
parents:
diff changeset
  4123
    return KErrNone;
hgs
parents:
diff changeset
  4124
    }
hgs
parents:
diff changeset
  4125
hgs
parents:
diff changeset
  4126
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4127
// Plays streaming sample with offset using
hgs
parents:
diff changeset
  4128
// synchronous API call.
hgs
parents:
diff changeset
  4129
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4130
//  
hgs
parents:
diff changeset
  4131
TInt CHapticsClientTest::T_PlayStreamingSampleWithOffset()
hgs
parents:
diff changeset
  4132
    {
hgs
parents:
diff changeset
  4133
    // open actuator.. 
hgs
parents:
diff changeset
  4134
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  4135
    RBuf8 validStreamSample;
hgs
parents:
diff changeset
  4136
    RBuf8 tooBigStreamSample;
hgs
parents:
diff changeset
  4137
    CleanupClosePushL( validStreamSample );
hgs
parents:
diff changeset
  4138
    CleanupClosePushL( tooBigStreamSample );
hgs
parents:
diff changeset
  4139
    
hgs
parents:
diff changeset
  4140
    TInt maxValidSize = iHaptics->MaxStreamingSampleSize();
hgs
parents:
diff changeset
  4141
    CreateDummyStreamSample( maxValidSize, validStreamSample );
hgs
parents:
diff changeset
  4142
hgs
parents:
diff changeset
  4143
    // valid sized sample 0 handle 0 offset
hgs
parents:
diff changeset
  4144
    TInt err = iHaptics->PlayStreamingSampleWithOffset( 0, validStreamSample, 0 );
hgs
parents:
diff changeset
  4145
    TEST_ASSERT_DESC( (err == KErrNone), "Play streaming sample with offset failed!" );
hgs
parents:
diff changeset
  4146
hgs
parents:
diff changeset
  4147
    // normal sample MIN handle MIN offset
hgs
parents:
diff changeset
  4148
    err = iHaptics->PlayStreamingSampleWithOffset( INT_MIN, validStreamSample, INT_MIN );
hgs
parents:
diff changeset
  4149
    TEST_ASSERT_DESC( (err == KErrNone), "Play streaming sample with offset failed!" );
hgs
parents:
diff changeset
  4150
hgs
parents:
diff changeset
  4151
    // normal sample MAX handle MAX offset
hgs
parents:
diff changeset
  4152
    err = iHaptics->PlayStreamingSampleWithOffset( INT_MAX, validStreamSample, INT_MAX );
hgs
parents:
diff changeset
  4153
    TEST_ASSERT_DESC( (err == KErrNone), "Play streaming sample with offset failed!" );
hgs
parents:
diff changeset
  4154
    
hgs
parents:
diff changeset
  4155
    // over sized sample
hgs
parents:
diff changeset
  4156
    CreateDummyStreamSample( maxValidSize+1, tooBigStreamSample );
hgs
parents:
diff changeset
  4157
    err = iHaptics->PlayStreamingSampleWithOffset( INT_MAX, tooBigStreamSample, INT_MAX );
hgs
parents:
diff changeset
  4158
    TEST_ASSERT_DESC( (err == KErrArgument), "Play streaming sample with offset (over sized sample), wrong error code" );
hgs
parents:
diff changeset
  4159
hgs
parents:
diff changeset
  4160
    // Haptics reserved for higher priority client
hgs
parents:
diff changeset
  4161
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  4162
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  4163
hgs
parents:
diff changeset
  4164
    TRAPD( error, haptics2->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  4165
hgs
parents:
diff changeset
  4166
    // set new client priority to maximum
hgs
parents:
diff changeset
  4167
    haptics2->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  4168
                                 KHWRMHapticsMaxDevicePriority );
hgs
parents:
diff changeset
  4169
    // set default client priority to min
hgs
parents:
diff changeset
  4170
    iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  4171
                                 KHWRMHapticsMinDevicePriority );
hgs
parents:
diff changeset
  4172
    TRAP( error, haptics2->ReserveHapticsL() );
hgs
parents:
diff changeset
  4173
hgs
parents:
diff changeset
  4174
    err = iHaptics->PlayStreamingSample( INT_MIN, validStreamSample );
hgs
parents:
diff changeset
  4175
    TEST_ASSERT_DESC( ( err == KErrInUse ), "Play streaming sample (haptics reserved), wrong error code" );
hgs
parents:
diff changeset
  4176
hgs
parents:
diff changeset
  4177
hgs
parents:
diff changeset
  4178
hgs
parents:
diff changeset
  4179
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
  4180
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  4181
    CleanupStack::PopAndDestroy(); //tooBigStreamSample
hgs
parents:
diff changeset
  4182
    CleanupStack::PopAndDestroy(); //validStreamSample
hgs
parents:
diff changeset
  4183
    return KErrNone;
hgs
parents:
diff changeset
  4184
    }
hgs
parents:
diff changeset
  4185
hgs
parents:
diff changeset
  4186
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4187
// Plays streaming sample with offset using
hgs
parents:
diff changeset
  4188
// asynchronous API call.
hgs
parents:
diff changeset
  4189
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4190
//  
hgs
parents:
diff changeset
  4191
TInt CHapticsClientTest::T_PlayStreamingSampleWithOffsetAsync()
hgs
parents:
diff changeset
  4192
    {
hgs
parents:
diff changeset
  4193
    // open actuator.. 
hgs
parents:
diff changeset
  4194
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  4195
    RBuf8 validStreamSample;
hgs
parents:
diff changeset
  4196
    RBuf8 tooBigStreamSample;
hgs
parents:
diff changeset
  4197
    CleanupClosePushL( validStreamSample );
hgs
parents:
diff changeset
  4198
    CleanupClosePushL( tooBigStreamSample );
hgs
parents:
diff changeset
  4199
    
hgs
parents:
diff changeset
  4200
    TInt maxValidSize = iHaptics->MaxStreamingSampleSize();
hgs
parents:
diff changeset
  4201
    CreateDummyStreamSample( maxValidSize, validStreamSample );
hgs
parents:
diff changeset
  4202
hgs
parents:
diff changeset
  4203
    // normal sample 0 handle 0 offset
hgs
parents:
diff changeset
  4204
    TRequestStatus status = KRequestPending;
hgs
parents:
diff changeset
  4205
    iHaptics->PlayStreamingSampleWithOffset( 0, validStreamSample, 0, status );
hgs
parents:
diff changeset
  4206
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  4207
    TEST_ASSERT_DESC( (status.Int() == KErrNone ), "Play streaming sample with offset failed!" );
hgs
parents:
diff changeset
  4208
hgs
parents:
diff changeset
  4209
    // normal sample MIN handle MIN offset
hgs
parents:
diff changeset
  4210
    status = KRequestPending;
hgs
parents:
diff changeset
  4211
    iHaptics->PlayStreamingSampleWithOffset( INT_MIN, validStreamSample, INT_MIN, status );
hgs
parents:
diff changeset
  4212
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  4213
    TEST_ASSERT_DESC( (status.Int() == KErrNone ), "Play streaming sample with offset failed!" );
hgs
parents:
diff changeset
  4214
hgs
parents:
diff changeset
  4215
    // normal sample MAX handle MAX offset
hgs
parents:
diff changeset
  4216
    status = KRequestPending;
hgs
parents:
diff changeset
  4217
    iHaptics->PlayStreamingSampleWithOffset( INT_MAX, validStreamSample, INT_MAX, status );
hgs
parents:
diff changeset
  4218
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  4219
    TEST_ASSERT_DESC( (status.Int() == KErrNone ), "Play streaming sample with offset failed!" );
hgs
parents:
diff changeset
  4220
    
hgs
parents:
diff changeset
  4221
    // over sized sample
hgs
parents:
diff changeset
  4222
    CreateDummyStreamSample( maxValidSize+1, tooBigStreamSample );
hgs
parents:
diff changeset
  4223
    status = KRequestPending;
hgs
parents:
diff changeset
  4224
    iHaptics->PlayStreamingSampleWithOffset( INT_MAX, tooBigStreamSample, INT_MAX, status );
hgs
parents:
diff changeset
  4225
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  4226
    TEST_ASSERT_DESC( (status.Int() == KErrArgument ), "Play streaming sample with offset (over sized sample), wrong error code" );
hgs
parents:
diff changeset
  4227
hgs
parents:
diff changeset
  4228
    // Haptics reserved for higher priority client
hgs
parents:
diff changeset
  4229
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, NULL );
hgs
parents:
diff changeset
  4230
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  4231
hgs
parents:
diff changeset
  4232
    TRAPD( error, haptics2->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  4233
hgs
parents:
diff changeset
  4234
    // set new client priority to maximum
hgs
parents:
diff changeset
  4235
    haptics2->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  4236
                                 KHWRMHapticsMaxDevicePriority );
hgs
parents:
diff changeset
  4237
    // set default client priority to min
hgs
parents:
diff changeset
  4238
    iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsPriority, 
hgs
parents:
diff changeset
  4239
                                 KHWRMHapticsMinDevicePriority );
hgs
parents:
diff changeset
  4240
    TRAP( error, haptics2->ReserveHapticsL() );
hgs
parents:
diff changeset
  4241
hgs
parents:
diff changeset
  4242
    status = KRequestPending;
hgs
parents:
diff changeset
  4243
    iHaptics->PlayStreamingSample( INT_MIN, validStreamSample, status );
hgs
parents:
diff changeset
  4244
    User::WaitForRequest( status );
hgs
parents:
diff changeset
  4245
    TEST_ASSERT_DESC( (status.Int() == KErrInUse ), "Play streaming sample with offset (haptics reserved), wrong error code" );
hgs
parents:
diff changeset
  4246
hgs
parents:
diff changeset
  4247
hgs
parents:
diff changeset
  4248
hgs
parents:
diff changeset
  4249
    // clean up.. (Teardown will complete these)
hgs
parents:
diff changeset
  4250
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  4251
    CleanupStack::PopAndDestroy(); //tooBigStreamSample
hgs
parents:
diff changeset
  4252
    CleanupStack::PopAndDestroy(); //validStreamSample
hgs
parents:
diff changeset
  4253
    return KErrNone;
hgs
parents:
diff changeset
  4254
    }
hgs
parents:
diff changeset
  4255
hgs
parents:
diff changeset
  4256
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4257
// Destroys streaming effect.
hgs
parents:
diff changeset
  4258
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4259
//  
hgs
parents:
diff changeset
  4260
TInt CHapticsClientTest::T_DestroyStreamingEffect()
hgs
parents:
diff changeset
  4261
    {
hgs
parents:
diff changeset
  4262
    // open actuator.. 
hgs
parents:
diff changeset
  4263
    T_OpenSupportedActuator();
hgs
parents:
diff changeset
  4264
    
hgs
parents:
diff changeset
  4265
    // zero handle
hgs
parents:
diff changeset
  4266
    TInt err = iHaptics->DestroyStreamingEffect( 0 );
hgs
parents:
diff changeset
  4267
    TEST_ASSERT_DESC( (err == KErrNone), "Destroying streaming effect with handle 0 failed!" );
hgs
parents:
diff changeset
  4268
hgs
parents:
diff changeset
  4269
    // minimum handle value
hgs
parents:
diff changeset
  4270
    err = iHaptics->DestroyStreamingEffect( INT_MIN );
hgs
parents:
diff changeset
  4271
    TEST_ASSERT_DESC( (err == KErrNone), "Destroying streaming effect with handle INT_MIN failed!" );
hgs
parents:
diff changeset
  4272
hgs
parents:
diff changeset
  4273
    // maximum handle value
hgs
parents:
diff changeset
  4274
    err = iHaptics->DestroyStreamingEffect( INT_MAX );
hgs
parents:
diff changeset
  4275
    TEST_ASSERT_DESC( (err == KErrNone), "Destroying streaming effect with handle INT_MAX failed!" );
hgs
parents:
diff changeset
  4276
    return err;
hgs
parents:
diff changeset
  4277
    }
hgs
parents:
diff changeset
  4278
hgs
parents:
diff changeset
  4279
hgs
parents:
diff changeset
  4280
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4281
// Fetches actuator state using the observer.
hgs
parents:
diff changeset
  4282
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4283
//
hgs
parents:
diff changeset
  4284
TInt CHapticsClientTest::T_ObserveActuatorStatus()
hgs
parents:
diff changeset
  4285
    {
hgs
parents:
diff changeset
  4286
    // Create 2 actuator status observer instances
hgs
parents:
diff changeset
  4287
    TActuatorStatusCallback callback1( this );
hgs
parents:
diff changeset
  4288
    TActuatorStatusCallback callback2( this );
hgs
parents:
diff changeset
  4289
    
hgs
parents:
diff changeset
  4290
    // create 1st haptics client with actuator observer
hgs
parents:
diff changeset
  4291
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( NULL, &callback1 );
hgs
parents:
diff changeset
  4292
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  4293
hgs
parents:
diff changeset
  4294
    //Open actuator
hgs
parents:
diff changeset
  4295
    TRAPD( err, haptics1->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  4296
    TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type Any failed!" );
hgs
parents:
diff changeset
  4297
hgs
parents:
diff changeset
  4298
    // wait for the callback to be called
hgs
parents:
diff changeset
  4299
    iWait.Start();
hgs
parents:
diff changeset
  4300
hgs
parents:
diff changeset
  4301
    // check actuator state (since execution of this method continues, the state
hgs
parents:
diff changeset
  4302
    // has been updated in the callback)
hgs
parents:
diff changeset
  4303
    TEST_ASSERT_DESC( (callback1.Status(EHWRMLogicalActuatorAny) == MHWRMHapticsActuatorObserver::EHWRMActuatorEnabled),
hgs
parents:
diff changeset
  4304
                       "Invalid actuator state received!" );
hgs
parents:
diff changeset
  4305
hgs
parents:
diff changeset
  4306
    // create 2nd haptics client with actuator observer
hgs
parents:
diff changeset
  4307
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( NULL, &callback2 );
hgs
parents:
diff changeset
  4308
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  4309
    
hgs
parents:
diff changeset
  4310
    //Open actuator
hgs
parents:
diff changeset
  4311
    TRAP( err, haptics2->OpenActuatorL( EHWRMLogicalActuatorDevice ) );
hgs
parents:
diff changeset
  4312
    TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type Device failed!" );
hgs
parents:
diff changeset
  4313
hgs
parents:
diff changeset
  4314
    // wait for the callback to be called
hgs
parents:
diff changeset
  4315
    iWait.Start();
hgs
parents:
diff changeset
  4316
hgs
parents:
diff changeset
  4317
    // check actuator state (since execution of this method continues, the state
hgs
parents:
diff changeset
  4318
    // has been updated in the callback)
hgs
parents:
diff changeset
  4319
    TEST_ASSERT_DESC( (callback2.Status(EHWRMLogicalActuatorDevice) == MHWRMHapticsActuatorObserver::EHWRMActuatorEnabled),
hgs
parents:
diff changeset
  4320
                       "Invalid actuator state received!" );
hgs
parents:
diff changeset
  4321
hgs
parents:
diff changeset
  4322
hgs
parents:
diff changeset
  4323
    // cleanup
hgs
parents:
diff changeset
  4324
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  4325
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  4326
    return KErrNone;
hgs
parents:
diff changeset
  4327
    }
hgs
parents:
diff changeset
  4328
hgs
parents:
diff changeset
  4329
hgs
parents:
diff changeset
  4330
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4331
// 
hgs
parents:
diff changeset
  4332
// ---------------------------------------------------------
hgs
parents:
diff changeset
  4333
//
hgs
parents:
diff changeset
  4334
TInt CHapticsClientTest::T_ObserveActuatorStatusAndHapticsStatus()
hgs
parents:
diff changeset
  4335
    {
hgs
parents:
diff changeset
  4336
    //  Create 3 actuator status observers.
hgs
parents:
diff changeset
  4337
    TActuatorStatusCallback actuatorCallback1( this );
hgs
parents:
diff changeset
  4338
    TActuatorStatusCallback actuatorCallback2( this );
hgs
parents:
diff changeset
  4339
    TActuatorStatusCallback actuatorCallback3( this );
hgs
parents:
diff changeset
  4340
hgs
parents:
diff changeset
  4341
    // Create 3 haptics status observers.
hgs
parents:
diff changeset
  4342
    THapticsStatusCallback hapticsCallback1( this );
hgs
parents:
diff changeset
  4343
    THapticsStatusCallback hapticsCallback2( this );
hgs
parents:
diff changeset
  4344
    THapticsStatusCallback hapticsCallback3( this );
hgs
parents:
diff changeset
  4345
    
hgs
parents:
diff changeset
  4346
    // create 1st haptics client with observers
hgs
parents:
diff changeset
  4347
    CHWRMHaptics* haptics1 = CHWRMHaptics::NewL( &hapticsCallback1, &actuatorCallback1 );
hgs
parents:
diff changeset
  4348
    CleanupStack::PushL( haptics1 );
hgs
parents:
diff changeset
  4349
hgs
parents:
diff changeset
  4350
    //Open actuator
hgs
parents:
diff changeset
  4351
    TRAPD( err, haptics1->OpenActuatorL( EHWRMLogicalActuatorDevice ) );
hgs
parents:
diff changeset
  4352
    TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type Device failed!" );
hgs
parents:
diff changeset
  4353
hgs
parents:
diff changeset
  4354
    // wait for the haptics status callback to be called
hgs
parents:
diff changeset
  4355
    iWait.Start();
hgs
parents:
diff changeset
  4356
    // wait for the actuator status callback to be called
hgs
parents:
diff changeset
  4357
    iWait.Start();
hgs
parents:
diff changeset
  4358
hgs
parents:
diff changeset
  4359
    // check actuator status (since execution of this method continues, the status
hgs
parents:
diff changeset
  4360
    // has been updated in the callback)
hgs
parents:
diff changeset
  4361
    TEST_ASSERT_DESC( (actuatorCallback1.Status(EHWRMLogicalActuatorDevice) == MHWRMHapticsActuatorObserver::EHWRMActuatorEnabled),
hgs
parents:
diff changeset
  4362
                       "Invalid actuator status received!" );
hgs
parents:
diff changeset
  4363
    // check haptics status
hgs
parents:
diff changeset
  4364
    TEST_ASSERT_DESC( ( hapticsCallback1.Status() == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  4365
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  4366
hgs
parents:
diff changeset
  4367
    haptics1->ReserveHapticsL();
hgs
parents:
diff changeset
  4368
hgs
parents:
diff changeset
  4369
hgs
parents:
diff changeset
  4370
    // create 2nd and 3rd haptics clients with observers
hgs
parents:
diff changeset
  4371
    CHWRMHaptics* haptics2 = CHWRMHaptics::NewL( &hapticsCallback2, &actuatorCallback2 );
hgs
parents:
diff changeset
  4372
    CleanupStack::PushL( haptics2 );
hgs
parents:
diff changeset
  4373
    CHWRMHaptics* haptics3 = CHWRMHaptics::NewL( &hapticsCallback3, &actuatorCallback3 );
hgs
parents:
diff changeset
  4374
    CleanupStack::PushL( haptics3 );
hgs
parents:
diff changeset
  4375
hgs
parents:
diff changeset
  4376
    // reserve haptics for 2nd client
hgs
parents:
diff changeset
  4377
    haptics2->ReserveHapticsL();
hgs
parents:
diff changeset
  4378
hgs
parents:
diff changeset
  4379
    //Open actuator
hgs
parents:
diff changeset
  4380
    TRAP( err, haptics2->OpenActuatorL( EHWRMLogicalActuatorAny ) );
hgs
parents:
diff changeset
  4381
    TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type Any failed!" );
hgs
parents:
diff changeset
  4382
hgs
parents:
diff changeset
  4383
    TRAP( err, haptics3->OpenActuatorL( EHWRMLogicalActuatorDevice ) );
hgs
parents:
diff changeset
  4384
    TEST_ASSERT_DESC( (err == KErrNone), "Opening actuator with type Device failed!" );
hgs
parents:
diff changeset
  4385
hgs
parents:
diff changeset
  4386
    // wait for the haptics status callback to be called
hgs
parents:
diff changeset
  4387
    iWait.Start();
hgs
parents:
diff changeset
  4388
    iWait.Start();
hgs
parents:
diff changeset
  4389
    iWait.Start();
hgs
parents:
diff changeset
  4390
    // wait for the actuator status callback to be called
hgs
parents:
diff changeset
  4391
    iWait.Start();
hgs
parents:
diff changeset
  4392
    iWait.Start();
hgs
parents:
diff changeset
  4393
hgs
parents:
diff changeset
  4394
    // check haptics status (since execution of this method continues, the status
hgs
parents:
diff changeset
  4395
    // has been updated in the callback)
hgs
parents:
diff changeset
  4396
    TEST_ASSERT_DESC( ( hapticsCallback2.Status() == MHWRMHapticsObserver::EHWRMHapticsStatusSuspended ), 
hgs
parents:
diff changeset
  4397
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  4398
    TEST_ASSERT_DESC( ( hapticsCallback3.Status() == MHWRMHapticsObserver::EHWRMHapticsStatusReserved ), 
hgs
parents:
diff changeset
  4399
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  4400
    // check actuator status
hgs
parents:
diff changeset
  4401
    TEST_ASSERT_DESC( (actuatorCallback2.Status(EHWRMLogicalActuatorAny) == MHWRMHapticsActuatorObserver::EHWRMActuatorEnabled),
hgs
parents:
diff changeset
  4402
                       "Invalid actuator status received!" );
hgs
parents:
diff changeset
  4403
    TEST_ASSERT_DESC( (actuatorCallback3.Status(EHWRMLogicalActuatorDevice) == MHWRMHapticsActuatorObserver::EHWRMActuatorEnabled),
hgs
parents:
diff changeset
  4404
                       "Invalid actuator status received!" );
hgs
parents:
diff changeset
  4405
hgs
parents:
diff changeset
  4406
    // release haptics
hgs
parents:
diff changeset
  4407
    haptics1->ReleaseHaptics();
hgs
parents:
diff changeset
  4408
hgs
parents:
diff changeset
  4409
    // wait for the haptics status callback to be called    
hgs
parents:
diff changeset
  4410
    iWait.Start();
hgs
parents:
diff changeset
  4411
    iWait.Start();
hgs
parents:
diff changeset
  4412
hgs
parents:
diff changeset
  4413
    TEST_ASSERT_DESC( ( hapticsCallback1.Status() == MHWRMHapticsObserver::EHWRMHapticsStatusReserved ), 
hgs
parents:
diff changeset
  4414
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  4415
    TEST_ASSERT_DESC( ( hapticsCallback2.Status() == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  4416
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  4417
hgs
parents:
diff changeset
  4418
hgs
parents:
diff changeset
  4419
    // release haptics
hgs
parents:
diff changeset
  4420
    haptics2->ReleaseHaptics();
hgs
parents:
diff changeset
  4421
hgs
parents:
diff changeset
  4422
    // wait for the haptics status callback to be called    
hgs
parents:
diff changeset
  4423
    iWait.Start();
hgs
parents:
diff changeset
  4424
    iWait.Start();
hgs
parents:
diff changeset
  4425
hgs
parents:
diff changeset
  4426
    TEST_ASSERT_DESC( ( hapticsCallback1.Status() == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  4427
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  4428
    TEST_ASSERT_DESC( ( hapticsCallback3.Status() == MHWRMHapticsObserver::EHWRMHapticsStatusAvailable ), 
hgs
parents:
diff changeset
  4429
                       "Invalid haptics status received!" );
hgs
parents:
diff changeset
  4430
hgs
parents:
diff changeset
  4431
    // cleanup
hgs
parents:
diff changeset
  4432
    CleanupStack::PopAndDestroy( haptics3 );
hgs
parents:
diff changeset
  4433
    CleanupStack::PopAndDestroy( haptics2 );
hgs
parents:
diff changeset
  4434
    CleanupStack::PopAndDestroy( haptics1 );
hgs
parents:
diff changeset
  4435
    return KErrNone;
hgs
parents:
diff changeset
  4436
    }