Home | History | Annotate | Download | only in applier
      1 // Copyright 2016 Google Inc. All rights reserved.
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //     http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 package com.google.archivepatcher.applier;
     16 
     17 import org.junit.Assert;
     18 import org.junit.Test;
     19 import org.junit.runner.RunWith;
     20 import org.junit.runners.JUnit4;
     21 
     22 import java.io.IOException;
     23 import java.io.InputStream;
     24 
     25 /**
     26  * Tests for {@link PartiallyCompressingOutputStream}.
     27  */
     28 @RunWith(JUnit4.class)
     29 @SuppressWarnings("javadoc")
     30 public class LimitedInputStreamTest {
     31   /**
     32    * An input stream that never ends and always does nothing.
     33    */
     34   private static class ForeverInputStream extends InputStream {
     35     @Override
     36     public int read() throws IOException {
     37       return 0;
     38     }
     39 
     40     @Override
     41     public int read(byte[] b) throws IOException {
     42       return b.length;
     43     }
     44 
     45     @Override
     46     public int read(byte[] b, int off, int len) throws IOException {
     47       return len;
     48     }
     49   }
     50 
     51   @SuppressWarnings("resource")
     52   @Test
     53   public void testRead_WithLimit0() throws IOException {
     54     LimitedInputStream stream = new LimitedInputStream(new ForeverInputStream(), 0);
     55     Assert.assertEquals(-1, stream.read());
     56   }
     57 
     58   @SuppressWarnings("resource")
     59   @Test
     60   public void testRead_WithLimit1() throws IOException {
     61     LimitedInputStream stream = new LimitedInputStream(new ForeverInputStream(), 1);
     62     Assert.assertEquals(0, stream.read());
     63     Assert.assertEquals(-1, stream.read());
     64   }
     65 
     66   @SuppressWarnings("resource")
     67   @Test
     68   public void testRead_WithLimit100() throws IOException {
     69     LimitedInputStream stream = new LimitedInputStream(new ForeverInputStream(), 100);
     70     Assert.assertEquals(100, stream.read(new byte[1000]));
     71     Assert.assertEquals(-1, stream.read());
     72   }
     73 
     74   @SuppressWarnings("resource")
     75   @Test(expected = IllegalArgumentException.class)
     76   public void testSetLimit_BadValue() {
     77     new LimitedInputStream(new ForeverInputStream(), -1);
     78   }
     79 }
     80