예제 #1
0
  public void testStoreInteger() {
    Int64Array empty = Int64Array.make(0);
    Int64Array tri = Int64Array.make(3);

    // Store integer values within spec
    tri.storeInteger(0, IntegerValue.make(Long.MIN_VALUE));
    assertTrue(tri.int64At(0) == Long.MIN_VALUE);
    tri.storeInteger(1, IntegerValue.make(1));
    assertEquals(tri.int64At(1), 1);
    tri.storeInteger(2, IntegerValue.make(Long.MAX_VALUE));
    assertTrue(tri.int64At(2) == Long.MAX_VALUE);

    // Store integer values outside of spec
    try {
      tri.storeInteger(0, IntegerValue.make(Long.MIN_VALUE).minus(IntegerValue.one()));
      fail("MIN_VALUE - 1");
    } catch (IllegalArgumentException e) {
      // expected
    }
    try {
      tri.storeInteger(2, IntegerValue.make(Long.MAX_VALUE).plus(IntegerValue.one()));
      fail("MAX_VALUE + 1");
    } catch (IllegalArgumentException e) {
      // expected
    }

    // Store outside array boundary
    try {
      tri.storeInteger(-1, IntegerValue.make(1));
      fail("-1");
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    try {
      tri.storeInteger(3, IntegerValue.make(1));
      fail("3");
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    try {
      empty.storeInteger(0, IntegerValue.make(1));
      fail("0");
    } catch (IndexOutOfBoundsException e) {
      // expected
    }
  }
예제 #2
0
  public void testIsEqual() {
    long[] intsE = new long[] {};
    long[] ints1 = new long[] {1};
    long[] ints12 = new long[] {1, 2};
    long[] ints11 = new long[] {1, 1};

    // Equal matches
    assertTrue(Int64Array.make(intsE).isEqual(Int64Array.make(intsE)));
    assertTrue(Int64Array.make(ints1).isEqual(Int64Array.make(ints1)));
    assertTrue(Int64Array.make(ints12).isEqual(Int64Array.make(ints12)));
    assertTrue(Int64Array.make(ints1).isEqual(AssertArrays.makeInt64Array1()));

    // Unequal compatible matches
    assertFalse(Int64Array.make(ints11).isEqual(Int64Array.make(ints12)));
    assertFalse(Int64Array.make(intsE).isEqual(Int64Array.make(ints12)));
    assertFalse(Int64Array.make(ints12).isEqual(Int64Array.make(intsE)));

    // single value
    assertFalse(Int64Array.make(ints1).isEqual(IntegerValue.make(1)));

    // incompatible array
    try {
      assertFalse(Int64Array.make(ints1).isEqual(AssertArrays.makeIEEE32Array1()));
      fail("ieee32");
    } catch (UnsupportedOperationException e) {
      // expected
    }
  }
 public void step() {
   myPosition = myPosition.minus(IntegerValue.one());
   if (myIndex >= 0 && (myPosition.isLT(myEdges.integerVarAt(myIndex)))) {
     myIndex = myIndex - 2;
     if (myIndex >= -1) {
       myPosition = (myEdges.integerVarAt(myIndex + 1)).minus(IntegerValue.one());
     }
   }
   /*
   udanax-top.st:53451:DescendingIntegerStepper methodsFor: 'accessing'!
   {void} step
   	myPosition _ myPosition - 1.
   	(myIndex >= Int32Zero and: [myPosition < (myEdges integerVarAt: myIndex)]) ifTrue:
   		[myIndex _ myIndex - 2.
   		myIndex >= -1 ifTrue:
   			[myPosition _ (myEdges integerVarAt: myIndex + 1) - 1]]!
   */
 }
예제 #4
0
 protected AscendingArrayStepper(ActualArray array, IntegerValue start, IntegerValue stop) {
   super(array, start);
   lastValueInternal = stop.asInt32();
   /*
   udanax-top.st:55474:AscendingArrayStepper methodsFor: 'protected: create'!
   create: array {ActualArray} with: start {IntegerVar} with: stop {IntegerVar}
   	super create: array with: start.
   	lastValueInternal _ stop DOTasLong!
   */
 }
예제 #5
0
 public void printOn(PrintWriter oo) {
   oo.print(getClass().getName());
   oo.print(" on ");
   oo.print(array().subTableBetween(index(), IntegerValue.make(lastValueInternal)));
   /*
   udanax-top.st:55493:AscendingArrayStepper methodsFor: 'printing'!
   {void} printOn: oo {ostream reference}
   	oo << self getCategory name << ' on ' << (self array subTableBetween: self index with: lastValueInternal)!
   */
 }
 public DescendingIntegerStepper(IntegerVarArray edges, int count) {
   super();
   myEdges = edges;
   myIndex = count - 2;
   if (myIndex >= -1) {
     myPosition = (myEdges.integerVarAt(myIndex + 1)).minus(IntegerValue.one());
   } else {
     myPosition = IntegerValue.zero();
   }
   /*
   udanax-top.st:53424:DescendingIntegerStepper methodsFor: 'protected: create'!
   create: edges {IntegerVarArray} with: count {UInt32}
   	super create.
   	myEdges _ edges.
   	myIndex _ count - 2.
   	myIndex >= -1
   		ifTrue: [myPosition _ (myEdges integerVarAt: myIndex + 1) - 1]
   		ifFalse: [myPosition _ IntegerVar0]!
   */
 }
예제 #7
0
 public Stepper copy() {
   return AscendingArrayStepper.make(array(), index(), IntegerValue.make(lastValueInternal));
   /*
   udanax-top.st:55458:AscendingArrayStepper methodsFor: 'create'!
   {Stepper} copy
   	^AscendingArrayStepper
   		make: self array
   		with: self index
   		with: lastValueInternal!
   */
 }
 public Heaper fetch() {
   if (hasValue()) {
     return myPosition.integer();
   } else {
     return null;
   }
   /*
   udanax-top.st:53445:DescendingIntegerStepper methodsFor: 'accessing'!
   {Heaper wimpy} fetch
   	self hasValue ifTrue: [^myPosition integer] ifFalse: [^NULL]!
   */
 }
예제 #9
0
  public void testIntegerAt() {
    Int64Array a = Int64Array.make(new long[] {0, 1, -2, 3});

    AssertArrays.assertEquals(IntegerValue.make(0), a.integerAt(0));
    AssertArrays.assertEquals(IntegerValue.make(1), a.integerAt(1));
    AssertArrays.assertEquals(IntegerValue.make(-2), a.integerAt(2));
    AssertArrays.assertEquals(IntegerValue.make(3), a.integerAt(3));

    try {
      a.integerAt(-1);
      fail("-1");
    } catch (IndexOutOfBoundsException e) {
      // expected
    }
    try {
      a.integerAt(4);
      fail("4");
    } catch (IndexOutOfBoundsException e) {
      // expected
    }
  }
예제 #10
0
  public void testIndexOf() {
    int index = AssertArrays.makeIEEE64ArrayEmpty().indexOf(IEEE64Value.make(1.1), 0, 1);
    assertEquals(-1, index);

    index = AssertArrays.makeIEEE64Array1().indexOf(IEEE64Value.make(1.1), 0, 1);
    assertEquals(0, index);

    index = AssertArrays.makeIEEE64Array1().indexOf(IEEE64Value.make(1.1), 0, 0);
    assertEquals(-1, index);

    index = AssertArrays.makeIEEE64Array12345().indexOf(IEEE64Value.make(1.1), 0, 1);
    assertEquals(0, index);

    index = AssertArrays.makeIEEE64Array12345().indexOf(IEEE64Value.make(1.1), 0, 2);
    assertEquals(-1, index);

    index = AssertArrays.makeIEEE64Array12345().indexOf(IEEE64Value.make(1.1), 1, 1);
    assertEquals(-1, index);

    index = AssertArrays.makeIEEE64Array12345().indexOf(IEEE64Value.make(5.5), 0, 1);
    assertEquals(4, index);

    index = AssertArrays.makeIEEE64Array12321().indexOf(IEEE64Value.make(2.2), 0, 1);
    assertEquals(1, index);

    index = AssertArrays.makeIEEE64Array12321().indexOf(IEEE64Value.make(2.2), 0, 2);
    assertEquals(3, index);

    index = AssertArrays.makeIEEE64Array12321().indexOf(IEEE64Value.make(1.1), -1, -1);
    assertEquals(4, index);

    index = AssertArrays.makeIEEE64Array12321().indexOf(IEEE64Value.make(2.2), -1, -1);
    assertEquals(3, index);

    index = AssertArrays.makeIEEE64Array12321().indexOf(IEEE64Value.make(2.2), -1, 1);
    assertEquals(-1, index);

    index = AssertArrays.makeIEEE64Array12321().indexOf(IEEE64Value.make(2.2), -1, -2);
    assertEquals(1, index);

    index = AssertArrays.makeIEEE64Array12321().indexOf(IEEE64Value.make(2.2), -1, -3);
    assertEquals(-1, index);

    index = AssertArrays.makeIEEE64Array12321().indexOf(IEEE64Value.make(2.2), -3, -1);
    assertEquals(1, index);

    index = AssertArrays.makeIEEE64Array12321().indexOf(IEEE64Value.make(2.2), -1, 1);
    assertEquals(-1, index);

    try {
      AssertArrays.makeIEEE64Array12321().indexOf(IEEE64Value.make(2.2), -6, 1);
      fail();
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    try {
      AssertArrays.makeIEEE64Array12321().indexOf(IntegerValue.make(2), -3, 1);
      fail();
    } catch (ClassCastException e) {
      // expected
    }
  }
예제 #11
0
  public void testStoreAll() {
    IEEE64Array array = IEEE64Array.make(0);
    array.storeAll(IEEE64Value.make(1.1));
    AssertArrays.assertEquals(IEEE64Array.make(0), array, DIFF);

    array = IEEE64Array.make(1);
    array.storeAll(IEEE64Value.make(1.1));
    AssertArrays.assertEquals(IEEE64Array.make(new double[] {1.1}), array, DIFF);

    array = IEEE64Array.make(3);
    array.storeAll(IEEE64Value.make(2.2));
    AssertArrays.assertEquals(IEEE64Array.make(new double[] {2.2, 2.2, 2.2}), array, DIFF);

    array = AssertArrays.makeIEEE64Array12345();
    array.storeAll(IEEE64Value.make(9.9), 2, 1);
    AssertArrays.assertEquals(
        IEEE64Array.make(new double[] {1.1, 9.9, 9.9, 4.4, 5.5}), array, DIFF);

    array = AssertArrays.makeIEEE64Array12345();
    array.storeAll(null, 2, 1);
    AssertArrays.assertEquals(
        IEEE64Array.make(new double[] {1.1, 0.0, 0.0, 4.4, 5.5}), array, DIFF);

    array = AssertArrays.makeIEEE64Array12345();
    array.storeAll(IEEE64Value.make(9.9), -1, 1);
    AssertArrays.assertEquals(
        IEEE64Array.make(new double[] {1.1, 9.9, 9.9, 9.9, 9.9}), array, DIFF);

    array = AssertArrays.makeIEEE64Array12345();
    array.storeAll(IEEE64Value.make(9.9), 2);
    AssertArrays.assertEquals(
        IEEE64Array.make(new double[] {9.9, 9.9, 3.3, 4.4, 5.5}), array, DIFF);

    array = AssertArrays.makeIEEE64Array12345();
    array.storeAll(IEEE64Value.make(9.9), 0, 1);
    AssertArrays.assertEquals(
        IEEE64Array.make(new double[] {1.1, 2.2, 3.3, 4.4, 5.5}), array, DIFF);

    array = AssertArrays.makeIEEE64Array12345();
    array.storeAll(IEEE64Value.make(9.9), 2, 1);
    AssertArrays.assertEquals(
        IEEE64Array.make(new double[] {1.1, 9.9, 9.9, 4.4, 5.5}), array, DIFF);

    array = AssertArrays.makeIEEE64Array12345();
    try {
      array.storeAll(IEEE64Value.make(9.9), 6);
      fail();
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    array = AssertArrays.makeIEEE64Array12345();
    try {
      array.storeAll(IEEE64Value.make(9.9), 4, 2);
      fail();
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    // Store incompatible type
    array = AssertArrays.makeIEEE64Array12345();
    try {
      array.storeAll(IntegerValue.make(9), 1);
      fail();
    } catch (ClassCastException e) {
      // expected
    }
  }
예제 #12
0
  public void testStoreMany() {
    // empty
    Int64Array array = AssertArrays.makeInt64ArrayEmpty();
    array.storeMany(0, AssertArrays.makeInt64ArrayEmpty());
    AssertArrays.assertEquals(AssertArrays.makeInt64ArrayEmpty(), array);

    // simple
    array = AssertArrays.makeInt64Array12345();
    array.storeMany(0, AssertArrays.makeInt64Array12321());
    AssertArrays.assertEquals(AssertArrays.makeInt64Array12321(), array);

    array = AssertArrays.makeInt64Array12345();
    array.storeMany(0, AssertArrays.makeInt64Array12321());
    AssertArrays.assertEquals(AssertArrays.makeInt64Array12321(), array);

    array = AssertArrays.makeInt64Array12321();
    array.storeMany(1, Int64Array.make(new long[] {8, 7, 6, 5, 4, 3, 3}), 2, 3);
    AssertArrays.assertEquals(Int64Array.make(new long[] {1, 5, 4, 2, 1}), array);

    array = AssertArrays.makeInt64Array12321();
    array.storeMany(1, Int64Array.make(new long[] {8, 7}));
    AssertArrays.assertEquals(Int64Array.make(new long[] {1, 8, 7, 2, 1}), array);

    // Store incompatible type
    array = AssertArrays.makeInt64Array12321();
    try {
      array.storeMany(1, IEEE64Array.make(new double[] {8.8, 7.7}));
      fail();
    } catch (ClassCastException e) {
      // expected
    }

    // attempt to copy beyond this extent
    array = AssertArrays.makeInt64Array12345();
    try {
      array.storeMany(1, AssertArrays.makeInt64Array12321());
      fail();
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    // insufficient source elements
    array = AssertArrays.makeInt64Array12345();
    try {
      array.storeMany(0, AssertArrays.makeInt64Array12321(), 2, 4);
      fail();
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    // Store integer values outside of spec
    array = AssertArrays.makeInt64Array12321();
    try {
      array.storeMany(
          1,
          IntegerVarArray.make(
              new IntegerValue[] {IntegerValue.make(Long.MAX_VALUE).plus(IntegerValue.one())}));
      fail("MAX_VALUE + 1");
    } catch (IllegalArgumentException e) {
      // expected
    }
  }
예제 #13
0
  public void testStoreAll() {
    Int64Array array = Int64Array.make(0);
    array.storeAll(IntegerValue.make(1));
    AssertArrays.assertEquals(Int64Array.make(0), array);

    array = Int64Array.make(1);
    array.storeAll(IntegerValue.make(1));
    AssertArrays.assertEquals(Int64Array.make(new long[] {1}), array);

    array = Int64Array.make(3);
    array.storeAll(IntegerValue.make(2));
    AssertArrays.assertEquals(Int64Array.make(new long[] {2, 2, 2}), array);

    array = AssertArrays.makeInt64Array12345();
    array.storeAll(IntegerValue.make(9), 2, 1);
    assertEquals(Int64Array.make(new long[] {1, 9, 9, 4, 5}), array);

    array = AssertArrays.makeInt64Array12345();
    array.storeAll(null, 2, 1);
    AssertArrays.assertEquals(Int64Array.make(new long[] {1, 0, 0, 4, 5}), array);

    array = AssertArrays.makeInt64Array12345();
    array.storeAll(IntegerValue.make(9), -1, 1);
    AssertArrays.assertEquals(Int64Array.make(new long[] {1, 9, 9, 9, 9}), array);

    array = AssertArrays.makeInt64Array12345();
    array.storeAll(IntegerValue.make(9), 2);
    AssertArrays.assertEquals(Int64Array.make(new long[] {9, 9, 3, 4, 5}), array);

    array = AssertArrays.makeInt64Array12345();
    array.storeAll(IntegerValue.make(9), 0, 1);
    AssertArrays.assertEquals(Int64Array.make(new long[] {1, 2, 3, 4, 5}), array);

    array = AssertArrays.makeInt64Array12345();
    array.storeAll(IntegerValue.make(9), 2, 1);
    AssertArrays.assertEquals(Int64Array.make(new long[] {1, 9, 9, 4, 5}), array);

    // Store outside of array bounds
    array = AssertArrays.makeInt64Array12345();
    try {
      array.storeAll(IntegerValue.make(9), 6);
      fail();
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    array = AssertArrays.makeInt64Array12345();
    try {
      array.storeAll(IntegerValue.make(9), 4, 2);
      fail();
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    // Store incompatible type
    array = AssertArrays.makeInt64Array12345();
    try {
      array.storeAll(IEEE32Value.make(9.9f), 1);
      fail();
    } catch (ClassCastException e) {
      // expected
    }

    // Store integer values outside of spec
    array = AssertArrays.makeInt64Array12345();
    try {
      array.storeAll(IntegerValue.make(Long.MAX_VALUE).plus(IntegerValue.one()), 1);
      fail();
    } catch (IllegalArgumentException e) {
      // expected
    }
  }
예제 #14
0
  public void testStoreValue() {
    Int64Array empty = Int64Array.make(0);
    Int64Array tri = Int64Array.make(3);

    // Store integer values within spec
    tri.storeValue(0, IntegerValue.make(Long.MIN_VALUE));
    assertTrue(tri.int64At(0) == Long.MIN_VALUE);
    tri.storeValue(1, IntegerValue.make(1));
    assertEquals(tri.int64At(1), 1);
    tri.storeValue(2, IntegerValue.make(Long.MAX_VALUE));
    assertTrue(tri.int64At(2) == Long.MAX_VALUE);

    // Store integer values outside of spec
    try {
      tri.storeValue(0, IntegerValue.make(Long.MIN_VALUE).minus(IntegerValue.one()));
      fail("MIN_VALUE - 1");
    } catch (IllegalArgumentException e) {
      // expected
    }
    try {
      tri.storeValue(2, IntegerValue.make(Long.MAX_VALUE).plus(IntegerValue.one()));
      fail("MAX_VALUE + 1");
    } catch (IllegalArgumentException e) {
      // expected
    }

    // Store outside array boundary
    try {
      tri.storeValue(-1, IntegerValue.make(1));
      fail("-1");
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    try {
      tri.storeValue(3, IntegerValue.make(1));
      fail("3");
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    try {
      empty.storeValue(0, IntegerValue.make(1));
      fail("0");
    } catch (IndexOutOfBoundsException e) {
      // expected
    }

    // non-compatible store
    try {
      tri.storeValue(0, IEEE64Value.make(1.1));
      fail("classCast");
    } catch (ClassCastException e) {
      // expected
    }

    // Null value
    try {
      tri.storeValue(0, null);
      fail("null");
    } catch (NullPointerException e) {
      // expected
    }
  }