
var parse = require('..')
  , assert = require('assert');

function arr(type, arr) {
  arr.type = type;
  return arr;
}

describe('parseRange(len, str)', function(){
  it('should parse range strings', function(){
    assert(-1 == parse(200, 'bytes=500-20'));
    assert(-2 == parse(200, 'malformed'));
    parse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }]));
    parse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }]));
    parse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }]));
    parse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }]));
    parse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }]));
    parse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }]));
    parse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }]));
    parse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }]));
    parse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }]));
    parse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }]));
    parse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }]));
  })
})