]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/test/trackergroup.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / npmlog / node_modules / are-we-there-yet / test / trackergroup.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/test/trackergroup.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/test/trackergroup.js
new file mode 100644 (file)
index 0000000..799a767
--- /dev/null
@@ -0,0 +1,96 @@
+'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)
+    }
+  }
+})