@SuppressWarnings("unchecked") protected CheckTuple createDoubleCheckTuple(double[] fieldValues, int numKeyFields) { RTreeCheckTuple<Double> checkTuple = new RTreeCheckTuple<Double>(fieldValues.length, numKeyFields); for (double v : fieldValues) { checkTuple.appendField(v); } return checkTuple; }
@SuppressWarnings("unchecked") @Override protected CheckTuple createIntCheckTuple(int[] fieldValues, int numKeyFields) { RTreeCheckTuple<Integer> checkTuple = new RTreeCheckTuple<Integer>(fieldValues.length, numKeyFields); for (int v : fieldValues) { checkTuple.appendField(v); } return checkTuple; }
@SuppressWarnings("unchecked") // Create a new ArrayList containing the elements satisfying the search key public HashMultiSet<RTreeCheckTuple> getRangeSearchExpectedResults( Collection<RTreeCheckTuple> checkTuples, RTreeCheckTuple key) { HashMultiSet<RTreeCheckTuple> expectedResult = new HashMultiSet<RTreeCheckTuple>(); Iterator<RTreeCheckTuple> iter = checkTuples.iterator(); while (iter.hasNext()) { RTreeCheckTuple t = iter.next(); if (t.intersect(key)) { expectedResult.add(t); } } return expectedResult; }
@Override public void checkExpectedResults( ITreeIndexCursor cursor, Collection checkTuples, ISerializerDeserializer[] fieldSerdes, int keyFieldCount, Iterator<CheckTuple> checkIter) throws Exception { int actualCount = 0; try { while (cursor.hasNext()) { cursor.next(); ITupleReference tuple = cursor.getTuple(); RTreeCheckTuple checkTuple = (RTreeCheckTuple) createCheckTupleFromTuple(tuple, fieldSerdes, keyFieldCount); if (!checkTuples.contains(checkTuple)) { fail("Scan or range search returned unexpected answer: " + checkTuple.toString()); } actualCount++; } if (actualCount < checkTuples.size()) { fail( "Scan or range search returned fewer answers than expected.\nExpected: " + checkTuples.size() + "\nActual : " + actualCount); } if (actualCount > checkTuples.size()) { fail( "Scan or range search returned more answers than expected.\nExpected: " + checkTuples.size() + "\nActual : " + actualCount); } } finally { cursor.close(); } }