You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.7 KiB
99 lines
2.7 KiB
// Copyright 2019 PDFium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Treat two distinct objects with the same members as equal, e.g. in JS
|
|
// ([0, 1] == [0, 1]) evaluates to false. Without this function, we can't
|
|
// supply an expected result of object/array type for our tests.
|
|
function kindaSortaEqual(arg1, arg2) {
|
|
if (arg1 == arg2) {
|
|
return true;
|
|
}
|
|
if (typeof arg1 != "object") {
|
|
return false;
|
|
}
|
|
if (typeof arg2 != "object") {
|
|
return false;
|
|
}
|
|
return arg1.toString() == arg2.toString();
|
|
}
|
|
|
|
function testReadProperty(that, prop, expected) {
|
|
try {
|
|
var actual = that[prop];
|
|
if (kindaSortaEqual(actual, expected)) {
|
|
app.alert('PASS: ' + prop + ' = ' + actual);
|
|
} else {
|
|
app.alert('FAIL: ' + prop + ' = ' + actual + ', expected = ' + expected);
|
|
}
|
|
} catch (e) {
|
|
app.alert('ERROR: ' + e.toString());
|
|
}
|
|
}
|
|
|
|
function testUnreadableProperty(that, prop) {
|
|
try {
|
|
var value = that[prop];
|
|
app.alert('FAIL: ' + prop + ', expected to throw');
|
|
} catch (e) {
|
|
app.alert('PASS: ' + prop + ' threw ' + e.toString());
|
|
}
|
|
}
|
|
|
|
function testWriteProperty(that, prop, newValue) {
|
|
try {
|
|
that[prop] = newValue;
|
|
var actual = that[prop];
|
|
if (kindaSortaEqual(actual, newValue)) {
|
|
app.alert('PASS: ' + prop + ' = ' + actual);
|
|
} else {
|
|
app.alert('FAIL: ' + prop + ' = ' + actual + ', expected = ' + newValue);
|
|
}
|
|
} catch (e) {
|
|
app.alert('ERROR: ' + e.toString());
|
|
}
|
|
}
|
|
|
|
function testWriteIgnoredProperty(that, prop, expected, newValue) {
|
|
try {
|
|
that[prop] = newValue;
|
|
var actual = that[prop];
|
|
if (kindaSortaEqual(actual, expected)) {
|
|
app.alert('PASS: ' + prop + ' = ' + actual);
|
|
} else {
|
|
app.alert('FAIL: ' + prop + ' = ' + actual + ', expected = ' + expected);
|
|
}
|
|
} catch (e) {
|
|
app.alert('ERROR: ' + e.toString());
|
|
}
|
|
}
|
|
|
|
function testUnwritableProperty(that, prop, newValue) {
|
|
try {
|
|
that[prop] = newValue;
|
|
app.alert('FAIL: ' + prop + ' = ' + newValue + ', expected to throw');
|
|
} catch (e) {
|
|
app.alert('PASS: ' + prop + ' threw ' + e.toString());
|
|
}
|
|
}
|
|
|
|
function testRWProperty(that, prop, expected, newValue) {
|
|
testReadProperty(that, prop, expected);
|
|
testWriteProperty(that, prop, newValue);
|
|
}
|
|
|
|
function testRIProperty(that, prop, expected, newValue) {
|
|
testReadProperty(that, prop, expected);
|
|
testWriteIgnoredProperty(that, prop, expected, newValue);
|
|
}
|
|
|
|
function testROProperty(that, prop, expected) {
|
|
testReadProperty(that, prop, expected);
|
|
testUnwritableProperty(that, prop, 42);
|
|
}
|
|
|
|
function testXXProperty(that, prop) {
|
|
testUnreadableProperty(that, prop);
|
|
testUnwritableProperty(that, prop, 42);
|
|
}
|