photosgallery/viewframework/medialists/tsrc/t_glxfromfocusoutwarditerator/t_glxfromfocusoutwarditerator.cpp
changeset 0 4e91876724a2
child 18 bcb43dc84c44
equal deleted inserted replaced
-1:000000000000 0:4e91876724a2
       
     1 /*
       
     2 * Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:    TGlxFromFocusOutwardIterator unit tests
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 #include <digia/eunit/eunitmacros.h>
       
    22 
       
    23 #include "t_glxfromfocusoutwarditerator.h"
       
    24 
       
    25 // ----------------------------------------------------------------------------
       
    26 // NewL
       
    27 // ----------------------------------------------------------------------------
       
    28 //
       
    29 T_CGlxFromFocusOutwardIterator* T_CGlxFromFocusOutwardIterator::NewL()
       
    30     {
       
    31     T_CGlxFromFocusOutwardIterator* self = T_CGlxFromFocusOutwardIterator::NewLC();
       
    32     CleanupStack::Pop();
       
    33     return self;
       
    34     }
       
    35 
       
    36 // ----------------------------------------------------------------------------
       
    37 // NewLC
       
    38 // ----------------------------------------------------------------------------
       
    39 //
       
    40 T_CGlxFromFocusOutwardIterator* T_CGlxFromFocusOutwardIterator::NewLC()
       
    41     {
       
    42     T_CGlxFromFocusOutwardIterator* self = new( ELeave ) T_CGlxFromFocusOutwardIterator();
       
    43     CleanupStack::PushL( self );
       
    44     self->ConstructL();
       
    45     return self;
       
    46     }
       
    47 
       
    48 // ----------------------------------------------------------------------------
       
    49 // Destructor
       
    50 // ----------------------------------------------------------------------------
       
    51 //
       
    52 T_CGlxFromFocusOutwardIterator::~T_CGlxFromFocusOutwardIterator()
       
    53     {
       
    54     }
       
    55 
       
    56 // ----------------------------------------------------------------------------
       
    57 // Constructor
       
    58 // ----------------------------------------------------------------------------
       
    59 //
       
    60 T_CGlxFromFocusOutwardIterator::T_CGlxFromFocusOutwardIterator()
       
    61     {
       
    62     }
       
    63 
       
    64 // ----------------------------------------------------------------------------
       
    65 // Constructor
       
    66 // ----------------------------------------------------------------------------
       
    67 //
       
    68 void T_CGlxFromFocusOutwardIterator::ConstructL()
       
    69     {
       
    70     // The ConstructL from the base class CEUnitTestSuiteClass must be called.
       
    71     // It generates the test case table.
       
    72     CEUnitTestSuiteClass::ConstructL();
       
    73     }
       
    74 
       
    75 // ----------------------------------------------------------------------------
       
    76 // Setup
       
    77 // ----------------------------------------------------------------------------
       
    78 //
       
    79 void T_CGlxFromFocusOutwardIterator::SetupL(  )
       
    80     {
       
    81     iOrder = &iFocusOrder;
       
    82     iList.iCount = 0;
       
    83     iList.iFocusIndex = -1;
       
    84     iOrder->SetToFirst(&iList);
       
    85     iFocusOrder.SetRangeOffsets(0, 0);
       
    86     }
       
    87 
       
    88 // ----------------------------------------------------------------------------
       
    89 // Teardown
       
    90 // ----------------------------------------------------------------------------
       
    91 //
       
    92 void T_CGlxFromFocusOutwardIterator::Teardown(  )
       
    93     {
       
    94     } 
       
    95 
       
    96 // ----------------------------------------------------------------------------
       
    97 // UT_TestEmptyL
       
    98 // ----------------------------------------------------------------------------
       
    99 //
       
   100 void T_CGlxFromFocusOutwardIterator::UT_TestEmptyL(  )
       
   101     {
       
   102     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 0 && iFocusOrder.iFrontOffset == 0 && 
       
   103     	iFocusOrder.iRearOffset == 0 && iFocusOrder.iList == &iList);
       
   104 	TInt index;
       
   105 
       
   106 	// Test with empty list
       
   107 	index = (*iOrder)++;
       
   108     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 0 && index == KErrNotFound);
       
   109     EUNIT_ASSERT(iFocusOrder.iFrontOffset == 0 && iFocusOrder.iRearOffset == 0 && iFocusOrder.iList == &iList);
       
   110 	index = (*iOrder)++;
       
   111     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 0 && index == KErrNotFound);
       
   112     
       
   113 	// Test with a range
       
   114     iOrder->SetToFirst(&iList); // (Does nothing)
       
   115     iFocusOrder.SetRangeOffsets(1, 1);
       
   116 	index = (*iOrder)++;
       
   117     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 0 && index == KErrNotFound);
       
   118     EUNIT_ASSERT(iFocusOrder.iFrontOffset == 1 && iFocusOrder.iRearOffset == 1 && iFocusOrder.iList == &iList);
       
   119 	index = (*iOrder)++;
       
   120     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 0 && index == KErrNotFound);    
       
   121     
       
   122 	// Test with a range
       
   123     iOrder->SetToFirst(&iList); // (Does nothing)
       
   124     iFocusOrder.SetRangeOffsets(4, 0);
       
   125 	index = (*iOrder)++;
       
   126     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 0 && index == KErrNotFound);
       
   127     EUNIT_ASSERT(iFocusOrder.iFrontOffset == 0 && iFocusOrder.iRearOffset == 4 && iFocusOrder.iList == &iList);
       
   128 	index = (*iOrder)++;
       
   129     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 0 && index == KErrNotFound);    
       
   130     
       
   131 	// Test with a range
       
   132     iOrder->SetToFirst(&iList); // (Does nothing)
       
   133     iFocusOrder.SetRangeOffsets(0, 5);
       
   134 	index = (*iOrder)++;
       
   135     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 0 && index == KErrNotFound);
       
   136     EUNIT_ASSERT(iFocusOrder.iFrontOffset == 5 && iFocusOrder.iRearOffset == 0 && iFocusOrder.iList == &iList);
       
   137 	index = (*iOrder)++;
       
   138     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 0 && index == KErrNotFound);    
       
   139     }
       
   140 
       
   141 // ----------------------------------------------------------------------------
       
   142 // UT_TestSymmetricRangeL
       
   143 // ----------------------------------------------------------------------------
       
   144 //
       
   145 void T_CGlxFromFocusOutwardIterator::UT_TestSymmetricRangeL(  )
       
   146 	{
       
   147     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 0 && iFocusOrder.iFrontOffset == 0 && 
       
   148     	iFocusOrder.iRearOffset == 0 && iFocusOrder.iList == &iList);
       
   149 	TInt index;
       
   150 
       
   151 	// Test with a list with 1 item, no range
       
   152     iList.iCount = 1; 
       
   153     iList.iFocusIndex = 0;
       
   154 	index = (*iOrder)++;
       
   155     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 1 && index == 0);
       
   156     EUNIT_ASSERT(iFocusOrder.iFrontOffset == 0 && iFocusOrder.iRearOffset == 0 && iFocusOrder.iList == &iList);
       
   157 	index = (*iOrder)++;
       
   158     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 1 && index == KErrNotFound);
       
   159     EUNIT_ASSERT(iFocusOrder.iFrontOffset == 0 && iFocusOrder.iRearOffset == 0 && iFocusOrder.iList == &iList);
       
   160     
       
   161 	// Test with a list with 2 items, no range
       
   162     iOrder->SetToFirst(&iList); 
       
   163     iList.iCount = 2;
       
   164     iList.iFocusIndex = 0; 
       
   165 	index = (*iOrder)++;
       
   166     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 1 && index == 0);
       
   167 	index = (*iOrder)++;
       
   168     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 1 && index == KErrNotFound);
       
   169  	index = (*iOrder)++;
       
   170     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 1 && index == KErrNotFound);
       
   171 
       
   172 	// Focus to 1   
       
   173     iOrder->SetToFirst(&iList); 
       
   174     iList.iFocusIndex = 1;
       
   175 	index = (*iOrder)++;
       
   176     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 1 && index == 1);
       
   177 	index = (*iOrder)++;
       
   178     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 1 && index == KErrNotFound);
       
   179  	index = (*iOrder)++;
       
   180     EUNIT_ASSERT(iFocusOrder.iCurrentItem == 1 && index == KErrNotFound);
       
   181 
       
   182 	//////////////////////////////////////////////////////////////
       
   183 	// Test with a list with 2 items, 1-1 range
       
   184     // indexes: 01
       
   185     // focus:   F
       
   186     // order:   01
       
   187 	TestSingleRange(2, 0, 1, 1, "01ee"); // count, focus, rear, front, result
       
   188     // indexes: 01
       
   189     // focus:    F
       
   190     // order:   10
       
   191 	TestSingleRange(2, 1, 1, 1, "10ee"); // count, focus, rear, front, result
       
   192     
       
   193 	//////////////////////////////////////////////////////////////
       
   194     // Test with a list with 3 items, 1-1 range
       
   195     // indexes: 012
       
   196     // focus:   F
       
   197     // order:   012
       
   198 	TestSingleRange(3, 0, 1, 1, "012ee"); // count, focus, rear, front, result
       
   199     // indexes: 012
       
   200     // focus:    F
       
   201     // order:   201
       
   202 	TestSingleRange(3, 1, 1, 1, "120ee"); // count, focus, rear, front, result
       
   203     // indexes: 012
       
   204     // focus:     F
       
   205     // order:   201
       
   206 	TestSingleRange(3, 2, 1, 1, "201ee"); // count, focus, rear, front, result
       
   207     
       
   208 	//////////////////////////////////////////////////////////////
       
   209     // Test with a list with 4 items, 1-1 range
       
   210     // indexes: 0123
       
   211     // focus:   F
       
   212     // order:   01 2
       
   213 	TestSingleRange(4, 0, 1, 1, "013ee"); // count, focus, rear, front, result
       
   214     // indexes: 0123
       
   215     // focus:    F
       
   216     // order:   201 
       
   217 	TestSingleRange(4, 1, 1, 1, "120ee"); // count, focus, rear, front, result
       
   218     // indexes: 0123
       
   219     // focus:     F
       
   220     // order:    201 
       
   221 	TestSingleRange(4, 2, 1, 1, "231ee"); // count, focus, rear, front, result
       
   222     // indexes: 0123
       
   223     // focus:      F
       
   224     // order:   1 20
       
   225 	TestSingleRange(4, 3, 1, 1, "302ee"); // count, focus, rear, front, result
       
   226   	}
       
   227   	
       
   228 // ----------------------------------------------------------------------------
       
   229 // UT_TestAsymmetricRangeL
       
   230 // ----------------------------------------------------------------------------
       
   231 //
       
   232 void T_CGlxFromFocusOutwardIterator::UT_TestAsymmetricRangeL(  )
       
   233 	{
       
   234  	// Test with a list with 5 items, 1-2 range
       
   235     // indexes: 01234
       
   236     // focus:   F
       
   237     // order:   013 2
       
   238 	TestSingleRange(5, 0, 1, 2, "0142ee"); // count, focus, rear, front, result
       
   239     // indexes: 01234
       
   240     // focus:    F
       
   241     // order:   2013 
       
   242 	TestSingleRange(5, 1, 1, 2, "1203ee"); // count, focus, rear, front, result
       
   243     // indexes: 01234
       
   244     // focus:     F
       
   245     // order:    2013 
       
   246 	TestSingleRange(5, 2, 1, 2, "2314ee"); // count, focus, rear, front, result
       
   247     // indexes: 01234
       
   248     // focus:      F
       
   249     // order:   3 201
       
   250 	TestSingleRange(5, 3, 1, 2, "3420ee"); // count, focus, rear, front, result
       
   251     // indexes: 01234
       
   252     // focus:       F
       
   253     // order:   13 20
       
   254 	TestSingleRange(5, 4, 1, 2, "4031ee"); // count, focus, rear, front, result
       
   255 
       
   256 	//////////////////////////////////////////////////////////////
       
   257 	// Test with a list with 5 items, 2-1 range
       
   258     // indexes: 01234
       
   259     // focus:   F
       
   260     // order:   01 32 
       
   261 	TestSingleRange(5, 0, 2, 1, "0143ee"); // count, focus, rear, front, result
       
   262     // indexes: 01234
       
   263     // focus:    F
       
   264     // order:   201 3 
       
   265 	TestSingleRange(5, 1, 2, 1, "1204ee"); // count, focus, rear, front, result
       
   266     // indexes: 01234
       
   267     // focus:     F
       
   268     // order:   3201 
       
   269 	TestSingleRange(5, 2, 2, 1, "2310ee"); // count, focus, rear, front, result
       
   270     // indexes: 01234
       
   271     // focus:      F
       
   272     // order:    3201
       
   273 	TestSingleRange(5, 3, 2, 1, "3421ee"); // count, focus, rear, front, result
       
   274     // indexes: 01234
       
   275     // focus:       F
       
   276     // order:   1 320
       
   277 	TestSingleRange(5, 4, 2, 1, "4032ee"); // count, focus, rear, front, result
       
   278 
       
   279 	//////////////////////////////////////////////////////////////
       
   280 	// Test with a list with 6 items, 4-2 range
       
   281     // indexes: 012345
       
   282     // focus:   F
       
   283     // order:   013542
       
   284 	TestSingleRange(6, 0, 4, 2, "015243ee"); // count, focus, rear, front, result
       
   285     // indexes: 012345
       
   286     // focus:    F
       
   287     // order:   201354  
       
   288 	TestSingleRange(6, 1, 4, 2, "120354ee"); // count, focus, rear, front, result
       
   289     // indexes: 012345
       
   290     // focus:     F
       
   291     // order:   420135 
       
   292 	TestSingleRange(6, 2, 4, 2, "231405ee"); // count, focus, rear, front, result
       
   293     // indexes: 012345
       
   294     // focus:      F
       
   295     // order:   542013
       
   296 	TestSingleRange(6, 3, 4, 2, "342510ee"); // count, focus, rear, front, result
       
   297     // indexes: 012345
       
   298     // focus:       F
       
   299     // order:   354201
       
   300 	TestSingleRange(6, 4, 4, 2, "453021ee"); // count, focus, rear, front, result
       
   301     // indexes: 012345
       
   302     // focus:        F
       
   303     // order:   135420
       
   304 	TestSingleRange(6, 5, 4, 2, "504132ee"); // count, focus, rear, front, result
       
   305 
       
   306 	//////////////////////////////////////////////////////////////
       
   307 	// Test with a list with 7 items, 4-2 range
       
   308     // indexes: 0123456
       
   309     // focus:   F
       
   310     // order:   0136542
       
   311 	TestSingleRange(7, 0, 4, 2, "0162543ee"); // count, focus, rear, front, result
       
   312     // indexes: 0123456
       
   313     // focus:    F
       
   314     // order:   2013654 
       
   315 	TestSingleRange(7, 1, 4, 2, "1203654ee"); // count, focus, rear, front, result
       
   316     // indexes: 0123456 
       
   317     // focus:     F
       
   318     // order:   4201365
       
   319 	TestSingleRange(7, 2, 4, 2, "2314065ee"); // count, focus, rear, front, result
       
   320     // indexes: 0123456
       
   321     // focus:      F
       
   322     // order:   5420136
       
   323 	TestSingleRange(7, 3, 4, 2, "3425106ee"); // count, focus, rear, front, result
       
   324     // indexes: 0123456
       
   325     // focus:       F
       
   326     // order:   6542013
       
   327 	TestSingleRange(7, 4, 4, 2, "4536210ee"); // count, focus, rear, front, result
       
   328     // indexes: 0123456
       
   329     // focus:        F
       
   330     // order:   3654201
       
   331 	TestSingleRange(7, 5, 4, 2, "5640321ee"); // count, focus, rear, front, result
       
   332     // indexes: 0123456
       
   333     // focus:         F
       
   334     // order:   1365420  
       
   335 	TestSingleRange(7, 6, 4, 2, "6051432ee"); // count, focus, rear, front, result
       
   336 
       
   337 	//////////////////////////////////////////////////////////////
       
   338 	// Test with a list with 8 items, 4-2 range
       
   339     // indexes: 01234567
       
   340     // focus:   F
       
   341     // order:   013 6542
       
   342 	TestSingleRange(8, 0, 4, 2, "0172654ee"); // count, focus, rear, front, result
       
   343     // indexes: 01234567
       
   344     // focus:    F
       
   345     // order:   2013 654 
       
   346 	TestSingleRange(8, 1, 4, 2, "1203765ee"); // count, focus, rear, front, result
       
   347     // indexes: 01234567 
       
   348     // focus:     F
       
   349     // order:   42013 65
       
   350 	TestSingleRange(8, 2, 4, 2, "2314076ee"); // count, focus, rear, front, result
       
   351     // indexes: 01234567
       
   352     // focus:      F
       
   353     // order:   542013 6
       
   354 	TestSingleRange(8, 3, 4, 2, "3425107ee"); // count, focus, rear, front, result
       
   355     // indexes: 01234567
       
   356     // focus:       F
       
   357     // order:   6542013
       
   358 	TestSingleRange(8, 4, 4, 2, "4536210ee"); // count, focus, rear, front, result
       
   359     // indexes: 01234567
       
   360     // focus:        F
       
   361     // order:    6542013
       
   362 	TestSingleRange(8, 5, 4, 2, "5647321ee"); // count, focus, rear, front, result
       
   363     // indexes: 01234567
       
   364     // focus:         F
       
   365     // order:   3 654201  
       
   366 	TestSingleRange(8, 6, 4, 2, "6750432ee"); // count, focus, rear, front, result
       
   367     // indexes: 01234567
       
   368     // focus:          F
       
   369     // order:   13 65420  
       
   370 	TestSingleRange(8, 7, 4, 2, "7061543ee"); // count, focus, rear, front, result
       
   371   	}
       
   372   	
       
   373 // ----------------------------------------------------------------------------
       
   374 // UT_TestOneSideRangeL
       
   375 // ----------------------------------------------------------------------------
       
   376 //
       
   377 void T_CGlxFromFocusOutwardIterator::UT_TestOneSideRangeL(  )
       
   378 	{
       
   379 	// 1 item, 1-0 range
       
   380 	TestSingleRange(1, 0, 1, 0, "0ee"); // count, focus, rear, front, result
       
   381 	// 1 item, 0-1 range
       
   382 	TestSingleRange(1, 0, 0, 1, "0ee"); // count, focus, rear, front, result
       
   383 
       
   384 	//////////////////////////////////////////////////////////////
       
   385 	// Test with a list with 2 items, 1-0 range
       
   386     // indexes: 01
       
   387     // focus:   F
       
   388     // order:   01
       
   389 	TestSingleRange(2, 0, 1, 0, "01ee"); // count, focus, rear, front, result
       
   390     // indexes: 01
       
   391     // focus:    F
       
   392     // order:   01
       
   393 	TestSingleRange(2, 1, 1, 0, "10ee"); // count, focus, rear, front, result
       
   394 	//////////////////////////////////////////////////////////////
       
   395 	// Test with a list with 2 items, 0-1 range
       
   396     // indexes: 01
       
   397     // focus:   F
       
   398     // order:   01
       
   399 	TestSingleRange(2, 0, 0, 1, "01ee"); // count, focus, rear, front, result
       
   400     // indexes: 01
       
   401     // focus:    F
       
   402     // order:   01
       
   403 	TestSingleRange(2, 1, 0, 1, "10ee"); // count, focus, rear, front, result
       
   404     
       
   405 	//////////////////////////////////////////////////////////////
       
   406     // Test with a list with 3 items, 0-1 range
       
   407     // indexes: 012
       
   408     // focus:   F
       
   409     // order:   01
       
   410 	TestSingleRange(3, 0, 0, 1, "01ee"); // count, focus, rear, front, result
       
   411     // indexes: 012
       
   412     // focus:    F
       
   413     // order:    01
       
   414 	TestSingleRange(3, 1, 0, 1, "12ee"); // count, focus, rear, front, result
       
   415     // indexes: 012
       
   416     // focus:     F
       
   417     // order:   1 0
       
   418 	TestSingleRange(3, 2, 0, 1, "20ee"); // count, focus, rear, front, result
       
   419     
       
   420 	//////////////////////////////////////////////////////////////
       
   421     // Test with a list with 3 items, 1-0 range
       
   422     // indexes: 012
       
   423     // focus:   F
       
   424     // order:   0 1
       
   425 	TestSingleRange(3, 0, 1, 0, "02ee"); // count, focus, rear, front, result
       
   426     // indexes: 012
       
   427     // focus:    F
       
   428     // order:   10
       
   429 	TestSingleRange(3, 1, 1, 0, "10ee"); // count, focus, rear, front, result
       
   430     // indexes: 012
       
   431     // focus:     F
       
   432     // order:    10
       
   433 	TestSingleRange(3, 2, 1, 0, "21ee"); // count, focus, rear, front, result
       
   434 
       
   435 	//////////////////////////////////////////////////////////////
       
   436     // Test with a list with 3 items, 0-2 range
       
   437     // indexes: 012
       
   438     // focus:   F
       
   439     // order:   012
       
   440 	TestSingleRange(3, 0, 0, 2, "012ee"); // count, focus, rear, front, result
       
   441     // indexes: 012
       
   442     // focus:    F
       
   443     // order:   201
       
   444 	TestSingleRange(3, 1, 0, 2, "120ee"); // count, focus, rear, front, result
       
   445     // indexes: 012
       
   446     // focus:     F
       
   447     // order:   120
       
   448 	TestSingleRange(3, 2, 0, 2, "201ee"); // count, focus, rear, front, result
       
   449     
       
   450 	//////////////////////////////////////////////////////////////
       
   451     // Test with a list with 3 items, 2-0 range
       
   452     // indexes: 012
       
   453     // focus:   F
       
   454     // order:   021
       
   455 	TestSingleRange(3, 0, 2, 0, "021ee"); // count, focus, rear, front, result
       
   456     // indexes: 012
       
   457     // focus:    F
       
   458     // order:   102
       
   459 	TestSingleRange(3, 1, 2, 0, "102ee"); // count, focus, rear, front, result
       
   460     // indexes: 012
       
   461     // focus:     F
       
   462     // order:   210
       
   463 	TestSingleRange(3, 2, 2, 0, "210ee"); // count, focus, rear, front, result
       
   464 
       
   465 	//////////////////////////////////////////////////////////////
       
   466     // Test with a list with 2 items, 0-2 range
       
   467     // indexes: 01
       
   468     // focus:   F
       
   469     // order:   01
       
   470 	TestSingleRange(2, 0, 0, 2, "01ee"); // count, focus, rear, front, result
       
   471     // indexes: 01
       
   472     // focus:    F
       
   473     // order:   10
       
   474 	TestSingleRange(2, 1, 0, 2, "10ee"); // count, focus, rear, front, result
       
   475     
       
   476 	//////////////////////////////////////////////////////////////
       
   477     // Test with a list with 3 items, 2-0 range
       
   478     // indexes: 01
       
   479     // focus:   F
       
   480     // order:   01
       
   481 	TestSingleRange(2, 0, 2, 0, "01ee"); // count, focus, rear, front, result
       
   482     // indexes: 01
       
   483     // focus:    F
       
   484     // order:   10
       
   485 	TestSingleRange(2, 1, 2, 0, "10ee"); // count, focus, rear, front, result
       
   486   	}
       
   487 
       
   488 // ----------------------------------------------------------------------------
       
   489 // Run a single test
       
   490 // ----------------------------------------------------------------------------
       
   491 //
       
   492 void T_CGlxFromFocusOutwardIterator::TestSingleRange(TInt aCount, 
       
   493 		TInt aFocusIndex, TInt aRearOffset, TInt aFrontOffset, char* aResults)
       
   494 	{
       
   495     __ASSERT_DEBUG(aFocusIndex >= 0 && aFocusIndex < aCount && aCount >= 0, Panic(EGlxPanicIllegalArgument)); // Make sure is testing all cases, also failed case
       
   496 
       
   497 	// Test with a list with 5 items, 1-2 range
       
   498     iFocusOrder.SetRangeOffsets(aRearOffset, aFrontOffset);
       
   499     iOrder->SetToFirst(&iList); 
       
   500     iList.iCount = aCount; 
       
   501     iList.iFocusIndex = aFocusIndex;
       
   502     
       
   503     // poor man's strlen...
       
   504     TInt resultCount = 0;
       
   505     char* tmp = aResults;
       
   506     while (*tmp) 
       
   507     	{
       
   508     	resultCount++;
       
   509     	tmp++;
       
   510     	}
       
   511     	
       
   512     __ASSERT_DEBUG(resultCount > aFrontOffset + aRearOffset + 1, Panic(EGlxPanicIllegalArgument)); // Make sure is testing all cases, also failed case
       
   513     
       
   514     for (TInt i = 0; i < resultCount; i++)
       
   515     	{
       
   516     	TInt result = (*iOrder)++;
       
   517     	char c = aResults[i];
       
   518     	TInt expectedResult = c - '0';
       
   519     	if (c == 'e') 
       
   520     		{
       
   521     		expectedResult = KErrNotFound;
       
   522     		}
       
   523     	EUNIT_ASSERT(result == expectedResult);
       
   524     	}
       
   525 	}
       
   526 	
       
   527 // ----------------------------------------------------------------------------
       
   528 // Run a single in range test
       
   529 // ----------------------------------------------------------------------------
       
   530 //
       
   531 void T_CGlxFromFocusOutwardIterator::TestSingleInRange(TInt aCount, 
       
   532 		TInt aFocusIndex, TInt aRearOffset, TInt aFrontOffset, char* aResults)
       
   533 	{
       
   534     __ASSERT_DEBUG(aFocusIndex >= 0 && aFocusIndex < aCount && aCount >= 0, Panic(EGlxPanicIllegalArgument)); // Make sure is testing all cases, also failed case
       
   535 
       
   536 	// Test with a list with 5 items, 1-2 range
       
   537     iFocusOrder.SetRangeOffsets(aRearOffset, aFrontOffset);
       
   538     iOrder->SetToFirst(&iList); 
       
   539     iList.iCount = aCount; 
       
   540     iList.iFocusIndex = aFocusIndex;
       
   541     
       
   542     for (TInt i = 0; i < aCount; i++)
       
   543     	{
       
   544     	char c = aResults[i];
       
   545      	__ASSERT_DEBUG(c != 0, Panic(EGlxPanicIllegalArgument)); // Not enough results
       
   546    	
       
   547     	TBool inRange = iOrder->InRange(i);
       
   548     	EUNIT_ASSERT((inRange && c == 'x') || (!inRange && c == ' '));
       
   549     	}
       
   550 	}
       
   551 		
       
   552 // ----------------------------------------------------------------------------
       
   553 // Run a single test
       
   554 // ----------------------------------------------------------------------------
       
   555 //
       
   556 void T_CGlxFromFocusOutwardIterator::UT_TestInRangeL()
       
   557 	{
       
   558 	// List of 1
       
   559 	// indexes: 0
       
   560 	// focus:   F
       
   561 	// range:   x
       
   562 	TestSingleInRange(1, 0, 0, 0, "x"); // count, focus, rear range, front range, result per index
       
   563 	TestSingleInRange(1, 0, 2, 0, "x"); // count, focus, rear range, front range, result per index
       
   564 	TestSingleInRange(1, 0, 0, 2, "x"); // count, focus, rear range, front range, result per index
       
   565 	TestSingleInRange(1, 0, 2, 2, "x"); // count, focus, rear range, front range, result per index
       
   566 
       
   567 	// List of 3
       
   568 	// indexes: 012
       
   569 	// focus:   F
       
   570 	// range:   x
       
   571 	TestSingleInRange(3, 0, 0, 0, "x  "); // count, focus, rear range, front range, result per index
       
   572 	TestSingleInRange(3, 1, 0, 0, " x "); // count, focus, rear range, front range, result per index
       
   573 	TestSingleInRange(3, 2, 0, 0, "  x"); // count, focus, rear range, front range, result per index
       
   574 
       
   575 	// List of 4, range of 1
       
   576 	// indexes: 0123
       
   577 	// focus:   F
       
   578 	TestSingleInRange(4, 0, 1, 1, "xx x"); // count, focus, rear range, front range, result per index
       
   579 	TestSingleInRange(4, 1, 1, 1, "xxx "); // count, focus, rear range, front range, result per index
       
   580 	TestSingleInRange(4, 2, 1, 1, " xxx"); // count, focus, rear range, front range, result per index
       
   581 	TestSingleInRange(4, 3, 1, 1, "x xx"); // count, focus, rear range, front range, result per index
       
   582 
       
   583 	// List of 4, range of 2-3
       
   584 	// indexes: 0123
       
   585 	// focus:   F
       
   586 	// range:   xxxx
       
   587 	TestSingleInRange(4, 0, 2, 3, "xxxx"); // count, focus, rear range, front range, result per index
       
   588 
       
   589 	// List of 7, range of 2-4
       
   590 	// indexes: 0123456
       
   591 	// focus:   F
       
   592 	// range:   xxxxxxx
       
   593 	TestSingleInRange(7, 0, 2, 4, "xxxxxxx"); // count, focus, rear range, front range, result per index
       
   594 	TestSingleInRange(7, 1, 2, 4, "xxxxxxx"); // count, focus, rear range, front range, result per index
       
   595 	TestSingleInRange(7, 3, 2, 4, "xxxxxxx"); // count, focus, rear range, front range, result per index
       
   596 	TestSingleInRange(7, 6, 2, 4, "xxxxxxx"); // count, focus, rear range, front range, result per index
       
   597 
       
   598 	// List of 8, range of 2-4
       
   599 	// indexes: 01234567
       
   600 	// focus:   F
       
   601 	// range:   xxx xxxx
       
   602 	TestSingleInRange(8, 0, 4, 2, "xxx xxxx"); // count, focus, rear range, front range, result per index
       
   603 	// indexes: 01234567
       
   604 	// focus:    F
       
   605 	// range:   xxxx xxx
       
   606 	TestSingleInRange(8, 1, 4, 2, "xxxx xxx"); // count, focus, rear range, front range, result per index
       
   607 	// indexes: 01234567
       
   608 	// focus:     F
       
   609 	// range:   xxxxx xx
       
   610 	TestSingleInRange(8, 2, 4, 2, "xxxxx xx"); // count, focus, rear range, front range, result per index
       
   611 	// indexes: 01234567
       
   612 	// focus:      F
       
   613 	// range:   xxxxxx x
       
   614 	TestSingleInRange(8, 3, 4, 2, "xxxxxx x"); // count, focus, rear range, front range, result per index
       
   615 	// indexes: 01234567
       
   616 	// focus:       F
       
   617 	// range:   xxxxxxx 
       
   618 	TestSingleInRange(8, 4, 4, 2, "xxxxxxx "); // count, focus, rear range, front range, result per index
       
   619 	// indexes: 01234567
       
   620 	// focus:        F
       
   621 	// range:    xxxxxxx 
       
   622 	TestSingleInRange(8, 5, 4, 2, " xxxxxxx"); // count, focus, rear range, front range, result per index
       
   623 	// indexes: 01234567
       
   624 	// focus:         F
       
   625 	// range:   x xxxxxx 
       
   626 	TestSingleInRange(8, 6, 4, 2, "x xxxxxx"); // count, focus, rear range, front range, result per index
       
   627 	// indexes: 01234567
       
   628 	// focus:          F
       
   629 	// range:   xx xxxxx 
       
   630 	TestSingleInRange(8, 7, 4, 2, "xx xxxxx"); // count, focus, rear range, front range, result per index
       
   631 	
       
   632 	}
       
   633 	
       
   634 // ----------------------------------------------------------------------------
       
   635 // Test table
       
   636 // ----------------------------------------------------------------------------
       
   637 //
       
   638 
       
   639 EUNIT_BEGIN_TEST_TABLE(
       
   640     T_CGlxFromFocusOutwardIterator,
       
   641     "Unit tests for TGlxFromFocusOutwardItemOrder",
       
   642     "UNIT" )
       
   643  
       
   644 EUNIT_TEST(
       
   645     "Test empty list",
       
   646     "TGlxFromFocusOutwardItemOrder",
       
   647     "++",
       
   648     "FUNCTIONALITY",
       
   649     SetupL, UT_TestEmptyL, Teardown)
       
   650 
       
   651 EUNIT_TEST(
       
   652     "Test symmetric ranges",
       
   653     "TGlxFromFocusOutwardItemOrder",
       
   654     "++",
       
   655     "FUNCTIONALITY",
       
   656     SetupL, UT_TestSymmetricRangeL, Teardown)
       
   657 
       
   658 EUNIT_TEST(
       
   659     "Test asymmetric ranges",
       
   660     "TGlxFromFocusOutwardItemOrder",
       
   661     "++",
       
   662     "FUNCTIONALITY",
       
   663     SetupL, UT_TestAsymmetricRangeL, Teardown)
       
   664 
       
   665 EUNIT_TEST(
       
   666     "Test one-sided ranges",
       
   667     "TGlxFromFocusOutwardItemOrder",
       
   668     "++",
       
   669     "FUNCTIONALITY",
       
   670     SetupL, UT_TestOneSideRangeL, Teardown)
       
   671 
       
   672 EUNIT_TEST(
       
   673     "Test in range",
       
   674     "TGlxFromFocusOutwardItemOrder",
       
   675     "InRange",
       
   676     "FUNCTIONALITY",
       
   677     SetupL, UT_TestInRangeL, Teardown)
       
   678 
       
   679 EUNIT_END_TEST_TABLE
       
   680 //  END OF FILE