| Index: test/mjsunit/tools/profviz.js
|
| diff --git a/test/mjsunit/getter-in-prototype.js b/test/mjsunit/tools/profviz.js
|
| similarity index 52%
|
| copy from test/mjsunit/getter-in-prototype.js
|
| copy to test/mjsunit/tools/profviz.js
|
| index 01a3473ba9ea047aa1972eb383ef75836b8becb3..3a14f4e6beb00fd45d1e9b68686a20290474a967 100644
|
| --- a/test/mjsunit/getter-in-prototype.js
|
| +++ b/test/mjsunit/tools/profviz.js
|
| @@ -25,54 +25,59 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -// Test that exceptions are not thrown when setting properties on object
|
| -// that have only a getter in a prototype object, except when we are in strict
|
| -// mode where exceptsions should be thrown.
|
| +// Load implementations from <project root>/tools.
|
| +// Files: tools/csvparser.js tools/splaytree.js tools/codemap.js
|
| +// Files: tools/consarray.js tools/profile.js tools/profile_view.js
|
| +// Files: tools/logreader.js tools/tickprocessor.js
|
| +// Files: tools/profviz/composer.js
|
| +// Env: TEST_FILE_NAME
|
|
|
| -var o = {};
|
| -var p = {};
|
| -p.__defineGetter__('x', function(){});
|
| -p.__defineGetter__(0, function(){});
|
| -o.__proto__ = p;
|
| +assertEquals('string', typeof TEST_FILE_NAME);
|
| +var path_length = TEST_FILE_NAME.lastIndexOf('/');
|
| +if (path_length == -1) {
|
| + path_length = TEST_FILE_NAME.lastIndexOf('\\');
|
| +}
|
| +assertTrue(path_length != -1);
|
|
|
| -assertDoesNotThrow("o.x = 42");
|
| -assertDoesNotThrow("o[0] = 42");
|
| +var path = TEST_FILE_NAME.substr(0, path_length + 1);
|
| +var input_file = path + "profviz-test.log";
|
| +var reference_file = path + "profviz-test.default";
|
|
|
| -assertThrows(function() { 'use strict'; o.x = 42; });
|
| -assertThrows(function() { 'use strict'; o[0] = 42; });
|
| +var content_lines = read(input_file).split("\n");
|
| +var line_cursor = 0;
|
| +var output_lines = [];
|
|
|
| -function f() {
|
| - with(o) {
|
| - x = 42;
|
| - }
|
| +function input() {
|
| + return content_lines[line_cursor++];
|
| }
|
|
|
| -assertDoesNotThrow(f);
|
| -
|
| -__proto__ = p;
|
| -function g() {
|
| - eval('1');
|
| - x = 42;
|
| +function output(line) {
|
| + output_lines.push(line);
|
| }
|
|
|
| -function g_strict() {
|
| - 'use strict';
|
| - eval('1');
|
| - x = 42;
|
| +function set_range(start, end) {
|
| + range_start = start;
|
| + range_end = end;
|
| }
|
|
|
| -assertDoesNotThrow(g);
|
| -assertThrows(g_strict);
|
| +var distortion = 4500 / 1000000;
|
| +var resx = 1600;
|
| +var resy = 600;
|
|
|
| -__proto__ = p;
|
| -function g2() {
|
| - this[0] = 42;
|
| -}
|
| +var psc = new PlotScriptComposer(resx, resy);
|
| +psc.collectData(input, distortion);
|
| +psc.findPlotRange(undefined, undefined, set_range);
|
| +var objects = psc.assembleOutput(output);
|
|
|
| -function g2_strict() {
|
| - 'use strict';
|
| - this[0] = 42;
|
| -}
|
| +output("# start: " + range_start);
|
| +output("# end: " + range_end);
|
| +output("# objects: " + objects);
|
| +
|
| +var create_baseline = false;
|
|
|
| -assertDoesNotThrow(g2);
|
| -assertThrows(g2_strict);
|
| +if (create_baseline) {
|
| + print(JSON.stringify(output_lines, null, 2));
|
| +} else {
|
| + assertArrayEquals(output_lines,
|
| + JSON.parse(read(reference_file)));
|
| +}
|
|
|