-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenv.js
More file actions
81 lines (70 loc) · 2.61 KB
/
Copy pathenv.js
File metadata and controls
81 lines (70 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
document = require("jsdom").jsdom("<html><head></head><body></body></html>");
window = document.createWindow();
navigator = window.navigator;
require("../lib/sizzle/sizzle");
Sizzle = window.Sizzle;
process.env.TZ = "America/Los_Angeles";
var assert = require("assert");
assert.inDelta = function (actual, expected, delta, message) {
var lower = expected - delta;
var upper = expected + delta;
if (actual != +actual || actual < lower || actual > upper) {
assert.fail(actual, expected, message || "expected {actual} to be in within *" + delta.toString() + "* of {expected}", null, assert.inDelta);
}
};
assert.domNull = function(actual, message) {
if (actual !== null) {
assert.fail(actual+"", null, message || "expected null, got {actual}", "===", assert.domNull);
}
};
assert.domEqual = function(actual, expected, message) {
if (actual !== expected) {
assert.fail(actual+"", expected+"", message || "expected {expected}, got {actual}", "===", assert.domEqual);
}
};
assert.rgbEqual = function(actual, r, g, b, message) {
if (actual.r !== r || actual.g !== g || actual.b !== b) {
assert.fail("rgb(" + actual.r + "," + actual.g + "," + actual.b + ")", "rgb(" + r + ", " + g + ", " + b + ")", message || "expected {expected}, got {actual}", "===", assert.rgbEqual);
}
};
assert.hslEqual = function(actual, h, s, l, message) {
if (Math.abs(actual.h - h) > 1e-6 || Math.abs(actual.s - s) > 1e-6 || Math.abs(actual.l - l) > 1e-6) {
assert.fail(actual+"", "hsl(" + h + "," + (s * 100) + "%," + (l * 100) + "%)", message || "expected {expected}, got {actual}", null, assert.hslEqual);
}
};
assert.pathEqual = function(actual, expected, message) {
if (!pathEqual(actual, expected)) {
assert.fail(actual, expected, message || "expected {expected}, got {actual}", null, assert.pathEqual);
}
};
function pathEqual(a, b) {
a = parsePath(a);
b = parsePath(b);
var n = a.length, i = -1, x, y;
if (n !== b.length) return false;
while (++i < n) {
x = a[i];
y = b[i];
if (typeof x === "string") {
if (x !== y) return false;
} else if (typeof y !== "number") {
return false;
} else if (Math.abs(x - y) > 1e-6) {
return false;
}
}
return true;
}
function parsePath(path) {
var re = /[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g, parts = [];
for (var i = 0, s0 = 0, s1, m; m = re.exec(path); ++i) {
if (m.index) {
var part = path.substring(s0, s1 = m.index);
if (!/^[, ]$/.test(part)) parts.push(part);
}
parts.push(parseFloat(m[0]));
s0 = re.lastIndex;
}
if (s0 < path.length) parts.push(path.substring(s0));
return parts;
}