BatchData implements Serializable { public boolean hasCurrent() { if (readCurListIndex == writeCurListIndex) { return readCurArrayIndex < writeCurArrayIndex; } return readCurListIndex < writeCurListIndex && readCurArrayIndex < capacity; } BatchData();  BatchData(TSDataType type); boolean isEmpty(); boolean hasCurrent(); void next(); long currentTime(); Object currentValue(); TsPrimitiveType currentTsPrimitiveType(); TSDataType getDataType(); void init(TSDataType type); void putBoolean(long t, boolean v); void putInt(long t, int v); void putLong(long t, long v); void putFloat(long t, float v); void putDouble(long t, double v); void putBinary(long t, Binary v); boolean getBoolean(); void setBoolean(int idx, boolean v); int getInt(); void setInt(int idx, int v); long getLong(); void setLong(int idx, long v); float getFloat(); void setFloat(int idx, float v); double getDouble(); void setDouble(int idx, double v); Binary getBinary(); void setBinary(int idx, Binary v); void setTime(int idx, long v); void putAnObject(long t, Object v); int length(); long getTimeByIndex(int idx); long getLongByIndex(int idx); double getDoubleByIndex(int idx); int getIntByIndex(int idx); float getFloatByIndex(int idx); Binary getBinaryByIndex(int idx); boolean getBooleanByIndex(int idx); TimeValuePair getLastPairBeforeOrEqualTimestamp(long queryTime); Object getValueInTimestamp(long time); Object getValueInTimestamp(long time, BiPredicate<Long, Long> compare); long getMaxTimestamp(); long getMinTimestamp(); BatchDataIterator getBatchDataIterator(); void resetBatchData(); void resetBatchData(int readCurArrayIndex, int readCurListIndex); int getReadCurListIndex(); int getReadCurArrayIndex(); BatchData flip();  }
@Test public void testSignal() { BatchData batchData = SignalBatchData.getInstance(); try { batchData.hasCurrent(); } catch (UnsupportedOperationException e) { return; } fail(); }