text: /* eslint-env mocha */
  var path = require('path');
  
  var assert = require('../helper').assert;
  
  var util = require('../../lib/util');
  
  describe('util', function() {
  
    var files;
    beforeEach(function() {
      files = [
        path.join('a1', 'b1', 'c2', 'd2.txt'),
        path.join('a1', 'b2', 'c2', 'd1.txt'),
        path.join('a2.txt'),
        path.join('a1', 'b1', 'c1', 'd1.txt'),
        path.join('a1', 'b1', 'c2', 'd1.txt'),
        path.join('a1', 'b1.txt'),
        path.join('a2', 'b1', 'c2.txt'),
        path.join('a1', 'b1', 'c2', 'd3.txt'),
        path.join('a1', 'b2', 'c1', 'd1.txt'),
        path.join('a1.txt'),
        path.join('a2', 'b1', 'c1.txt'),
        path.join('a2', 'b1.txt')
      ].slice();
    });
  
    describe('byShortPath', function() {
      it('sorts an array of filepaths, shortest first', function() {
        files.sort(util.byShortPath);
  
        var expected = [
          path.join('a1.txt'),
          path.join('a2.txt'),
          path.join('a1', 'b1.txt'),
          path.join('a2', 'b1.txt'),
          path.join('a2', 'b1', 'c1.txt'),
          path.join('a2', 'b1', 'c2.txt'),
          path.join('a1', 'b1', 'c1', 'd1.txt'),
          path.join('a1', 'b1', 'c2', 'd1.txt'),
          path.join('a1', 'b1', 'c2', 'd2.txt'),
          path.join('a1', 'b1', 'c2', 'd3.txt'),
          path.join('a1', 'b2', 'c1', 'd1.txt'),
          path.join('a1', 'b2', 'c2', 'd1.txt')
        ];
  
        assert.deepEqual(files, expected);
      });
    });
  
    describe('uniqueDirs', function() {
  
      it('gets a list of unique directory paths', function() {
        // not comparing order here, so we sort both
        var got = util.uniqueDirs(files).sort();
  
        var expected = [
          '.',
          'a1',
          'a2',
          path.join('a1', 'b1'),
          path.join('a1', 'b1', 'c1'),
          path.join('a1', 'b1', 'c2'),
          path.join('a1', 'b2'),
          path.join('a1', 'b2', 'c1'),
          path.join('a1', 'b2', 'c2'),
          path.join('a2', 'b1')
        ].sort();
  
        assert.deepEqual(got, expected);
      });
  
    });
  
    describe('dirsToCreate', function() {
  
      it('gets a sorted list of directories to create', function() {
        var got = util.dirsToCreate(files);
  
        var expected = [
          '.',
          'a1',
          'a2',
          path.join('a1', 'b1'),
          path.join('a1', 'b2'),
          path.join('a2', 'b1'),
          path.join('a1', 'b1', 'c1'),
          path.join('a1', 'b1', 'c2'),
          path.join('a1', 'b2', 'c1'),
          path.join('a1', 'b2', 'c2')
        ];
  
        assert.deepEqual(got, expected);
      });
  
    });
  
  });
  