module 'Travis.LimitedArray'

test 'limits given content', ->
  content = [1, 2, 3]
  array = Travis.LimitedArray.create content: content, limit: 2
  equal( array.get('length'), 2 )
  deepEqual( array.toArray(), [1, 2] )

test 'inserts content at the right place when unshifting', ->
  content = [1, 2, 3]
  array = Travis.LimitedArray.create content: content, limit: 2
  content.unshiftObject 0
  equal( array.get('length'), 2 )
  deepEqual( array.toArray(), [0, 1] )

test 'does not insert content when it\'s inserted not in the limited range', ->
  content = [1, 2, 3]
  array = Travis.LimitedArray.create content: content, limit: 2
  content.pushObject 0
  equal( array.get('length'), 2 )
  deepEqual( array.toArray(), [1, 2] )

test 'properly removes items', ->
  content = [1, 2, 3]
  array = Travis.LimitedArray.create content: content, limit: 2
  content.shiftObject()

  equal( array.get('length'), 2 )
  deepEqual( array.toArray(), [2, 3] )

  content.shiftObject()

  equal( array.get('length'), 1 )
  deepEqual( array.toArray(), [3] )

  content.shiftObject()

  equal( array.get('length'), 0)

test 'allows to expand array to show all items', ->
  content = [1, 2, 3]
  array = Travis.LimitedArray.create content: content, limit: 2

  array.showAll()

  equal( array.get('length'), 3)
  deepEqual( array.toArray(), [1, 2, 3])
