{
	"version": 3,
	"sources": [
		"C:\\dev\\streamline-streams\\test\\server\\streams-test._js"
	],
	"names": [
		"i",
		"buf",
		"Buffer",
		"bufSize",
		"j",
		"modulo",
		"start",
		"ok",
		"Math",
		"floor",
		"k",
		"length",
		"stream",
		"pause",
		"bind",
		"paused",
		"resume",
		"resumed",
		"name",
		"options",
		"fn",
		"url",
		"httpRequest",
		"end",
		"resp",
		"addBufferHooks",
		"emitter",
		"last",
		"strictEqual",
		"detail",
		"size",
		"asyncTest",
		"total",
		"totalSize",
		"len",
		"checkBuffer",
		"t0",
		"Date",
		"now",
		"testRead",
		"r",
		"random",
		"streams",
		"require",
		"bufCount",
		"doStop",
		"QUnit",
		"module",
		"id",
		"setup",
		"HttpServer",
		"req",
		"res",
		"writeHead",
		"on",
		"process",
		"stderr",
		"write",
		"makeBuffer",
		"oneTenth",
		"testPass",
		"lowMark",
		"highMark"
	],
	"mappings": "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",
	"file": "streams-test._js",
	"sourcesContent": [
		"\"use strict\";\r\n\r\nvar streams = require('../..');\r\n\r\nvar bufSize = 100;\r\nvar bufCount = 3;\r\nvar totalSize = bufCount * bufSize;\r\nvar modulo = 17;\r\n\r\nfunction makeBuffer(i) {\r\n\tvar buf = new Buffer(bufSize);\r\n\tfor (var j = 0; j < bufSize; j++)\r\n\tbuf[j] = 0x30 + i + (j % modulo);\r\n\t//console.error(\"\\nGEN: \" + i + \": \" + buf)\r\n\treturn buf;\r\n}\r\n\r\nfunction checkBuffer(buf, start) {\r\n\tok(buf != null, \"buffer not null\");\r\n\tvar i = Math.floor(start / bufSize);\r\n\tvar j = start % bufSize;\r\n\tfor (var k = 0; k < buf.length; k++, j++) {\r\n\t\tif (j == bufSize) {\r\n\t\t\ti++;\r\n\t\t\tj = 0;\r\n\t\t}\r\n\t\tif (buf[k] !== 0x30 + i + (j % modulo)) return ok(false, \"buffer verification failed:  i=\" + i + \", j=\" + j + \" k=\" + k + \" val=\" + buf[k]);\r\n\t}\r\n\tok(true, \"buffer content is valid\")\r\n\treturn start + buf.length;\r\n}\r\n\r\nvar paused = 0,\r\n\tresumed = 0;\r\nvar doStop = false;\r\n\r\nQUnit.module(module.id, {\r\n\tsetup: function() {}\r\n});\r\n\r\nasyncTest(\"start test server\", 1, function(_){\r\n\tnew streams.HttpServer(function(req, res, _) {\r\n\t\tres.writeHead(200, {\r\n\t\t\t'Content-Type': 'application/octet-stream'\r\n\t\t});\r\n\t\tres.emitter.on(\"drain\", function() {\r\n\t\t\tprocess.stderr.write(\"*\");\r\n\t\t})\r\n\t\tfor (var i = 0; i < bufCount; i++) {\r\n\t\t\tres.write(_, makeBuffer(i));\r\n\t\t\tprocess.nextTick(_);\r\n\t\t}\r\n\t\tres.end();\r\n\t}).listen(_, 1337, \"127.0.0.1\");\r\n\tok(true, \"server started\");\r\n\t//console.error('Server running at http://127.0.0.1:1337/');\r\n\tstart();\r\n});\r\n\r\nfunction addBufferHooks(stream) {\r\n\tvar pause = stream.pause.bind(stream);\r\n\tstream.pause = function() {\r\n\t\t//process.stderr.write(\"<\");\r\n\t\tpaused++;\r\n\t\tpause();\r\n\t}\r\n\tvar resume = stream.resume.bind(stream);\r\n\tstream.resume = function() {\r\n\t\t//process.stderr.write(\">\");\r\n\t\tresumed++;\r\n\t\tresume();\r\n\t}\r\n}\r\n\r\nfunction doTest(_, name, options, fn) {\r\n\t//process.stderr.write(\"\\ttesting \" + name);\r\n\toptions.url = 'http://127.0.0.1:1337/';\r\n\tvar resp = streams.httpRequest(options).end().response(_);\r\n\taddBufferHooks(resp.emitter);\r\n\tfn(_, resp);\r\n\tvar last = resp.read(_);\r\n\tstrictEqual(last, null, \"read returns null at end\")\r\n\t//console.error(\" ok\");\r\n}\r\n\r\nfunction dot(_) {\r\n\tprocess.nextTick(_);\r\n\t//process.stderr.write(\".\");\r\n}\r\n\r\nfunction testPass(name, options) {\r\n\t//console.error(\"pass \" + name);\r\n\tvar t0 = Date.now();\r\n\r\n\tfunction testRead(name, detail, size) {\r\n\t\tasyncTest(name + \" / \" + detail, function(_) {\r\n\t\t\tdoTest(_, name, options, function(_, resp) {\r\n\t\t\t\tfor (var i = 0, total = 0; total < totalSize; i++) {\r\n\t\t\t\t\tvar len = size && typeof size === \"function\" ? size() : size;\r\n\t\t\t\t\tvar buf = resp.read(_, len);\r\n\t\t\t\t\ttotal = checkBuffer(buf, total);\r\n\t\t\t\t\t//dot(_);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tstart();\r\n\t\t});\r\n\t}\r\n\r\n\ttestRead(name, \"chunk read\");\r\n\ttestRead(name, \"half size read\", Math.floor(bufSize / 2));\r\n\ttestRead(name, \"double size read\", bufSize * 2);\r\n\ttestRead(name, \"odd size read\", Math.floor(4 * bufSize / 7));\r\n\tfalse && testRead(name, \"random size read\", function() {\r\n\t\tvar r = Math.random();\r\n\t\treturn Math.floor(r * r * r * r * 3 * bufSize);\r\n\t});\r\n\t//console.error(\"pass completed in \" + (Date.now() - t0) + \" ms\");\r\n}\r\n\r\nvar oneTenth = Math.floor(bufCount * bufSize / 10);\r\n//testPass(\"default buffering (warm up)\", {});\r\ntestPass(\"default buffering\", {});\r\ntestPass(\"buffer 0/1 tenth\", {\r\n\tlowMark: 0,\r\n\thighMark: oneTenth\r\n});\r\ntestPass(\"buffer 2/3 tenth\", {\r\n\tlowMark: 2 * oneTenth,\r\n\thighMark: 3 * oneTenth\r\n});\r\ntestPass(\"buffer 1 tenth and above\", {\r\n\tlowMark: oneTenth,\r\n\thighMark: 11 * oneTenth\r\n});\r\ntestPass(\"buffer all\", {\r\n\tlowMark: 0,\r\n\thighMark: 11 * oneTenth\r\n});\r\n\r\nasyncTest(\"stop  tests\", 0, function(_) {\r\n\tdoStop = true;\r\n\tstart();\r\n});"
	]
}