1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/tests/js1_7/extensions/iterator-ctor.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,102 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +// See http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Iterators_and_Generators 1.10 + 1.11 +//----------------------------------------------------------------------------- 1.12 +var BUGNUMBER = "410725"; 1.13 +var summary = "Test of the global Iterator constructor"; 1.14 +var actual, expect; 1.15 + 1.16 +printBugNumber(BUGNUMBER); 1.17 +printStatus(summary); 1.18 + 1.19 +/************** 1.20 + * BEGIN TEST * 1.21 + **************/ 1.22 + 1.23 +function iteratorToArray(iterator) { 1.24 + var result = []; 1.25 + for (var i in iterator) { 1.26 + result[result.length] = i; 1.27 + } 1.28 + return result.sort(); 1.29 +} 1.30 + 1.31 +var obj = {a:1, b:2}; 1.32 + 1.33 +reportCompare('["a", "b"]', 1.34 + uneval(iteratorToArray(obj)), 1.35 + 'uneval(iteratorToArray(obj))'); 1.36 + 1.37 +reportCompare('[["a", 1], ["b", 2]]', 1.38 + uneval(iteratorToArray(Iterator(obj))), 1.39 + 'uneval(iteratorToArray(Iterator(obj)))'); 1.40 + 1.41 +reportCompare('[["a", 1], ["b", 2]]', 1.42 + uneval(iteratorToArray(new Iterator(obj))), 1.43 + 'uneval(iteratorToArray(new Iterator(obj)))'); 1.44 + 1.45 +reportCompare('[["a", 1], ["b", 2]]', 1.46 + uneval(iteratorToArray(Iterator(obj,false))), 1.47 + 'uneval(iteratorToArray(Iterator(obj,false)))'); 1.48 + 1.49 +reportCompare('[["a", 1], ["b", 2]]', 1.50 + uneval(iteratorToArray(new Iterator(obj,false))), 1.51 + 'uneval(iteratorToArray(new Iterator(obj,false)))'); 1.52 + 1.53 +reportCompare('["a", "b"]', 1.54 + uneval(iteratorToArray(Iterator(obj,true))), 1.55 + 'uneval(iteratorToArray(Iterator(obj,true)))'); 1.56 + 1.57 +reportCompare('["a", "b"]', 1.58 + uneval(iteratorToArray(new Iterator(obj,true))), 1.59 + 'uneval(iteratorToArray(new Iterator(obj,true)))'); 1.60 + 1.61 +var flag; 1.62 +var obji = {a:1, b:2}; 1.63 +obji.__iterator__ = function (b) { flag = b; yield -1; yield -2; } 1.64 + 1.65 +flag = -1; 1.66 +reportCompare('[-1, -2]', 1.67 + uneval(iteratorToArray(obji)), 1.68 + 'uneval(iteratorToArray(obji))'); 1.69 +reportCompare(true, flag, 'uneval(iteratorToArray(obji)) flag'); 1.70 + 1.71 +flag = -1; 1.72 +reportCompare('[-1, -2]', 1.73 + uneval(iteratorToArray(Iterator(obji))), 1.74 + 'uneval(iteratorToArray(Iterator(obji)))'); 1.75 +reportCompare(false, flag, 'uneval(iteratorToArray(Iterator(obji))) flag'); 1.76 + 1.77 +flag = -1; 1.78 +reportCompare('[-1, -2]', 1.79 + uneval(iteratorToArray(new Iterator(obji))), 1.80 + 'uneval(iteratorToArray(new Iterator(obji)))'); 1.81 +reportCompare(false, flag, 'uneval(iteratorToArray(new Iterator(obji))) flag'); 1.82 + 1.83 +flag = -1; 1.84 +reportCompare('[-1, -2]', 1.85 + uneval(iteratorToArray(Iterator(obji,false))), 1.86 + 'uneval(iteratorToArray(Iterator(obji,false)))'); 1.87 +reportCompare(false, flag, 'uneval(iteratorToArray(Iterator(obji,false))) flag'); 1.88 + 1.89 +flag = -1; 1.90 +reportCompare('[-1, -2]', 1.91 + uneval(iteratorToArray(new Iterator(obji,false))), 1.92 + 'uneval(iteratorToArray(new Iterator(obji,false)))'); 1.93 +reportCompare(false, flag, 'uneval(iteratorToArray(new Iterator(obji,false))) flag'); 1.94 + 1.95 +flag = -1; 1.96 +reportCompare('[-1, -2]', 1.97 + uneval(iteratorToArray(Iterator(obji,true))), 1.98 + 'uneval(iteratorToArray(Iterator(obji,true)))'); 1.99 +reportCompare(true, flag, 'uneval(iteratorToArray(Iterator(obji,true))) flag'); 1.100 + 1.101 +flag = -1; 1.102 +reportCompare('[-1, -2]', 1.103 + uneval(iteratorToArray(new Iterator(obji,true))), 1.104 + 'uneval(iteratorToArray(new Iterator(obji,true)))'); 1.105 +reportCompare(true, flag, 'uneval(iteratorToArray(new Iterator(obji,true))) flag');