addon-sdk/source/test/addons/places/tests/test-places-utils.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     4 'use strict';
     6 module.metadata = {
     7   'engines': {
     8     'Firefox': '*'
     9   }
    10 };
    12 const { defer, all } = require('sdk/core/promise');
    13 const { setTimeout } = require('sdk/timers');
    14 const { TreeNode } = require('sdk/places/utils');
    16 exports['test construct tree'] = function (assert) {
    17   let tree = TreeNode(1);
    18   tree.add([2, 3, 4]);
    19   tree.get(2).add([2.1, 2.2, 2.3]);
    20   let newTreeNode = TreeNode(4.3);
    21   newTreeNode.add([4.31, 4.32]);
    22   tree.get(4).add([4.1, 4.2, newTreeNode]);
    24   assert.equal(tree.get(2).value, 2, 'get returns node with correct value');
    25   assert.equal(tree.get(2.3).value, 2.3, 'get returns node with correct value');
    26   assert.equal(tree.get(4.32).value, 4.32, 'get returns node even if created from nested node');
    27   assert.equal(tree.get(4).children.length, 3, 'nodes have correct children length');
    28   assert.equal(tree.get(3).children.length, 0, 'nodes have correct children length');
    30   assert.equal(tree.get(4).get(4.32).value, 4.32, 'node.get descends from itself');
    31   assert.equal(tree.get(4).get(2), null, 'node.get descends from itself fails if not descendant');
    32 };
    34 exports['test walk'] = function (assert, done) {
    35   let resultsAll = [];
    36   let resultsNode = [];
    37   let tree = TreeNode(1);
    38   tree.add([2, 3, 4]);
    39   tree.get(2).add([2.1, 2.2]);
    41   tree.walk(function (node) {
    42     resultsAll.push(node.value);
    43   }).then(() => {
    44     [1, 2, 2.1, 2.2, 3, 4].forEach(num => {
    45       assert.ok(~resultsAll.indexOf(num), 'function applied to each node from root');
    46     });
    47     return tree.get(2).walk(node => resultsNode.push(node.value));
    48   }).then(() => {
    49     [2, 2.1, 2.2].forEach(function (num) {
    50       assert.ok(~resultsNode.indexOf(num), 'function applied to each node from node');
    51     });
    52   }).catch(assert.fail).then(done);
    53 };
    55 exports['test async walk'] = function (assert, done) {
    56   let resultsAll = [];
    57   let tree = TreeNode(1);
    58   tree.add([2, 3, 4]);
    59   tree.get(2).add([2.1, 2.2]);
    61   tree.walk(function (node) {
    62     let deferred = defer();
    63     setTimeout(function () {
    64       resultsAll.push(node.value);
    65       deferred.resolve(node.value);
    66     }, node.value === 2 ? 50 : 5);
    67     return deferred.promise;
    68   }).then(function () {
    69     [1, 2, 2.1, 2.2, 3, 4].forEach(function (num) {
    70       assert.ok(~resultsAll.indexOf(num), 'function applied to each node from root');
    71     });
    72     assert.ok(resultsAll.indexOf(2) < resultsAll.indexOf(2.1),
    73       'child should wait for parent to complete');
    74     assert.ok(resultsAll.indexOf(2) < resultsAll.indexOf(2.2),
    75       'child should wait for parent to complete');
    76     done();
    77   });
    78 };

mercurial