| /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ |
| /* This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| |
| // See http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Iterators_and_Generators |
| |
| //----------------------------------------------------------------------------- |
| var BUGNUMBER = "410725"; |
| var summary = "Test of the global Iterator constructor"; |
| var actual, expect; |
| |
| printBugNumber(BUGNUMBER); |
| printStatus(summary); |
| |
| /************** |
| * BEGIN TEST * |
| **************/ |
| |
| function iteratorToArray(iterator) { |
| var result = []; |
| for (var i in iterator) { |
| result[result.length] = i; |
| } |
| return result.sort(); |
| } |
| |
| var obj = {a:1, b:2}; |
| |
| reportCompare('["a", "b"]', |
| uneval(iteratorToArray(obj)), |
| 'uneval(iteratorToArray(obj))'); |
| |
| reportCompare('[["a", 1], ["b", 2]]', |
| uneval(iteratorToArray(Iterator(obj))), |
| 'uneval(iteratorToArray(Iterator(obj)))'); |
| |
| reportCompare('[["a", 1], ["b", 2]]', |
| uneval(iteratorToArray(new Iterator(obj))), |
| 'uneval(iteratorToArray(new Iterator(obj)))'); |
| |
| reportCompare('[["a", 1], ["b", 2]]', |
| uneval(iteratorToArray(Iterator(obj,false))), |
| 'uneval(iteratorToArray(Iterator(obj,false)))'); |
| |
| reportCompare('[["a", 1], ["b", 2]]', |
| uneval(iteratorToArray(new Iterator(obj,false))), |
| 'uneval(iteratorToArray(new Iterator(obj,false)))'); |
| |
| reportCompare('["a", "b"]', |
| uneval(iteratorToArray(Iterator(obj,true))), |
| 'uneval(iteratorToArray(Iterator(obj,true)))'); |
| |
| reportCompare('["a", "b"]', |
| uneval(iteratorToArray(new Iterator(obj,true))), |
| 'uneval(iteratorToArray(new Iterator(obj,true)))'); |
| |
| var flag; |
| var obji = {a:1, b:2}; |
| obji.__iterator__ = function (b) { flag = b; yield -1; yield -2; } |
| |
| flag = -1; |
| reportCompare('[-1, -2]', |
| uneval(iteratorToArray(obji)), |
| 'uneval(iteratorToArray(obji))'); |
| reportCompare(true, flag, 'uneval(iteratorToArray(obji)) flag'); |
| |
| flag = -1; |
| reportCompare('[-1, -2]', |
| uneval(iteratorToArray(Iterator(obji))), |
| 'uneval(iteratorToArray(Iterator(obji)))'); |
| reportCompare(false, flag, 'uneval(iteratorToArray(Iterator(obji))) flag'); |
| |
| flag = -1; |
| reportCompare('[-1, -2]', |
| uneval(iteratorToArray(new Iterator(obji))), |
| 'uneval(iteratorToArray(new Iterator(obji)))'); |
| reportCompare(false, flag, 'uneval(iteratorToArray(new Iterator(obji))) flag'); |
| |
| flag = -1; |
| reportCompare('[-1, -2]', |
| uneval(iteratorToArray(Iterator(obji,false))), |
| 'uneval(iteratorToArray(Iterator(obji,false)))'); |
| reportCompare(false, flag, 'uneval(iteratorToArray(Iterator(obji,false))) flag'); |
| |
| flag = -1; |
| reportCompare('[-1, -2]', |
| uneval(iteratorToArray(new Iterator(obji,false))), |
| 'uneval(iteratorToArray(new Iterator(obji,false)))'); |
| reportCompare(false, flag, 'uneval(iteratorToArray(new Iterator(obji,false))) flag'); |
| |
| flag = -1; |
| reportCompare('[-1, -2]', |
| uneval(iteratorToArray(Iterator(obji,true))), |
| 'uneval(iteratorToArray(Iterator(obji,true)))'); |
| reportCompare(true, flag, 'uneval(iteratorToArray(Iterator(obji,true))) flag'); |
| |
| flag = -1; |
| reportCompare('[-1, -2]', |
| uneval(iteratorToArray(new Iterator(obji,true))), |
| 'uneval(iteratorToArray(new Iterator(obji,true)))'); |
| reportCompare(true, flag, 'uneval(iteratorToArray(new Iterator(obji,true))) flag'); |