blob: 64608fecf87b8040b49d0dec5ad16d0f16f0d22a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/* jshint -W100 */
/*
* JavaScript test suite for ThriftTest.thrift. These tests
* will run only with jQuery (-gen js:jquery) Apache Thrift
* interfaces. To create client code:
* $ thrift -gen js:jquery ThriftTest.thrift
*
* See also:
* ++ test.js for generic tests
* ++ test-nojq.js for "-gen js" only tests
*/
//////////////////////////////////
//jQuery asynchronous tests
jQuery.ajaxSetup({ timeout: 0 });
$(document).ajaxError( function() { QUnit.start(); } );
module("jQ Async Manual");
test("testI32", function() {
expect( 2 );
QUnit.stop();
var transport = new Thrift.Transport();
var protocol = new Thrift.Protocol(transport);
var client = new ThriftTest.ThriftTestClient(protocol);
var jqxhr = jQuery.ajax({
url: "/service",
data: client.send_testI32(Math.pow(-2,31)),
type: "POST",
cache: false,
dataType: "text",
success: function(res){
transport.setRecvBuffer( res );
equal(client.recv_testI32(), Math.pow(-2,31));
},
error: function() { ok(false); },
complete: function() {
ok(true);
QUnit.start();
}
});
});
test("testI64", function() {
expect( 2 );
QUnit.stop();
var transport = new Thrift.Transport();
var protocol = new Thrift.Protocol(transport);
var client = new ThriftTest.ThriftTestClient(protocol);
jQuery.ajax({
url: "/service",
//This is usually 2^61 but JS cannot represent anything over 2^52 accurately
data: client.send_testI64(Math.pow(-2,52)),
type: "POST",
cache: false,
dataType: "text",
success: function(res){
transport.setRecvBuffer( res );
//This is usually 2^61 but JS cannot represent anything over 2^52 accurately
equal(client.recv_testI64(), Math.pow(-2,52));
},
error: function() { ok(false); },
complete: function() {
ok(true);
QUnit.start();
}
});
});
module("jQ Async");
test("I32", function() {
expect( 3 );
QUnit.stop();
client.testI32(Math.pow(2,30), function(result) {
equal(result, Math.pow(2,30));
QUnit.start();
});
QUnit.stop();
var jqxhr = client.testI32(Math.pow(-2,31), function(result) {
equal(result, Math.pow(-2,31));
});
jqxhr.success(function(result) {
equal(result, Math.pow(-2,31));
QUnit.start();
});
});
test("I64", function() {
expect( 4 );
QUnit.stop();
//This is usually 2^60 but JS cannot represent anything over 2^52 accurately
client.testI64(Math.pow(2,52), function(result) {
equal(result, Math.pow(2,52));
QUnit.start();
});
QUnit.stop();
//This is usually 2^60 but JS cannot represent anything over 2^52 accurately
client.testI64(Math.pow(-2,52), function(result) {
equal(result, Math.pow(-2,52));
})
.error( function(xhr, status, e) { ok(false, e.message); } )
.success(function(result) {
//This is usually 2^60 but JS cannot represent anything over 2^52 accurately
equal(result, Math.pow(-2,52));
})
.complete(function() {
ok(true);
QUnit.start();
});
});
test("Xception", function() {
expect( 2 );
QUnit.stop();
var dfd = client.testException("Xception", function(result) {
ok(false);
QUnit.start();
})
.error(function(xhr, status, e){
equal(e.errorCode, 1001);
equal(e.message, "Xception");
//QUnit.start();
//Note start is not required here because:
//$(document).ajaxError( function() { QUnit.start(); } );
});
});