159 lines
4.5 KiB
JavaScript
159 lines
4.5 KiB
JavaScript
/*
|
|
* 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 });
|
|
|
|
QUnit.module('jQ Async Manual');
|
|
|
|
QUnit.test('testI32', function(assert) {
|
|
assert.expect(2);
|
|
const done = assert.async(2);
|
|
|
|
const transport = new Thrift.Transport();
|
|
const protocol = new Thrift.Protocol(transport);
|
|
const client = new ThriftTest.ThriftTestClient(protocol);
|
|
|
|
const 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);
|
|
assert.equal(client.recv_testI32(), Math.pow(-2, 31));
|
|
done();
|
|
},
|
|
error: function() { assert.ok(false); },
|
|
complete: function() {
|
|
assert.ok(true);
|
|
done();
|
|
}
|
|
});
|
|
});
|
|
|
|
QUnit.test('testI64', function(assert) {
|
|
assert.expect(2);
|
|
const done = assert.async(2);
|
|
|
|
const transport = new Thrift.Transport();
|
|
const protocol = new Thrift.Protocol(transport);
|
|
const 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
|
|
assert.equal(client.recv_testI64(), Math.pow(-2, 52));
|
|
done();
|
|
},
|
|
error: function() { assert.ok(false); },
|
|
complete: function() {
|
|
assert.ok(true);
|
|
done();
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
QUnit.module('jQ Async');
|
|
QUnit.test('I32', function(assert) {
|
|
assert.expect(3);
|
|
|
|
const done = assert.async(3);
|
|
client.testI32(Math.pow(2, 30), function(result) {
|
|
assert.equal(result, Math.pow(2, 30));
|
|
done();
|
|
});
|
|
|
|
const jqxhr = client.testI32(Math.pow(-2, 31), function(result) {
|
|
assert.equal(result, Math.pow(-2, 31));
|
|
done();
|
|
});
|
|
|
|
jqxhr.success(function(result) {
|
|
assert.equal(result, Math.pow(-2, 31));
|
|
done();
|
|
});
|
|
});
|
|
|
|
QUnit.test('I64', function(assert) {
|
|
assert.expect(4);
|
|
|
|
const done = assert.async(4);
|
|
//This is usually 2^60 but JS cannot represent anything over 2^52 accurately
|
|
client.testI64(Math.pow(2, 52), function(result) {
|
|
assert.equal(result, Math.pow(2, 52));
|
|
done();
|
|
});
|
|
|
|
//This is usually 2^60 but JS cannot represent anything over 2^52 accurately
|
|
client.testI64(Math.pow(-2, 52), function(result) {
|
|
assert.equal(result, Math.pow(-2, 52));
|
|
done();
|
|
})
|
|
.error(function(xhr, status, e) { assert.ok(false, e.message); })
|
|
.success(function(result) {
|
|
//This is usually 2^60 but JS cannot represent anything over 2^52 accurately
|
|
assert.equal(result, Math.pow(-2, 52));
|
|
done();
|
|
})
|
|
.complete(function() {
|
|
assert.ok(true);
|
|
done();
|
|
});
|
|
});
|
|
|
|
QUnit.test('Xception', function(assert) {
|
|
assert.expect(2);
|
|
|
|
const done = assert.async(2);
|
|
|
|
const dfd = client.testException('Xception', function(result) {
|
|
assert.ok(false);
|
|
done();
|
|
})
|
|
.error(function(xhr, status, e) {
|
|
assert.equal(e.errorCode, 1001);
|
|
assert.equal(e.message, 'Xception');
|
|
done();
|
|
$(document).ajaxError( function() { done(); } );
|
|
});
|
|
});
|