"use strict"; const tap = require("tap"); const { build, Parent } = require("../reference-tree"); const createBoxTreeBuilder = require("../../lib/util/box-tree-builder"); let input = [{ flags: ['\\HasNoChildren'], delimiter: '/', name: 'confirmed-spam' }, { flags: ['\\HasNoChildren', '\\Trash'], delimiter: '/', name: 'Trash' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'SpamLikely' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'Spam' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'Sent Items' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'Archive' }, { flags: ['\\HasNoChildren', '\\Drafts'], delimiter: '/', name: 'Drafts' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'Notes' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'TeamViewer' }, { flags: ['\\HasNoChildren', '\\Sent'], delimiter: '/', name: 'Sent Messages' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'confirmed-ham' }, { flags: ['\\Noselect', '\\HasChildren'], delimiter: '/', name: 'Public' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'Public/office3' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'Public/office4' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'Public/support' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'Public/root' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'Public/updates' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'Public/postmaster' }, { flags: ['\\Noselect', '\\HasChildren'], delimiter: '/', name: 'Shared' }, { flags: ['\\Noselect', '\\HasChildren'], delimiter: '/', name: 'Shared/d.marteva' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'Shared/d.marteva/INBOX' }, { flags: ['\\HasNoChildren'], delimiter: '/', name: 'INBOX' }]; let expected = build({ 'confirmed-spam': { name: "confirmed-spam", path: [ "confirmed-spam" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: null, specialUseAttribute: undefined }, Trash: { name: "Trash", path: [ "Trash" ], attributes: ['\\HasNoChildren', '\\Trash'], delimiter: '/', children: null, parent: null, specialUseAttribute: '\\Trash' }, SpamLikely: { name: "SpamLikely", path: [ "SpamLikely" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: null, specialUseAttribute: undefined }, Spam: { name: "Spam", path: [ "Spam" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: null, specialUseAttribute: undefined }, 'Sent Items': { name: "Sent Items", path: [ "Sent Items" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: null, specialUseAttribute: undefined }, Archive: { name: "Archive", path: [ "Archive" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: null, specialUseAttribute: undefined }, Drafts: { name: "Drafts", path: [ "Drafts" ], attributes: ['\\HasNoChildren', '\\Drafts'], delimiter: '/', children: null, parent: null, specialUseAttribute: '\\Drafts' }, Notes: { name: "Notes", path: [ "Notes" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: null, specialUseAttribute: undefined }, TeamViewer: { name: "TeamViewer", path: [ "TeamViewer" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: null, specialUseAttribute: undefined }, 'Sent Messages': { name: "Sent Messages", path: [ "Sent Messages" ], attributes: ['\\HasNoChildren', '\\Sent'], delimiter: '/', children: null, parent: null, specialUseAttribute: '\\Sent' }, 'confirmed-ham': { name: "confirmed-ham", path: [ "confirmed-ham" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: null, specialUseAttribute: undefined }, Public: { name: "Public", path: [ "Public" ], attributes: ['\\Noselect', '\\HasChildren'], delimiter: '/', children: { office3: { name: "office3", path: [ "Public", "office3" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: Parent(2), specialUseAttribute: undefined }, office4: { name: "office4", path: [ "Public", "office4" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: Parent(2), specialUseAttribute: undefined }, support: { name: "support", path: [ "Public", "support" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: Parent(2), specialUseAttribute: undefined }, root: { name: "root", path: [ "Public", "root" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: Parent(2), specialUseAttribute: undefined }, updates: { name: "updates", path: [ "Public", "updates" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: Parent(2), specialUseAttribute: undefined }, postmaster: { name: "postmaster", path: [ "Public", "postmaster" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: Parent(2), specialUseAttribute: undefined } }, parent: null, specialUseAttribute: undefined }, Shared: { name: "Shared", path: [ "Shared" ], attributes: ['\\Noselect', '\\HasChildren'], delimiter: '/', children: { 'd.marteva': { name: "d.marteva", path: [ "Shared", "d.marteva" ], attributes: ['\\Noselect', '\\HasChildren'], delimiter: '/', children: { INBOX: { name: "INBOX", path: [ "Shared", "d.marteva", "INBOX" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: Parent(2), specialUseAttribute: undefined } }, parent: Parent(2), specialUseAttribute: undefined } }, parent: null, specialUseAttribute: undefined }, INBOX: { name: "INBOX", path: [ "INBOX" ], attributes: ['\\HasNoChildren'], delimiter: '/', children: null, parent: null, specialUseAttribute: undefined } }); tap.test("build-box-tree", (test) => { let builder = createBoxTreeBuilder(); for (let item of input) { builder.add(item); } test.same(builder.done(), expected); // Needed to convince node-tap that the test is completed, for some reason... return Promise.resolve(); });