2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 package org.apache.lucene.util;
20 import java.util.Arrays;
22 import org.apache.lucene.store.DataInput;
23 import org.apache.lucene.store.DataOutput;
25 public class TestPagedBytes extends LuceneTestCase {
27 public void testDataInputOutput() throws Exception {
28 for(int iter=0;iter<5*RANDOM_MULTIPLIER;iter++) {
29 final PagedBytes p = new PagedBytes(_TestUtil.nextInt(random, 1, 20));
30 final DataOutput out = p.getDataOutput();
31 final int numBytes = random.nextInt(10000000);
33 final byte[] answer = new byte[numBytes];
34 random.nextBytes(answer);
36 while(written < numBytes) {
37 if (random.nextInt(10) == 7) {
38 out.writeByte(answer[written++]);
40 int chunk = Math.min(random.nextInt(1000), numBytes - written);
41 out.writeBytes(answer, written, chunk);
46 p.freeze(random.nextBoolean());
48 final DataInput in = p.getDataInput();
50 final byte[] verify = new byte[numBytes];
52 while(read < numBytes) {
53 if (random.nextInt(10) == 7) {
54 verify[read++] = in.readByte();
56 int chunk = Math.min(random.nextInt(1000), numBytes - read);
57 in.readBytes(verify, read, chunk);
61 assertTrue(Arrays.equals(answer, verify));