Package etch.util.core.nio

Source Code of etch.util.core.nio.TestHistory

/* $Id: TestHistory.java 719414 2008-11-20 22:50:55Z sccomer $
*
* Copyright 2007-2008 Cisco Systems Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/

package etch.util.core.nio;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import org.junit.Test;

import etch.util.core.nio.History;


/** Test of History */
public class TestHistory
{
  /** @throws Exception */
  @Test
  public void construct1() throws Exception
  {
    History h = new History( 1, 2, 3 );
    assertEquals( 1, h.min() );
    assertEquals( 2, h.limit() );
    assertEquals( 3, h.length() );
  }

  /** @throws Exception */
  @Test
  public void construct2() throws Exception
  {
    History h = new History( 102, 119, 7 );
    assertEquals( 102, h.min() );
    assertEquals( 119, h.limit() );
    assertEquals( 7, h.length() );
  }
 
  /** @throws Exception */
  @Test( expected = IllegalArgumentException.class )
  public void construct3() throws Exception
  {
    // min < 0
    new History( -1, 2, 3 );
  }
 
  /** @throws Exception */
  @Test( expected = IllegalArgumentException.class )
  public void construct4() throws Exception
  {
    // limit < min
    new History( 0, -1, 3 );
  }
 
  /** @throws Exception */
  @Test( expected = IllegalArgumentException.class )
  public void construct5() throws Exception
  {
    // len < 0
    new History( 0, 0, -1 );
  }
 
  /** @throws Exception */
  @Test
  public void used1() throws Exception
  {
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    assertTrue( h.used( 1 ) );
    checkUsedAlloc( h, 1, 0 );
    assertTrue( h.used( -1 ) );
    checkUsedAlloc( h, 0, 0 );
  }
 
  /** @throws Exception */
  @Test
  public void used2() throws Exception
  {
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    assertTrue( h.used( 2 ) );
    checkUsedAlloc( h, 2, 0 );
    assertTrue( h.used( -2 ) );
    checkUsedAlloc( h, 0, 0 );
  }
 
  /** @throws Exception */
  @Test
  public void used3() throws Exception
  {
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    assertTrue( h.used( 1 ) );
    checkUsedAlloc( h, 1, 0 );
    assertTrue( h.used( 1 ) );
    checkUsedAlloc( h, 2, 0 );
    assertTrue( h.used( -1 ) );
    checkUsedAlloc( h, 1, 0 );
    assertTrue( h.used( -1 ) );
    checkUsedAlloc( h, 0, 0 );
  }
 
  /** @throws Exception */
  @Test
  public void used4() throws Exception
  {
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    // try to overflow
    assertFalse( h.used( 11 ) );
    checkUsedAlloc( h, 0, 0 );
  }
 
  /** @throws Exception */
  @Test
  public void used5() throws Exception
  {
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    assertTrue( h.used( 1 ) );
    checkUsedAlloc( h, 1, 0 );
    assertTrue( h.used( 9 ) );
    checkUsedAlloc( h, 10, 0 );
    // try to overflow
    assertFalse( h.used( 1 ) );
    checkUsedAlloc( h, 10, 0 );
  }
 
  /** @throws Exception */
  @Test( expected = IllegalStateException.class )
  public void used6() throws Exception
  {
    // newUsed < 0
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    h.used( -1 );
  }
 
  /** @throws Exception */
  @Test( expected = IllegalStateException.class )
  public void used7() throws Exception
  {
    // newUsed < 0
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    h.used( 1 );
    checkUsedAlloc( h, 1, 0 );
    h.used( -2 );
  }
 
  /** @throws Exception */
  @Test
  public void used8() throws Exception
  {
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    h.used( 1 );
    checkUsedAlloc( h, 1, 0 );
    try
    {
      h.used( -2 );
      fail( "never reached" );
    }
    catch ( IllegalStateException e )
    {
      // make sure used was not adjusted...
      checkUsedAlloc( h, 1, 0 );
    }
  }
 
