    @robot.shutdown()
 
   describe 'Unit Tests', ->
+    describe '#hear', ->
+      it 'registers a new listener', ->
+        expect(@robot.listeners).to.have.length(0)
+        @robot.hear /.*/, ->
+        expect(@robot.listeners).to.have.length(1)
+
+    describe '#respond', ->
+      it 'registers a new listener', ->
+        expect(@robot.listeners).to.have.length(0)
+        @robot.respond /.*/, ->
+        expect(@robot.listeners).to.have.length(1)
+
+    describe '#enter', ->
+      it 'registers a new listener', ->
+        expect(@robot.listeners).to.have.length(0)
+        @robot.enter ->
+        expect(@robot.listeners).to.have.length(1)
+
+    describe '#leave', ->
+      it 'registers a new listener', ->
+        expect(@robot.listeners).to.have.length(0)
+        @robot.leave ->
+        expect(@robot.listeners).to.have.length(1)
+
+    describe '#topic', ->
+      it 'registers a new listener', ->
+        expect(@robot.listeners).to.have.length(0)
+        @robot.topic ->
+        expect(@robot.listeners).to.have.length(1)
+
+    describe '#catchAll', ->
+      it 'registers a new listener', ->
+        expect(@robot.listeners).to.have.length(0)
+        @robot.catchAll ->
+        expect(@robot.listeners).to.have.length(1)
+
     describe '#receive', ->
       it 'calls all registered listeners', ->
         # Need to use a real Message so that the CatchAllMessage constructor works

        expect(@robot.emit).to.have.been.called
        expect(goodListenerCalled).to.be.ok

  describe 'Message Processing', ->
    it 'calls a matching listener', (done) ->
      testMessage = new TextMessage(@user, 'message123')


# Hubot classes
Robot = require '../src/robot.coffee'
{ CatchAllMessage, EnterMessage, LeaveMessage, TextMessage, TopicMessage } = require '../src/message'
Adapter = require '../src/adapter'

# Preload the Hubot mock adapter but substitute in the latest version of Adapter
