@carbon-io/test-tube
Version:
Test framework for Carbon.io
111 lines (105 loc) • 3.15 kB
JavaScript
var assert = require('assert')
var carbon = require('carbon-io')
var __ = carbon.fibers.__(module)
var o = carbon.atom.o(module)
var testtube = carbon.testtube
__(function() {
module.exports = o.main({
_type: testtube.Test,
name: 'SimpleNestedTests',
description: 'A simple set of tests',
setup: function() {
assert(typeof this.level === 'undefined')
this.level = 0
},
doTest: function() {
assert.equal(this.level, 0)
},
teardown: function() {
assert.equal(this.level, 0)
delete this.level
},
tests: [
o({
_type: testtube.Test,
name: 'SimpleNestedTest',
setup: function() {
this._oldLevel = this.parent.level
this.parent.level += 1
},
doTest: function() {
assert.equal(this.parent.level, this._oldLevel + 1)
},
teardown: function() {
try {
assert.equal(this.parent.level, this._oldLevel + 1)
} finally {
this.parent.level = this._oldLevel
}
},
tests: [
o({
_type: testtube.Test,
name: 'SimpleDoubleNestedAsyncTest',
setup: function(_, done) {
var self = this
setImmediate(function() {
self._oldLevel = self.parent.parent.level
self.parent.parent.level += 1
done()
})
},
doTest: function(_, done) {
var self = this
setImmediate(function() {
var err = undefined
try {
assert.equal(self.parent.parent.level, self._oldLevel + 1)
} catch (e) {
err = e
}
done(err)
})
},
teardown: function(_, done) {
var self = this
setImmediate(function() {
var err = undefined
try {
assert.equal(self.parent.parent.level, self._oldLevel + 1)
} catch (e) {
err = e
} finally {
self.parent.parent.level = self._oldLevel
}
done(err)
})
},
tests: [
o({
_type: testtube.Test,
name: 'SimpleTripleNestedTest',
setup: function() {
this._oldLevel = this.parent.parent.parent.level
this.parent.parent.parent.level += 1
},
doTest: function() {
assert.equal(
this.parent.parent.parent.level, this._oldLevel + 1)
},
teardown: function() {
try {
assert.equal(
this.parent.parent.parent.level, this._oldLevel + 1)
} finally {
this.parent.parent.parent.level = this._oldLevel
}
}
})
]
})
]
})
]
})
})