EntityIterator     = require "../src/model/iterators/entity_iterator"
ObjectIterator     = require "../src/model/iterators/object_iterator"
ArrayIterator      = require "../src/model/iterators/array_iterator"
NullIterator       = require "../src/model/iterators/null_iterator"
IteratorsIterator  = require "../src/model/iterators/iterators_iterator"

Api                = require "../src/model/api"
Resource            = require "../src/model/resource"

StringLogger       = require "./utils/string_logger"

logger = new StringLogger()

it "Should iterate an array", ->
  logger.reset()
  ai = new ArrayIterator([1,2,3,4])
  while ai.hasNext()
    logger.log ai.next()

  logger.buffer.should.equal """
1
2
3
4

"""

it "Should iterate an API", ->
  logger.reset()
  
  a = new Api
    resources:
      Team:
        new Resource(name: "Team")
      Player:
        new Resource(name: "Player")

  ite = a.getChildrenIterator()

  while ite.hasNext()
    logger.log(ite.next().getName())
  
  logger.buffer.should.equal """
Team
Player

"""

