123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- 'use strict'
- var test = require('tap').test
- var TrackerGroup = require('../index.js').TrackerGroup
- var testEvent = require('./lib/test-event.js')
- test('TrackerGroup', function (t) {
- var name = 'test'
- var track = new TrackerGroup(name)
- t.is(track.completed(), 0, 'Nothing todo is 0 completion')
- testEvent(track, 'change', afterFinishEmpty)
- track.finish()
- var a, b
- function afterFinishEmpty (er, onChangeName, completion) {
- t.is(er, null, 'finishEmpty: on change event fired')
- t.is(onChangeName, name, 'finishEmpty: on change emits the correct name')
- t.is(completion, 1, 'finishEmpty: passed through completion was correct')
- t.is(track.completed(), 1, 'finishEmpty: Finishing an empty group actually finishes it')
- track = new TrackerGroup(name)
- a = track.newItem('a', 10, 1)
- b = track.newItem('b', 10, 1)
- t.is(track.completed(), 0, 'Initially empty')
- testEvent(track, 'change', afterCompleteWork)
- a.completeWork(5)
- }
- function afterCompleteWork (er, onChangeName, completion) {
- t.is(er, null, 'on change event fired')
- t.is(onChangeName, 'a', 'on change emits the correct name')
- t.is(completion, 0.25, 'Complete half of one is a quarter overall')
- t.is(track.completed(), 0.25, 'Complete half of one is a quarter overall')
- testEvent(track, 'change', afterFinishAll)
- track.finish()
- }
- function afterFinishAll (er, onChangeName, completion) {
- t.is(er, null, 'finishAll: on change event fired')
- t.is(onChangeName, name, 'finishAll: on change emits the correct name')
- t.is(completion, 1, 'Finishing everything ')
- t.is(track.completed(), 1, 'Finishing everything ')
- track = new TrackerGroup(name)
- a = track.newItem('a', 10, 2)
- b = track.newItem('b', 10, 1)
- t.is(track.completed(), 0, 'weighted: Initially empty')
- testEvent(track, 'change', afterWeightedCompleteWork)
- a.completeWork(5)
- }
- function afterWeightedCompleteWork (er, onChangeName, completion) {
- t.is(er, null, 'weighted: on change event fired')
- t.is(onChangeName, 'a', 'weighted: on change emits the correct name')
- t.is(Math.floor(completion * 100), 33, 'weighted: Complete half of double weighted')
- t.is(Math.floor(track.completed() * 100), 33, 'weighted: Complete half of double weighted')
- testEvent(track, 'change', afterWeightedFinishAll)
- track.finish()
- }
- function afterWeightedFinishAll (er, onChangeName, completion) {
- t.is(er, null, 'weightedFinishAll: on change event fired')
- t.is(onChangeName, name, 'weightedFinishAll: on change emits the correct name')
- t.is(completion, 1, 'weightedFinishaAll: Finishing everything ')
- t.is(track.completed(), 1, 'weightedFinishaAll: Finishing everything ')
- track = new TrackerGroup(name)
- a = track.newGroup('a', 10)
- b = track.newGroup('b', 10)
- var a1 = a.newItem('a.1', 10)
- a1.completeWork(5)
- t.is(track.completed(), 0.25, 'nested: Initially quarter done')
- testEvent(track, 'change', afterNestedComplete)
- b.finish()
- }
- function afterNestedComplete (er, onChangeName, completion) {
- t.is(er, null, 'nestedComplete: on change event fired')
- t.is(onChangeName, 'b', 'nestedComplete: on change emits the correct name')
- t.is(completion, 0.75, 'nestedComplete: Finishing everything ')
- t.is(track.completed(), 0.75, 'nestedComplete: Finishing everything ')
- t.end()
- }
- })
- test('cycles', function (t) {
- var track = new TrackerGroup('top')
- testCycle(track, track)
- var layer1 = track.newGroup('layer1')
- testCycle(layer1, track)
- t.end()
- function testCycle (addTo, toAdd) {
- try {
- addTo.addUnit(toAdd)
- t.fail(toAdd.name)
- } catch (ex) {
- console.log(ex)
- t.pass(toAdd.name)
- }
- }
- })
|