Package aima.test.core.unit.util.math

Source Code of aima.test.core.unit.util.math.MixedRadixNumberTest

package aima.test.core.unit.util.math;

import org.junit.Assert;
import org.junit.Test;

import aima.core.util.math.MixedRadixNumber;

/**
* @author Ciaran O'Reilly
*
*/
public class MixedRadixNumberTest {

  @Test(expected = IllegalArgumentException.class)
  public void testInvalidRadices() {
    new MixedRadixNumber(100, new int[] { 1, 0, -1 });
  }

  @Test(expected = IllegalArgumentException.class)
  public void testInvalidMaxValue() {
    new MixedRadixNumber(100, new int[] { 3, 3, 3 });
  }

  @Test(expected = IllegalArgumentException.class)
  public void testInvalidInitialValuesValue1() {
    new MixedRadixNumber(new int[] { 0, 0, 4 }, new int[] { 3, 3, 3 });
  }

  @Test(expected = IllegalArgumentException.class)
  public void testInvalidInitialValuesValue2() {
    new MixedRadixNumber(new int[] { 1, 2, -1 }, new int[] { 3, 3, 3 });
  }

  @Test(expected = IllegalArgumentException.class)
  public void testInvalidInitialValuesValue3() {
    new MixedRadixNumber(new int[] { 1, 2, 3, 1 }, new int[] { 3, 3, 3 });
  }

  @Test
  public void testAllowedMaxValue() {
    Assert.assertEquals(15, (new MixedRadixNumber(0,
        new int[] { 2, 2, 2, 2 }).getMaxAllowedValue()));
    Assert.assertEquals(80, (new MixedRadixNumber(0,
        new int[] { 3, 3, 3, 3 }).getMaxAllowedValue()));
    Assert.assertEquals(5, (new MixedRadixNumber(0, new int[] { 3, 2 })
        .getMaxAllowedValue()));
    Assert.assertEquals(35, (new MixedRadixNumber(0,
        new int[] { 3, 3, 2, 2 }).getMaxAllowedValue()));
    Assert.assertEquals(359, (new MixedRadixNumber(0, new int[] { 3, 4, 5,
        6 }).getMaxAllowedValue()));
    Assert.assertEquals(359, (new MixedRadixNumber(0, new int[] { 6, 5, 4,
        3 }).getMaxAllowedValue()));
    Assert.assertEquals(359,
        (new MixedRadixNumber(new int[] { 6, 5, 4, 3 }, new int[] { 6,
            5, 4, 3 }).getMaxAllowedValue()));
  }

  @Test
  public void testIncrement() {
    MixedRadixNumber mrn = new MixedRadixNumber(0, new int[] { 3, 2 });
    int i = 0;
    while (mrn.increment()) {
      i++;
    }
    Assert.assertEquals(i, mrn.getMaxAllowedValue());
  }

  @Test
  public void testDecrement() {
    MixedRadixNumber mrn = new MixedRadixNumber(5, new int[] { 3, 2 });
    int i = 0;
    while (mrn.decrement()) {
      i++;
    }
    Assert.assertEquals(i, mrn.getMaxAllowedValue());
    i = 0;
    while (mrn.increment()) {
      i++;
    }
    while (mrn.decrement()) {
      i--;
    }
    Assert.assertEquals(i, mrn.intValue());
  }

