sphero-pwn
Version:
Driver for Sphero robots
94 lines (83 loc) • 2.85 kB
text/coffeescript
Robot = SpheroPwn.Robot
describe 'Robot', ->
describe '#_appendBasicToArea', ->
beforeEach ->
testRecordingChannel('basic-print')
.then (channel) =>
= channel
= new Robot
afterEach ->
.abortBasic()
.then =>
.eraseBasicArea 'ram'
.then =>
.close()
it 'loads code in an empty area', ->
basic = """
10 print "Hello from Basic"
\0"""
.on 'basicError', (error) => console.error error
.abortBasic()
.then (result) =>
expect(result).to.equal true
.eraseBasicArea 'ram'
.then (result) =>
._appendBasicToArea('ram', basic)
.then (result) =>
expect(result).to.equal true
new Promise (resolve, reject) =>
.runBasic 'ram', 10
.on 'basic', (event) ->
resolve event
.then (event) =>
expect(event).to.deep.equal message: "Hello from Basic\n"
describe '#_appendBasicToArea with fragment that exceeds maximum length', ->
beforeEach ->
testRecordingChannel('basic-too-long')
.then (channel) =>
= channel
= new Robot
afterEach ->
.abortBasic()
.then =>
.eraseBasicArea 'ram'
.then =>
.close()
it 'returns a rejected promise', ->
basic = (' ' for i in [0...1042]).join('')
._appendBasicToArea('ram', basic)
.then (result) =>
expect(false).to.equal '_appendBasicToArea promise not rejected'
.catch (error) =>
expect(error).to.be.an.instanceOf Error
expect(error).to.have.property 'message',
'orbBasic fragment length 1042 exceeds maximum of 253 bytes'
describe '#loadBasic', ->
beforeEach ->
testRecordingChannel('basic-large-print')
.then (channel) =>
= channel
= new Robot
afterEach ->
.abortBasic()
.then =>
.eraseBasicArea 'ram'
.then =>
.close()
it 'loads code in an empty area', ->
basic = ''
for i in [1..30]
basic += "#{i}0 print \"Hello from Basic line #{i}0\"\n"
basic += "#{i}5 end\n"
.on 'basicError', (error) => console.error error
.abortBasic()
.then (result) =>
.loadBasic('ram', basic)
.then (result) =>
expect(result).to.equal true
new Promise (resolve, reject) =>
.runBasic 'ram', 240
.on 'basic', (event) ->
resolve event
.then (event) =>
expect(event).to.deep.equal message: "Hello from Basic line 240\n"