  /** @throws Exception */
  @Test( expected = IllegalArgumentException.class )
  public void used9() throws Exception
  {
    // k == 0
    History h = new History( 0, 10, 5 );
    h.used( 0 );
  }
 
  /** @throws Exception */
  @Test
  public void alloc1() throws Exception
  {
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    h.alloc( 1 );
    checkUsedAlloc( h, 0, 1 );
    h.alloc( -1 );
    checkUsedAlloc( h, 0, 0 );
  }
 
  /** @throws Exception */
  @Test
  public void alloc2() throws Exception
  {
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    h.alloc( 2 );
    checkUsedAlloc( h, 0, 2 );
    h.alloc( -2 );
    checkUsedAlloc( h, 0, 0 );
  }
 
  /** @throws Exception */
  @Test
  public void alloc3() throws Exception
  {
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    h.alloc( 1 );
    checkUsedAlloc( h, 0, 1 );
    h.alloc( 1 );
    checkUsedAlloc( h, 0, 2 );
    h.alloc( -1 );
    checkUsedAlloc( h, 0, 1 );
    h.alloc( -1 );
    checkUsedAlloc( h, 0, 0 );
  }
 
  /** @throws Exception */
  @Test( expected = IllegalStateException.class )
  public void alloc4() throws Exception
  {
    // newAlloc > limit
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    // try to overflow
    h.alloc( 11 );
  }
 
  /** @throws Exception */
  @Test( expected = IllegalStateException.class )
  public void alloc5() throws Exception
  {
    // newAlloc > limit
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    h.alloc( 1 );
    checkUsedAlloc( h, 0, 1 );
    h.alloc( 9 );
    checkUsedAlloc( h, 0, 10 );
    // try to overflow
    h.alloc( 1 );
  }
 
  /** @throws Exception */
  @Test( expected = IllegalStateException.class )
  public void alloc6() throws Exception
  {
    // newAlloc < 0
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    // try to underflow
    h.alloc( -1 );
  }
 
  /** @throws Exception */
  @Test( expected = IllegalStateException.class )
  public void alloc7() throws Exception
  {
    // newAlloc < 0
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    h.alloc( 1 );
    checkUsedAlloc( h, 0, 1 );
    // try to underflow
    h.alloc( -2 );
  }
 
  /** @throws Exception */
  @Test
  public void alloc8() throws Exception
  {
    History h = new History( 0, 10, 5 );
    checkUsedAlloc( h, 0, 0 );
    h.alloc( 1 );
    checkUsedAlloc( h, 0, 1 );
    try
    {
      // try to underflow
      h.alloc( -2 );
      fail( "never reached" );
    }
    catch ( IllegalStateException e )
    {
      // make sure alloc was not adjusted...
      checkUsedAlloc( h, 0, 1 );
    }
  }
 
  /** @throws Exception */
  @Test( expected = IllegalArgumentException.class )
  public void alloc9() throws Exception
  {
    // k == 0
    History h = new History( 0, 10, 5 );
    h.alloc( 0 );
  }
 
  /** @throws Exception */
  @Test
  public void suggested1() throws Exception
  {
    History h = new History( 0, 10, 5 );
    assertEquals( 0, h.suggested() );
    h.tickle();
    assertEquals( 0, h.suggested() );
    h.init();
    assertEquals( 0, h.suggested() );
  }
 
  /** @throws Exception */
  @Test
  public void suggested2() throws Exception
  {
    History h = new History( 2, 10, 5 );
    assertEquals( 2, h.suggested() );
    h.tickle();
    assertEquals( 2, h.suggested() );
    h.init();
    assertEquals( 2, h.suggested() );
  }
 
