|  | /* | 
|  | * 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(); } ); | 
|  | }); | 
|  | }); |