1ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik// Copyright 2015 The Chromium Authors. All rights reserved.
2ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik// Use of this source code is governed by a BSD-style license that can be
3ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik// found in the LICENSE file.
4ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik'use strict';
5ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik
6ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craikvar assert = {
7ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  equal: function(first, second) {
8ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik    if (first !== second) {
9ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik      throw new Error('Assertion error: ' + JSON.stringify(first) +
10ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik          ' !== ' + JSON.stringify(second));
11ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik    }
12ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  }
13ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik};
14ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik
15ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craikfunction runTests() {
16ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik
17ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  var test_os_client = {
18ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik    currentWorkingDirectory: '/a/b',
19ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik    exists: function(fileName) {
20ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik      return fileName === '/a/b/file_exists.html';
21ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik    }
22ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  };
23ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik
24ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  var path_utils = new PathUtils(test_os_client);
25ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.join('a', 'b'), 'a/b');
26ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.join('/a', 'b'), '/a/b');
27ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.join('/a/', 'b/'), '/a/b/');
28ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.join('/a', '/b/'), '/b/');
29ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.join('/a', './b/'), '/a/./b/');
30ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.join('/a/', './b/'), '/a/./b/');
31ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.join('../', 'b'), '../b');
32ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.join('../', 'b/'), '../b/');
33ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.join('a', 'b'), 'a/b');
34ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik
35ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.absPath('c'), '/a/b/c');
36ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.absPath('./c'), '/a/b/c');
37ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.absPath('./c/d'), '/a/b/c/d');
38ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik
39ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.relPath('/a/b/c', '/a/b'), 'c');
40ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik
41ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.relPath('/a/b/c/', '/a/b/c/'), '.');
42ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.relPath('/a/b/c', '/a/b/c/'), '.');
43ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.relPath('/a/b/c/', '/a/b/c'), '.');
44ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.relPath('/a/b/c', '/a/b/c'), '.');
45ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik
46ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.relPath('/a/b/c', '/a'), 'b/c');
47ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.relPath('/a/b/c', '/a/'), 'b/c');
48ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik
49ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.relPath('/a/b/c', '/b/c/'), '../../a/b/c');
50ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.relPath('/a/b/c', '/b/c'), '../../a/b/c');
51ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.relPath('/a/b/c/', '/b/c/'), '../../a/b/c');
52ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.relPath('/a/b/c/', '/b/c'), '../../a/b/c');
53ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik
54ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik
55ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.exists('/a/b/file_exists.html'), true);
56ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.exists('file_exists.html'), true);
57ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.exists('./file_exists.html'), true);
58ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik  assert.equal(path_utils.exists('/a/file_does_not_exists.html'), false);
59ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik}
60