   equals obj.I.turbo, 38, "turbo should cool down normally"
 
 test "should not blow up if cooldowns aren't specified", ->
-  obj.update()
+  obj = GameObject()
+
+  obj.include(Approachable)
+
 
   equals obj.I.age, 1, "should successfully update"
 

module "Approachable",
  setup: ->
    @obj = GameObject()
    @obj.include Approachable

test "objects count down each of their cooldowns", 2, ->
  @obj.I = 
    bullet: 83
    cooldowns:
      bullet:
        target: 3
        approachBy: 1

  5.times ->
    @obj.update()

  equals @obj.I.bullet, 78, "bullet should decrease by 5"

  100.times ->
    @obj.update()

  equals @obj.I.bullet, 3, "bullet should not cool down part target value"

test "should handle negative value", ->
  obj.I = 
    powerup: -70
    cooldowns:
      powerup:
        target: 0
        approachBy: 1

  11.times ->
    obj.update()

  equals obj.I.powerup, -59, "powerup should increase by 11"

        approachBy: 1
        target: 1000

  obj.include(Approachable)

    obj.update()

  equals obj.I.cool, 0
