Follow-on fix for bug 457825. Use sheet principal for agent and user sheets. r=dbaron...
[wine-gecko.git] / js / tests / lc2 / Methods / method-002.js
blob8a103b5073038bad3cec8e8b56e296d4eb28c04c
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* ***** BEGIN LICENSE BLOCK *****
3  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4  *
5  * The contents of this file are subject to the Mozilla Public License Version
6  * 1.1 (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  * http://www.mozilla.org/MPL/
9  *
10  * Software distributed under the License is distributed on an "AS IS" basis,
11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12  * for the specific language governing rights and limitations under the
13  * License.
14  *
15  * The Original Code is Mozilla Communicator client code, released
16  * March 31, 1998.
17  *
18  * The Initial Developer of the Original Code is
19  * Netscape Communications Corporation.
20  * Portions created by the Initial Developer are Copyright (C) 1998
21  * the Initial Developer. All Rights Reserved.
22  *
23  * Contributor(s):
24  *
25  * Alternatively, the contents of this file may be used under the terms of
26  * either the GNU General Public License Version 2 or later (the "GPL"), or
27  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28  * in which case the provisions of the GPL or the LGPL are applicable instead
29  * of those above. If you wish to allow use of your version of this file only
30  * under the terms of either the GPL or the LGPL, and not to allow others to
31  * use your version of this file under the terms of the MPL, indicate your
32  * decision by deleting the provisions above and replace them with the notice
33  * and other provisions required by the GPL or the LGPL. If you do not delete
34  * the provisions above, a recipient may use your version of this file under
35  * the terms of any one of the MPL, the GPL or the LGPL.
36  *
37  * ***** END LICENSE BLOCK ***** */
39 gTestfile = 'method-002.js';
41 /**
42    File Name:      method-002.js
43    Description:
45    Call a method of a JavaObject instance and verify that return value.
46    This is covered more thouroughly in the type conversion test cases.
48    @author     christine@netscape.com
49    @version    1.00
51 var SECTION = "LiveConnect Objects";
52 var VERSION = "1_3";
53 var TITLE   = "Invoking Java Methods";
55 startTest();
56 writeHeaderToLog( SECTION + " "+ TITLE);
58 //  All JavaObjects are of the type "object"
60 var E_TYPE = "object";
62 //  All JavaObjects [[Class]] property is JavaObject
63 var E_JSCLASS = "[object JavaObject]";
65 //  Create arrays of actual results (java_array) and
66 //  expected results (test_array).
68 var java_array = new Array();
69 var test_array = new Array();
71 var i = 0;
73 // method returns an object
75 var rect = new java.awt.Rectangle(1,2,3,4);
76 var size = rect.getSize();
78 new TestCase(
79   SECTION,
80   "var size = (new java.awt.Rectangle(1,2,3,4)).getSize(); "+
81   "size.getClass().equals(java.lang.Class.forName(\""+
82   "java.awt.Dimension\"))",
83   true,
84   size.getClass().equals(java.lang.Class.forName("java.awt.Dimension")));
86 new TestCase(
87   SECTION,
88   "size.width",
89   3,
90   size.width );
92 new TestCase(
93   SECTION,
94   "size.height",
95   4,
96   size.height );
98 // method returns void
99 var r = rect.setSize(5,6);
101 new TestCase(
102   SECTION,
103   "var r = rect.setSize(5,6); r",
104   void 0,
105   r );
107 // method returns a string
109 var string = new java.lang.String( "     hello     " );
110 s = string.trim()
112   new TestCase(
113     SECTION,
114     "var string = new java.lang.String(\"     hello     \"); "+
115     "var s = string.trim(); s.getClass().equals("+
116     "java.lang.Class.forName(\"java.lang.String\")",
117     true,
118     s.getClass().equals(java.lang.Class.forName("java.lang.String")) );
120 // method returns an int
121 new TestCase(
122   SECTION,
123   "s.length()",
124   5,
125   s.length() );
127 test();
129 function CompareValues( javaval, testval ) {
130   //  Check type, which should be E_TYPE
131   new TestCase( SECTION,
132                 "typeof (" + testval.description +" )",
133                 testval.type,
134                 javaval.type );
136   //  Check JavaScript class, which should be E_JSCLASS
137   new TestCase( SECTION,
138                 "(" + testval.description +" ).getJSClass()",
139                 testval.jsclass,
140                 javaval.jsclass );
141   // Check the JavaClass, which should be the same as the result as Class.forName(description).
142   new TestCase( SECTION,
143                 testval.description +".getClass().equals( " +
144                 "java.lang.Class.forName( '" + testval.classname +
145                 "' ) )",
146                 true,
147                 javaval.javaclass.equals( testval.javaclass ) );
149 function JavaValue( value ) {
150   this.type   = typeof value;
151   // Object.prototype.toString will show its JavaScript wrapper object.
152   value.__proto__.getJSClass = Object.prototype.toString;
153   this.jsclass = value.getJSClass();
154   this.javaclass = value.getClass();
155   return this;
157 function TestValue( description, classname ) {
158   this.description = description;
159   this.classname = classname;
160   this.type =  E_TYPE;
161   this.jsclass = E_JSCLASS;
162   this.javaclass = java.lang.Class.forName( classname );
163   return this;