/* -*- Mode: java; tab-width:8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is JavaScript Engine testing utilities. * * The Initial Developer of the Original Code is * Mozilla Foundation. * Portions created by the Initial Developer are Copyright (C) 2006 * the Initial Developer. All Rights Reserved. * * Contributor(s): Biju * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ gTestfile = '11.1.4-08.js'; var summary = "11.1.4 - XML Initializer - {} Expressions - 08"; var BUGNUMBER = 325750; var actual = ''; var expect = ''; printBugNumber(BUGNUMBER); START(summary); printStatus('E4X: inconsistencies in the use of {} syntax Part Deux'); // https://bugzilla.mozilla.org/show_bug.cgi?id=318922 // https://bugzilla.mozilla.org/show_bug.cgi?id=321549 var exprs = []; var iexpr; exprs.push({expr: 'b=\'\\\'\';\na=\n x\n;', valid: false}); exprs.push({expr: 'b=\'\\\'\';\na=\n x\n;', valid: false}); exprs.push({expr: 'b=\'b\';\na=\n x\n;', valid: true}); exprs.push({expr: 'b=\'b\';\na=\n x\n;', valid: true}); exprs.push({expr: 'b=\'b\';\na=\n x\n;', valid: true}); exprs.push({expr: 'b=\'b\';\na=\n x\n;', valid: true}); exprs.push({expr: 'b=\'b\';\na=\n <{b}b>x\n;', valid: true}); exprs.push({expr: 'b=\'b\';\na=\n x\n;', valid: true}); exprs.push({expr: 'b=\'b\';\na=\n <{b+\'b\'}>x\n;', valid: true}); exprs.push({expr: 'b=\'b\';\na=\n <{b}b>x\n;', valid: true}); exprs.push({expr: 'b=\'c\';\na=\n x\n;', valid: false}); exprs.push({expr: 'b=\'c\';\na=\n x\n;', valid: true}); exprs.push({expr: 'b=\'c\';\na=\n x\n;', valid: false}); exprs.push({expr: 'b=\'c\';\na=\n x\n;', valid: true}); exprs.push({expr: 'b=\'c\';\na=\n x\n;', valid: true}); exprs.push({expr: 'b=\'c\';\na=\n x\n;', valid: true}); exprs.push({expr: 'b=\'c\';\na=\n x\n;', valid: true}); exprs.push({expr: 'm=1;\na=\n x {m} z\n;', valid: true}); exprs.push({expr: 'm=1;\na=new XML(m);', valid: true}); exprs.push({expr: 'm=o;\na=\n x {m} z\n;', valid: true}); exprs.push({expr: 'm=o;\na=\n <{m}>x z\n;', valid: false}); exprs.push({expr: 'm=o;\na=\n <{m}>x z\n;', valid: true}); exprs.push({expr: 'm=[1,\'x\'];\na=\n x {m} z\n;', valid: true}); exprs.push({expr: 'm=[1,\'x\'];\na=new XML(m);', valid: false}); exprs.push({expr: 'm=[1];\na=new XML(m);', valid: false}); exprs.push({expr: 'm=\'o\';\na=\n x {m} z\n;', valid: true}); exprs.push({expr: 'm=\'o\';\na=\n x {m} z\n;', valid: true}); exprs.push({expr: 'm=\'x\';\na=new XML(m);', valid: true}); exprs.push({expr: 'm=new Date();\na=new XML(m);', valid: false}); exprs.push({expr: 'm=new Number(\'1\');\na=new XML(m);', valid: true}); exprs.push({expr: 'm=new String(\'x\');\na=new XML(\'\\n {m}\\n\');', valid: true}); exprs.push({expr: 'm=new String(\'x\');\na=new XML(m);', valid: true}); exprs.push({expr: 'm={a:1,b:\'x\'};\na=\n x {m} z\n;', valid: true}); exprs.push({expr: 'm={a:1,b:\'x\'};\na=new XML(m);', valid: false}); exprs.push({expr: 'p="p";\nu=\'http://a.uri/\';\na=\n x\n;', valid: true}); exprs.push({expr: 'p="p";\nu=\'http://a.uri/\';\na=\n x\n;', valid: true}); exprs.push({expr: 'p="pp";\nu=\'http://a.uri/\';\na=\n x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\na=\n x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\na=\n x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\na=\n <{u}:b>x\n;', valid: false}); exprs.push({expr: 'u=\'http://a.uri/\';\na=\n x\n;', valid: false}); exprs.push({expr: 'u=\'http://a.uri/\';\nn=new Namespace("p",u);\na=\n <{u}:b>x\n;', valid: false}); exprs.push({expr: 'u=\'http://a.uri/\';\nn=new Namespace("p",u);\na=\n <{u}:b>x\n;', valid: false}); exprs.push({expr: 'u=\'http://a.uri/\';\nn=new Namespace("p",u);\na=\n x\n;', valid: false}); exprs.push({expr: 'u=\'http://a.uri/\';\nn=new Namespace("p",u);\na=\n <{n}:b>x\n;', valid: false}); exprs.push({expr: 'u=\'http://a.uri/\';\nn=new Namespace(u);\na=\n x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\nn=new Namespace(u);\na=\n <{n}:b>x\n;', valid: false}); exprs.push({expr: 'u=\'http://a.uri/\';\nn=new Namespace(u);\na=\n x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\nn=new Namespace(u);\na=\n <{n}:b>x\n;', valid: false}); exprs.push({expr: 'u=\'http://a.uri/\';\nn=new Namespace(u);\na=\n <{n}:b>x\n;', valid: false}); exprs.push({expr: 'u=\'http://a.uri/\';\np=\'p\';\na=\n <{p}:b>x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\np=\'p\';\na=\n x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\np=\'p\';\na=\n <{p}p:b>x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\np=\'p\';\nns="ns";\na=\n <{p}p:b>x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\np=\'p\';\nns="xmlns";\na=\n <{p}p:b>x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\np=\'p\';\nxml="xml";\na=\n <{p}p:b>x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\np=\'pp\';\na=\n <{p}:b>x\n;', valid: true}); exprs.push({expr: 'u=\'http://a.uri/\';\nu2=\'http://uri2.sameprefix/\';\nn=new Namespace(\'p\',u2);\na=\n <{n}:b>x\n;', valid: false}); // This should always fail for (iexpr = 0; iexpr < exprs.length; ++iexpr) { evalStr(exprs, iexpr); } END(); function evalStr(exprs, iexpr) { var value; var valid; var passfail; var obj = exprs[iexpr]; try { value = eval(obj.expr).toXMLString(); valid = true; } catch(ex) { value = ex + ''; valid = false; } passfail = (valid === obj.valid); msg = iexpr + ': ' + (passfail ? 'PASS':'FAIL') + ' expected: ' + (obj.valid ? 'valid':'invalid') + ', actual: ' + (valid ? 'valid':'invalid') + '\n' + 'input: ' + '\n' + obj.expr + '\n' + 'output: ' + '\n' + value + '\n\n'; printStatus(msg); TEST(iexpr, obj.valid, valid); return passfail; }