001/*
002 * The contents of this file are subject to the license and copyright
003 * detailed in the LICENSE and NOTICE files at the root of the source
004 * tree.
005 */
006package org.fcrepo.http.commons.domain;
007
008import static org.junit.Assert.assertEquals;
009import static org.junit.Assert.assertFalse;
010import static org.junit.Assert.assertTrue;
011
012import org.junit.Test;
013
014/**
015 * <p>RangeTest class.</p>
016 *
017 * @author awoods
018 */
019public class RangeTest {
020    @Test
021    public void testUnboundedRange() {
022        final Range range = new Range(5);
023
024        assertEquals(5L, range.start());
025        assertEquals(-1L, range.end());
026
027    }
028    @Test
029    public void testRangeParsing() {
030        final Range range = Range.convert("bytes=50-100");
031
032        assertEquals(50L, range.start());
033        assertEquals(100L, range.end());
034        assertEquals(51L, range.size());
035        assertTrue(range.hasRange());
036
037    }
038
039    @Test
040    public void testUnboundedUpperRangeParsing() {
041        final Range range = Range.convert("bytes=50-");
042
043        assertEquals(50L, range.start());
044        assertEquals(-1L, range.end());
045        assertEquals(-1L, range.size());
046        assertTrue(range.hasRange());
047
048    }
049
050    @Test
051    public void testUnboundedLowerRangeParsing() {
052        final Range range = Range.convert("bytes=-50");
053
054        assertEquals(0L, range.start());
055        assertEquals(50L, range.end());
056        assertEquals(51L, range.size());
057        assertTrue(range.hasRange());
058
059    }
060
061    @Test
062    public void testGarbageRangeParsing() {
063        final Range range = Range.convert("something-thats-not-a-range");
064
065        assertFalse(range.hasRange());
066        assertEquals(0L, range.start());
067        assertEquals(-1L, range.end());
068        assertEquals(-1L, range.size());
069
070    }
071}