  /** @throws Exception */
  @Test
  public void suggested3() throws Exception
  {
    History h = new History( 0, 10, 5 );
    assertEquals( 0, h.suggested() );
   
    assertTrue( h.used( 10 ) );
    assertEquals( 10, h.getUsed() );
   
    assertEquals( 0, h.suggested() ); // avg(0, 0, 0, 0, 0) == 0
    h.tickle();
    assertEquals( 2, h.suggested() ); // avg(10, 0, 0, 0, 0) == 2
    h.tickle();
    assertEquals( 4, h.suggested() ); // avg(10, 10, 0, 0, 0) == 4
    h.tickle();
    assertEquals( 6, h.suggested() ); // avg(10, 10, 10, 0, 0) == 6
    h.tickle();
    assertEquals( 8, h.suggested() ); // avg(10, 10, 10, 10, 0) == 8
    h.tickle();
    assertEquals( 10, h.suggested() ); // avg(10, 10, 10, 10, 10) == 10
    h.tickle();
    assertEquals( 10, h.suggested() ); // avg(10, 10, 10, 10, 10) == 10
   
    assertTrue( h.used( -10 ) );
    assertEquals( 0, h.getUsed() );
   
    h.tickle();
    assertEquals( 10, h.suggested() ); // avg(10, 10, 10, 10, 10) == 10
    h.tickle();
    assertEquals( 8, h.suggested() ); // avg(0, 10, 10, 10, 10) == 8
    h.tickle();
    assertEquals( 6, h.suggested() ); // avg(0, 0, 10, 10, 10) == 6
    h.tickle();
    assertEquals( 4, h.suggested() ); // avg(0, 0, 0, 10, 10) == 4
    h.tickle();
    assertEquals( 2, h.suggested() ); // avg(0, 0, 0, 0, 10) == 2
    h.tickle();
    assertEquals( 0, h.suggested() ); // avg(0, 0, 0, 0, 0) == 0
  }
 
  /** @throws Exception */
  @Test
  public void suggested4() throws Exception
  {
    History h = new History( 2, 10, 5 );
    assertEquals( 2, h.suggested() );
   
    assertTrue( h.used( 10 ) );
    assertEquals( 10, h.getUsed() );
   
    assertEquals( 2, h.suggested() ); // avg(2, 2, 2, 2, 2) == 2
    h.tickle();
    assertEquals( 3, h.suggested() ); // avg(10, 2, 2, 2, 2) == 3
    h.tickle();
    assertEquals( 5, h.suggested() ); // avg(10, 10, 2, 2, 2) == 5
    h.tickle();
    assertEquals( 6, h.suggested() ); // avg(10, 10, 10, 2, 2) == 6
    h.tickle();
    assertEquals( 8, h.suggested() ); // avg(10, 10, 10, 10, 2) == 8
    h.tickle();
    assertEquals( 10, h.suggested() ); // avg(10, 10, 10, 10, 10) == 10
    h.tickle();
    assertEquals( 10, h.suggested() ); // avg(10, 10, 10, 10, 10) == 10
   
    assertTrue( h.used( -10 ) );
    assertEquals( 0, h.getUsed() );
   
    h.tickle();
    assertEquals( 10, h.suggested() ); // avg(10, 10, 10, 10, 10) == 10
    h.tickle();
    assertEquals( 8, h.suggested() ); // avg(2, 10, 10, 10, 10) == 8
    h.tickle();
    assertEquals( 6, h.suggested() ); // avg(2, 2, 10, 10, 10) == 6
    h.tickle();
    assertEquals( 5, h.suggested() ); // avg(2, 2, 2, 10, 10) == 5
    h.tickle();
    assertEquals( 3, h.suggested() ); // avg(2, 2, 2, 2, 10) == 3
    h.tickle();
    assertEquals( 2, h.suggested() ); // avg(2, 2, 2, 2, 2) == 2
  }
 
  /** @throws Exception */
  @Test
  public void suggested5() throws Exception
  {
    History h = new History( 0, 10, 0 );
    assertEquals( 0, h.suggested() );
    assertTrue( h.used( 5 ) );
    assertEquals( 0, h.suggested() );
    h.tickle();
    assertEquals( 0, h.suggested() );
  }
 
  private void checkUsedAlloc( History h, int u, int a )
  {
    assertEquals( u, h.getUsed() );
    assertEquals( a, h.getAlloc() );
  }
}
TOP

Related Classes of etch.util.core.nio.TestHistory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.