// Path: hive-dwrf/src/main/java/com/facebook/hive/orc/compression/CompressionCodec.java
// public interface CompressionCodec {
//   /**
//    * Compress the in buffer to the out buffer.
//    * @param in the bytes to compress
//    * @param out the uncompressed bytes
//    * @param overflow put any additional bytes here
//    * @return true if the output is smaller than input
//    * @throws IOException
//    */
//   boolean compress(ByteBuffer in, ByteBuffer out, ByteBuffer overflow
//                   ) throws IOException;
// 
//   /**
//    * Decompress the in buffer to the out buffer.
//    * @param in the bytes to decompress
//    * @param out the decompressed bytes
//    * @throws IOException
//    */
//   void decompress(ByteBuffer in, ByteBuffer out) throws IOException;
// 
//   void reloadConfigurations(Configuration conf);
// }
// 
// Path: hive-dwrf/src/main/java/com/facebook/hive/orc/compression/SnappyCodec.java
// public class SnappyCodec implements CompressionCodec {
// 
//   @Override
//   public void reloadConfigurations(Configuration conf) {
//   }
// 
//   @Override
//   public boolean compress(ByteBuffer in, ByteBuffer out,
//                           ByteBuffer overflow) throws IOException {
//     int inBytes = in.remaining();
//     // I should work on a patch for Snappy to support an overflow buffer
//     // to prevent the extra buffer copy.
//     byte[] compressed = new byte[Snappy.maxCompressedLength(inBytes)];
//     int outBytes =
//         Snappy.compress(in.array(), in.arrayOffset() + in.position(), inBytes,
//             compressed, 0);
//     if (outBytes < inBytes) {
//       int remaining = out.remaining();
//       if (remaining >= outBytes) {
//         System.arraycopy(compressed, 0, out.array(), out.arrayOffset() +
//             out.position(), outBytes);
//         out.position(out.position() + outBytes);
//       } else {
//         System.arraycopy(compressed, 0, out.array(), out.arrayOffset() +
//             out.position(), remaining);
//         out.position(out.limit());
//         System.arraycopy(compressed, remaining, overflow.array(),
//             overflow.arrayOffset(), outBytes - remaining);
//         overflow.position(outBytes - remaining);
//       }
//       return true;
//     } else {
//       return false;
//     }
//   }
// 
//   @Override
//   public void decompress(ByteBuffer in, ByteBuffer out) throws IOException {
//     int inOffset = in.position();
//     int uncompressLen =
//         Snappy.uncompress(in.array(), in.arrayOffset() + inOffset,
//         in.limit() - inOffset, out.array(), out.arrayOffset() + out.position());
//     out.position(uncompressLen + out.position());
//     out.flip();
//   }
// }
// 
// Path: hive-dwrf/src/main/java/com/facebook/hive/orc/WriterImpl.java
// static class RowIndexPositionRecorder implements PositionRecorder {
//   private final OrcProto.RowIndexEntry.Builder builder;
// 
//   RowIndexPositionRecorder(OrcProto.RowIndexEntry.Builder builder) {
//     this.builder = builder;
//   }
// 
//   @Override
//   public void addPosition(long position) {
//     builder.addPositions(position);
//   }
// }


import static junit.framework.Assert.assertEquals;
import java.nio.ByteBuffer;
import com.facebook.hive.orc.compression.CompressionCodec;
import com.facebook.hive.orc.compression.SnappyCodec;
import org.apache.hadoop.hive.serde2.ReaderWriterProfiler;
import org.junit.Test;
import com.facebook.hive.orc.OrcProto.RowIndex;
import com.facebook.hive.orc.OrcProto.RowIndexEntry;
import com.facebook.hive.orc.WriterImpl.RowIndexPositionRecorder;
/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 com.facebook.hive.orc;





public class TestRunLengthByteReader {

