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