From 60c7c5e2320028dc3103525e991e618650969b98 Mon Sep 17 00:00:00 2001 From: atanasovg Date: Mon, 12 May 2014 19:28:28 +0300 Subject: [PATCH] Updated the TKUnit class. Added missing http tests. --- Tests/TKUnit.ts | 53 +++++++++++++++++++++++- Tests/http_tests.ts | 78 +++++++++++++++++++++++++++++++++++- http/http_request.android.ts | 2 +- 3 files changed, 129 insertions(+), 4 deletions(-) diff --git a/Tests/TKUnit.ts b/Tests/TKUnit.ts index 97524c13d..1a2c18349 100644 --- a/Tests/TKUnit.ts +++ b/Tests/TKUnit.ts @@ -89,8 +89,57 @@ export var wait = function(ms) Foundation.NSRunLoop.currentRunLoop().runUntilDate(Foundation.NSDate.dateWithTimeIntervalSinceNow(ms / 1000)); } else if (Application.android) { - java.lang.Thread.sleep(long(ms)); - java.lang.Thread.yield(); + // java.lang.Thread.sleep(long(ms)); + // java.lang.Thread.yield(); + // TODO: Not yet fully implemented + // doModal(); + } +} + +var doModal = function () { + var clsMsgQueue = java.lang.Class.forName("android.os.MessageQueue"); + var clsMsg = java.lang.Class.forName("android.os.Message"); + + var nextMethod: java.lang.reflect.Method; + var methods = clsMsgQueue.getDeclaredMethods(); + var i; + for (i = 0; i < methods.length; i++) { + if (methods[i].getName() === "next") { + nextMethod = methods[i]; + break; + } + } + + nextMethod.setAccessible(true); + + var targetField; + var fields = clsMsg.getDeclaredFields(); + for (i = 0; i < fields.length; i++) { + if (fields[i].getName() === "target") { + targetField = fields[i]; + break; + } + } + + targetField.setAccessible(true); + + var quitModal = false; + var queue = android.os.Looper.myQueue(); + + var msg; + var obj = new Array(0); + while (!quitModal) { + msg = nextMethod.invoke(queue, [{}]); + if (msg) { + var target = targetField.get(msg); + if (!target) { + // No target is a magic identifier for the quit message. + quitModal = true; + } else { + target.dispatchMessage(msg); + } + msg.recycle(); + } } } \ No newline at end of file diff --git a/Tests/http_tests.ts b/Tests/http_tests.ts index 19a76f130..80f81fb4f 100644 --- a/Tests/http_tests.ts +++ b/Tests/http_tests.ts @@ -1 +1,77 @@ - \ No newline at end of file +import TKUnit = require("Tests/TKUnit"); +import http = require("http/http"); +import http_request = require("http/http_request"); + +export var test_getString_isDefined = function () { + TKUnit.assert(typeof (http.getString) !== "undefined", "Method http.getString() should be defined!"); +}; + +export var test_getString = function () { + http.getString("http://httpbin.org/get").then(function (result) { + TKUnit.assert(typeof (result) === "string", "Result from getString() should be string!"); + }); +}; + +export var test_getString_fail = function () { + http.getString("hgfttp://httpbin.org/get").fail(function (e) { TKUnit.assert(e instanceof Error, "Result from getString().fail() should be Error!"); }); +}; + +export var test_getJSON_isDefined = function () { + TKUnit.assert(typeof (http.getJSON) !== "undefined", "Method http.getJSON() should be defined!"); +}; + +export var test_getJSON = function () { + http.getJSON("http://httpbin.org/get").then(function (result) { + TKUnit.assert(typeof (JSON.stringify(result)) === "string", "Result from getJSON() should be valid JSON object!"); + }); +}; + +export var test_getJSON_fail = function () { + http.getJSON("hgfttp://httpbin.org/get").fail(function (e) { TKUnit.assert(e instanceof Error, "Result from getJSON().fail() should be Error!"); }); +}; + +export var test_getImage_isDefined = function () { + TKUnit.assert(typeof (http.getImage) !== "undefined", "Method http.getImage() should be defined!"); +}; + +export var test_getImage = function () { + http.getImage("http://www.google.com/images/errors/logo_sm_2.png").then(function (result) { + TKUnit.assert(result instanceof require("Image").Image, "Result from getImage() should be valid Image object!"); + }); +}; + +export var test_getImage_fail = function () { + http.getImage("htadvtp://www.google.com/images/errors/logo_sm_2.png").fail(function (e) { + TKUnit.assert(e instanceof Error, "Result from getImage().fail() should be Error!"); + }); +}; + +export var test_request_isDefined = function () { + TKUnit.assert(typeof (http["request"]) !== "undefined", "Method http.request() should be defined!"); +}; + +export var test_request_shouldFailIfOptionsUrlIsNotDefined = function () { + http_request.request({ url: undefined, method: undefined }).fail(function (e) { TKUnit.assert(e instanceof Error, "Result from request().fail() should be Error!"); }); +}; + +export var test_request_shouldFailIfOptionsMethodIsNotDefined = function () { + http_request.request({ url: "http://httpbin.org/get", method: undefined }).fail(function (e) { TKUnit.assert(e instanceof Error, "Result from request().fail() should be Error!"); }); +}; + +export var test_request_responseStatusCodeShouldBeDefined = function () { + http_request.request({ url: "http://httpbin.org/get", method: "GET" }).then(function (response) { + TKUnit.assert(typeof (response.statusCode) !== "undefined", "response.statusCode should be defined!"); + }); +}; + +export var test_request_responseHeadersCodeShouldBeDefined = function () { + http_request.request({ url: "http://httpbin.org/get", method: "GET" }).then(function (response) { + TKUnit.assert(typeof (response.headers) !== "undefined", "response.headers should be defined!"); + }); +}; + +export var test_request_responseContentShouldBeDefined = function () { + http_request.request({ url: "http://httpbin.org/get", method: "GET" }).then(function (response) { + TKUnit.assert(typeof (response.content) !== "undefined", "response.content should be defined!"); + }); +}; \ No newline at end of file diff --git a/http/http_request.android.ts b/http/http_request.android.ts index 42ec687e8..794301495 100644 --- a/http/http_request.android.ts +++ b/http/http_request.android.ts @@ -25,7 +25,7 @@ export function request(options: http.HttpRequestOptions): promises.Promise { return null }, toJSON: () => { return null }, - toImage: () => { return require("Image/image").Image.imageFromNativeBitmap(data); } + toImage: () => { return require("Image/image").fromNativeBitmap(data); } }, statusCode: 0, headers: {}