  @Test
  public void testUncompressedSeek() throws Exception {
    TestInStream.OutputCollector collect = new TestInStream.OutputCollector();

    ReaderWriterProfiler.setProfilerOptions(null);
    RunLengthByteWriter out = new RunLengthByteWriter(new OutStream("test", 100,
        null, collect, new MemoryEstimate()));
    RowIndex.Builder rowIndex = OrcProto.RowIndex.newBuilder();
    RowIndexEntry.Builder rowIndexEntry = OrcProto.RowIndexEntry.newBuilder();
// Path: hive-dwrf/src/main/java/com/facebook/hive/orc/compression/CompressionCodec.java
// public interface CompressionCodec {
//   /**
//    * Compress the in buffer to the out buffer.
//    * @param in the bytes to compress
//    * @param out the uncompressed bytes
//    * @param overflow put any additional bytes here
//    * @return true if the output is smaller than input
//    * @throws IOException
//    */
//   boolean compress(ByteBuffer in, ByteBuffer out, ByteBuffer overflow
//                   ) throws IOException;
// 
//   /**
//    * Decompress the in buffer to the out buffer.
//    * @param in the bytes to decompress
//    * @param out the decompressed bytes
//    * @throws IOException
//    */
//   void decompress(ByteBuffer in, ByteBuffer out) throws IOException;
// 
//   void reloadConfigurations(Configuration conf);
// }
// 
// Path: hive-dwrf/src/main/java/com/facebook/hive/orc/compression/SnappyCodec.java
// public class SnappyCodec implements CompressionCodec {
// 
//   @Override
//   public void reloadConfigurations(Configuration conf) {
//   }
// 
//   @Override
//   public boolean compress(ByteBuffer in, ByteBuffer out,
//                           ByteBuffer overflow) throws IOException {
//     int inBytes = in.remaining();
//     // I should work on a patch for Snappy to support an overflow buffer
//     // to prevent the extra buffer copy.
//     byte[] compressed = new byte[Snappy.maxCompressedLength(inBytes)];
//     int outBytes =
//         Snappy.compress(in.array(), in.arrayOffset() + in.position(), inBytes,
//             compressed, 0);
//     if (outBytes < inBytes) {
//       int remaining = out.remaining();
//       if (remaining >= outBytes) {
//         System.arraycopy(compressed, 0, out.array(), out.arrayOffset() +
//             out.position(), outBytes);
//         out.position(out.position() + outBytes);
//       } else {
//         System.arraycopy(compressed, 0, out.array(), out.arrayOffset() +
//             out.position(), remaining);
//         out.position(out.limit());
//         System.arraycopy(compressed, remaining, overflow.array(),
//             overflow.arrayOffset(), outBytes - remaining);
//         overflow.position(outBytes - remaining);
//       }
//       return true;
//     } else {
//       return false;
//     }
//   }
// 
//   @Override
//   public void decompress(ByteBuffer in, ByteBuffer out) throws IOException {
//     int inOffset = in.position();
//     int uncompressLen =
//         Snappy.uncompress(in.array(), in.arrayOffset() + inOffset,
//         in.limit() - inOffset, out.array(), out.arrayOffset() + out.position());
//     out.position(uncompressLen + out.position());
//     out.flip();
//   }
// }
// 
// Path: hive-dwrf/src/main/java/com/facebook/hive/orc/WriterImpl.java
// static class RowIndexPositionRecorder implements PositionRecorder {
//   private final OrcProto.RowIndexEntry.Builder builder;
// 
//   RowIndexPositionRecorder(OrcProto.RowIndexEntry.Builder builder) {
//     this.builder = builder;
//   }
// 
//   @Override
//   public void addPosition(long position) {
//     builder.addPositions(position);
//   }
// }


// Path: hive-dwrf/src/test/java/com/facebook/hive/orc/TestRunLengthByteReader.java
import static junit.framework.Assert.assertEquals;
import java.nio.ByteBuffer;
import com.facebook.hive.orc.compression.CompressionCodec;
import com.facebook.hive.orc.compression.SnappyCodec;
import org.apache.hadoop.hive.serde2.ReaderWriterProfiler;
import org.junit.Test;
import com.facebook.hive.orc.OrcProto.RowIndex;
import com.facebook.hive.orc.OrcProto.RowIndexEntry;
import com.facebook.hive.orc.WriterImpl.RowIndexPositionRecorder;

/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 com.facebook.hive.orc;





public class TestRunLengthByteReader {

  @Test
  public void testUncompressedSeek() throws Exception {
    TestInStream.OutputCollector collect = new TestInStream.OutputCollector();

    ReaderWriterProfiler.setProfilerOptions(null);
    RunLengthByteWriter out = new RunLengthByteWriter(new OutStream("test", 100,
        null, collect, new MemoryEstimate()));
    RowIndex.Builder rowIndex = OrcProto.RowIndex.newBuilder();
    RowIndexEntry.Builder rowIndexEntry = OrcProto.RowIndexEntry.newBuilder();
    WriterImpl.RowIndexPositionRecorder rowIndexPosition = new RowIndexPositionRecorder(rowIndexEntry);