  @Test
  public void testCurrentNumberalValue() {
    MixedRadixNumber mrn;
    //
    mrn = new MixedRadixNumber(0, new int[] { 3, 3, 2, 2 });
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(35, new int[] { 3, 3, 2, 2 });
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(1, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(1, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(25, new int[] { 3, 3, 2, 2 });
    Assert.assertEquals(1, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(1, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(17, new int[] { 3, 3, 2, 2 });
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(1, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(8, new int[] { 3, 3, 2, 2 });
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(359, new int[] { 3, 4, 5, 6 });
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(3, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(4, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(5, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(359, new int[] { 6, 5, 4, 3 });
    Assert.assertEquals(5, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(4, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(3, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(3));
  }

  @Test
  public void testCurrentValueFor() {
    MixedRadixNumber mrn;
    //
    mrn = new MixedRadixNumber(0, new int[] { 3, 3, 2, 2 });
    Assert.assertEquals(0, mrn.getCurrentValueFor(new int[] { 0, 0, 0, 0 }));
    //
    mrn = new MixedRadixNumber(35, new int[] { 3, 3, 2, 2 });
    Assert.assertEquals(35,
        mrn.getCurrentValueFor(new int[] { 2, 2, 1, 1 }));
    //
    mrn = new MixedRadixNumber(25, new int[] { 3, 3, 2, 2 });
    Assert.assertEquals(25,
        mrn.getCurrentValueFor(new int[] { 1, 2, 0, 1 }));
    //
    mrn = new MixedRadixNumber(17, new int[] { 3, 3, 2, 2 });
    Assert.assertEquals(17,
        mrn.getCurrentValueFor(new int[] { 2, 2, 1, 0 }));
    //
    mrn = new MixedRadixNumber(8, new int[] { 3, 3, 2, 2 });
    Assert.assertEquals(8, mrn.getCurrentValueFor(new int[] { 2, 2, 0, 0 }));
    //
    mrn = new MixedRadixNumber(359, new int[] { 3, 4, 5, 6 });
    Assert.assertEquals(359,
        mrn.getCurrentValueFor(new int[] { 2, 3, 4, 5 }));
    //
    mrn = new MixedRadixNumber(359, new int[] { 6, 5, 4, 3 });
    Assert.assertEquals(359,
        mrn.getCurrentValueFor(new int[] { 5, 4, 3, 2 }));
  }

  @Test
  public void testSetCurrentValueFor() {
    MixedRadixNumber mrn;
    //
    mrn = new MixedRadixNumber(0, new int[] { 3, 3, 2, 2 });
    mrn.setCurrentValueFor(new int[] { 0, 0, 0, 0 });
    Assert.assertEquals(0, mrn.intValue());
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(0, new int[] { 3, 3, 2, 2 });
    mrn.setCurrentValueFor(new int[] { 2, 2, 1, 1 });
    Assert.assertEquals(35, mrn.intValue());
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(1, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(1, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(0, new int[] { 3, 3, 2, 2 });
    mrn.setCurrentValueFor(new int[] { 1, 2, 0, 1 });
    Assert.assertEquals(25, mrn.intValue());
    Assert.assertEquals(1, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(1, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(0, new int[] { 3, 3, 2, 2 });
    mrn.setCurrentValueFor(new int[] { 2, 2, 1, 0 });
    Assert.assertEquals(17, mrn.intValue());
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(1, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(0, new int[] { 3, 3, 2, 2 });
    mrn.setCurrentValueFor(new int[] { 2, 2, 0, 0 });
    Assert.assertEquals(8, mrn.intValue());
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(0, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(0, new int[] { 3, 4, 5, 6 });
    mrn.setCurrentValueFor(new int[] { 2, 3, 4, 5 });
    Assert.assertEquals(359, mrn.intValue());
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(3, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(4, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(5, mrn.getCurrentNumeralValue(3));
    //
    mrn = new MixedRadixNumber(0, new int[] { 6, 5, 4, 3 });
    mrn.setCurrentValueFor(new int[] { 5, 4, 3, 2 });
    Assert.assertEquals(359, mrn.intValue());
    Assert.assertEquals(5, mrn.getCurrentNumeralValue(0));
    Assert.assertEquals(4, mrn.getCurrentNumeralValue(1));
    Assert.assertEquals(3, mrn.getCurrentNumeralValue(2));
    Assert.assertEquals(2, mrn.getCurrentNumeralValue(3));
  }
}
TOP

Related Classes of aima.test.core.unit.util.math.MixedRadixNumberTest

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.