Hello,

see the following test case:

public void testSortedPreferentialArray()
{
    SortedPreferentialArray test = new SortedPreferentialArray(10);
    test.setPreferLarge(true);

    for(int i = 1; i <= 10; i++)
    {
        test.add(new Integer(i));
    }

    assertEquals(1,((Integer)test.getSmallest()).intValue());  // o.k
    assertEquals(10,((Integer)test.getLargest()).intValue()); // o.k

    test.add(new Integer(11));

    logger.info(test.dumpArray());

    // Result of Dump is
    // 0=2
    // 1=3
    // 2=4
    // 3=5
    // 4=6
    // 5=7
    // 6=8
    // 7=9
    // 8=11
    // 9=10

    assertEquals(2,((Integer)test.getSmallest()).intValue());  // o.k.
    assertEquals(11,((Integer)test.getLargest()).intValue()); // will fail !!!
}

I think in the following code of SortedPreferentialArray.java "nLar-1" has to 
be replaced with "nLar":

if ( preferLarge )
{
    if ( isFull )
    {
        // is full, prefer larger, remove smallest by shifting left
        int pnt = nLar-1; // set iteration stop point
        for ( int i = 0; i < pnt; i++ )
        {
            array[i] = array[i + 1];
        }
       // use nLar-1 for insertion point
       array[nLar-1] = obj;
       if ( log.isDebugEnabled() )
       {
            log.debug( "Inserted object at " + ( nLar - 1 ) );
        }
}



Best Regards
Gerd

Siemens AG
Energy Sector
Fossil Power Generation Division
Instrumentation & Electrical
E F IE TI 1
Freyeslebenstr. 1
91058 Erlangen, Deutschland
Tel.: +49 (9131) 18-82096
Fax: +49 (9131) 18-6878
mailto:gerd.arzber...@siemens.com

Siemens Aktiengesellschaft: Vorsitzender des Aufsichtsrats: Gerhard Cromme; 
Vorstand: Peter Löscher, Vorsitzender; Wolfgang Dehen, Brigitte Ederer, Joe 
Kaeser, Barbara Kux, Hermann Requardt, Siegfried Russwurm, Peter Y. Solmssen; 
Sitz der Gesellschaft: Berlin und München, Deutschland; Registergericht: Berlin 
Charlottenburg, HRB 12300, München, HRB 6684; WEEE-Reg.-Nr. DE 23691322


Reply via email to