VimUnDo/݅3 GT_IEXD{OC/ PPPPMˆ_Mg5_Mg5_Mg5_#Mg%var test = common.microtest.module();5_Mh%var common = require('../../common');5_Mh$var common = require('./../common');5_ Mh #var common = require('/../common');5_ 1Mh3var test = common.microtest.module(common.fixture);5_ 5Mh8var test = common.microtest.module(common.fixture + '');5_ 6Mh9var test = common.microtest.module(common.fixture + '/');5_ *Mh! Evar test = common.microtest.module(common.fixture + '/mysql_client');5_  FMh2 Ivar test = common.microtest.module(common.dir.fixture + '/mysql_client');5_ MhD5_MhE 5_Mh5_Mh5_Mh5_Mh5_Mh5_Mh 5_Mh5_Mhtest.compile();5_Ml 5_Ml!5_Ml"#5_Ml## ''5_Ml(# 'util'5_ Ml*# 'util': ''5_ Ml0# 'util': 'util'5_! Ml35_ "!MlI$ #5_!#"MlL$ [''5_"$# MlN$ ['super'5_#%$MlR ['super', {fuck: 5_$&%MlV#test.requires([5_%'& MlV#test.requires( 'util',5_&('MlW"test.requires( 'util',5_')(MlX"test.requires('util',]);5_(*)MlX!test.requires('util', ]);5_)+*MlY!test.requires('util' ]);5_*,+MlY!test.requires('util']);5_+-,Ml!5_,.-Ml"test.requires('util');5_-/.Ml"test.requires('net');5_.0/Ml")test.requires('net', {classes: 'Stream');5_/10Ml"(test.requires('net', {classs: 'Stream');5_021%Ml "'test.requires('net', {class: 'Stream');5_132Ml!"(test.requires('net', {class: 'Stream'});5_243Mmr"test.requires('util');5_354Mmu""*test.requires('net', {exports: 'Stream'});5_465 Mm"test.injectModule('util');5_576 Mm$".test.injectModule('net', {exports: 'Stream'});5_687Mo%#"5_798Mo#/test.injectRequire('net', {exports: 'Stream'});5_8:9.Mo"5_9;:Mo#/test.injectRequire('net', {exports: 'Stream'});5_:<;Mo#2test.injectRequire('./auth', {exports: 'Stream'});5_;=<Mo&#.test.injectRequire('./auth', {nam: 'Stream'});5_<>=Mp>-test.injectRequire('./auth');5_=?>MrDtest.injectRequire('util');5_>@?MrD/test.injectRequire('net', {exports: 'Stream'});5_?A@MrD/5_@BAMrQ 5_ACBMrR0!5_BDCMrp!test.5_CEDMrw"!5_DFEMr#test.injectRequire('util');5_EGFMr#test.expect(test.required.5_FHGMr test.expect(test.required.util, 5_GIHMr5_HJIMr"!5_IKJMr"var 5_JLKMrvar `5_KMLMr"!5_LNM Mr#var inherits = test.expect();5_MONMr#!var inheritsCall = test.expect();5_NPOMr#?var inheritsCall = test.expect(test.required.util, 'inherits');5_OQPMr#;inheritsCall = test.expect(test.required.util, 'inherits');5_PRQMr#.= test.expect(test.required.util, 'inherits');5_QSRMr $ #5_RTS Mr test.getArgs();5_SUTMs5_TVU Ms1 #5_UWVMs;5_VXWMs;5_WYXMs< # "5_XZYMsA$,test.expect(test.required.util, 'inherits');5_Y[Z MsH $5_Z\[ MsX $,test.verify(test.required.util, 'inherits');5_[]\ )MsZ %* .verify(test.required.util, 'inherits');5_\^]*Ms &&,test.expect(test.required.util, 'inherits');5_]_^Ms(5_^`_5Ms(8test.expect(test.required.util, 'inherits', function() {5__a`Ms( 5_`baMs2 (5_acb Ms test5_bdc Ms ) .verify(test.required.util, 'inherits')5_ced Ms  .args();5_dfe Ms6 5_egfMt&&%5_fhg  vMt7&console.log(var);5_gjh vMt#:console.log(test.required);5_hkij vMtu ' c & %5_jlk  vMtu 'console.log(var);5_kml  vMtz; 'console.log(test.require.util);5_lnm  vMt}? ' console.log(test.required.util);5_mon  vMtL ')console.log(test.required.util.inherits);5_npo**vMwJ'Ltest.expect(test.required.util, 'inherits', function(Client, EventEmitter) {});5_oqp**+vMwL%+test.expect(test.required.util, 'inherits';5_prq*+vMwON%,test.expect(test.required.util, 'inherits');5_qsr*+vMwk console.log(test.required.util);5_rts*+vMwl5_svt*+vMwp\5_twuv*+vMy # "5_vyw *+vMy $5_wzxy *+vMy $test.describe();5_y{z *+vMy $test.describe('');5_z|{ *+vMy $ $test.describe('constructor');5_{}| *+vMy &5_|~} *+vMy^  5_}~ *+vMy &  %5_~ *+vMy_ '5_ *+vMz '/ test.getArgs(test.required.util, 'inherits');5_ *+vMz" '+ test.get(test.required.util, 'inherits');5_ *+vMz% ( (  '5_   vMz' ($ assert.strictEqual(val, expected);5_   vMz- () assert.strictEqual(inherits, expected);5_ (  vMz1 (4 assert.strictEqual(inheritsCall.called, expected);5_   vMz5 5_ "  vMz8 '* assert.strictEqual(inheritsCall.called);5_   vMz '> var inheritsCall = test.get(test.required.util, 'inherits');5_   vMz ': inheritsCall = test.get(test.required.util, 'inherits');5_   vMz '- = test.get(test.required.util, 'inherits');5_   vMz '+ test.get(test.required.util, 'inherits');5_   vMz '/ test.hadCall(test.required.util, 'inherits');5_   vMz , assert.strictEqual(inheritsCall.calls, 1);5_ -  vMz '- .hadCall(test.required.util, 'inherits');5_ +  vMz (  '5_   vMz ( .withArgs();5_   vMz ( .withArg();5_   vMz ( .withArg(0, );5_   vMze ( .withArg(1, );5_   vM{T  test5_   vM{U , .hadCall(test.required.util, 'inherits')5_   vM{U  .withArg(1, Client);5_  vM{V%*test.stub(test.required.util, 'inherits');5_   vM{Z & &  %5_   vM{Zf & console.log(var);5_   vM{^  console.log(inheritsCall);5_   vM{^ &  %5_ #  vM{f ' '  &5_   vM{fg ' console.log(var);5_   vM{ki '$ var args = inheritsCall.getArgs();5_   vM{  console.log(args);5_   vM{ ' '  &5_   vM{ '$ assert.strictEqual(val, expected);5_   %v%M{k '( assert.strictEqual(args[0], expected);5_  %v%M{'5_  %v%M{("var common = require('../common');5_   %v%M{m("var assert = require('../common');5_   %v%M{ (5_   %v%M{ )& assert.strictEqual(args[0], Client);5_   %v%M{n )& assert.strictEqual(args[1], Client);5_  %v%M{)5_  %v%M{5_   %v%M{s )5_  %v%M{ 5_   %v%M{ *  )5_  %v%M{ 5_  %v%M{ 5_   %v%M{u ))test.describe('constructor', function() {5_  %v%M|)5_  %v%M|*test.requires('util');5_  %v%M|*test.requires('events');5_  %v%M|-*test.requires('events', {});5_#  %v%M|5v*'test.requires('events', {exports: ''});5_  %v%M|q*5_%v%M|v+3test.requires('events', {exports: 'EventEmitter'});5_%v%M|z+4test.requires('./query', {exports: 'EventEmitter'});5_%v%M|+*test.requires('./query', {name: 'Query'});5_%v%M|w+3test.requires('events', {exports: 'EventEmitter'});5_%v%M|+1test.requires('events', {class: 'EventEmitter'});5_0%v%M|y+2test.requires('events', [{class: 'EventEmitter'});5_"vM|++test.requires('./query', {class: 'Query'});5_"vM|+3test.requires('events', [{class: 'EventEmitter'}]);5_"vM~+9test.requires('events', [{constructor: 'EventEmitter'}]);5_"vM~+1test.requires('./query', {constructor: 'Query'});5_ "vMy - c , +5_  vMy -console.log(var);5_  vM} console.log('lala');5_  vM} 5_7v7M‚,, +5_vM‚, console.log(var);5_(vM‚-- ,5_vM‚- console.log(var);5_vM‚ console.log(args[1]);5_vM‚* console.log(test.required.EventEmitter);5_vMƒ-!test.describe('Client#connect', f,+5_vMƒ/}5_vMƒ1 test.before(f0/5_vMƒ3}5_vMƒ35_)vMƒ3,test.describe('Client#connect', function() {5_vMƒ335_vMƒ3 console.log(var);5_vMƒ*4 35_(vMƒB4* test.expect(test.required.EventEmitter);5_vMƒ^4* test.expect(test.required.EventEmitter);5_vMƒc console.log(client);5_vMƒc4 35_,vMƒ5 45_vMƒ65_vM„6 test.expect();5_vM„7 65_vM„8" test.expect(client, '_enqueue');5_vM„84 var enqueueCall = test.expect(client, '_enqueue');5_vM„85_vM„@!: test.decribe('fuck', f9 85_ !!vM„F!< }5_!!vM„G _enqueueCall.getArgs();5_!!vM„I<# test.decribe('fuck', function() {5_!!vM„K < 5_!!vM„Q < throw 'super'5_!!vM„W$ test.describe('fuck', function() {5_  vM„X throw 'super';5_vM„X });5_vM„Y5_vM„a //_enqueueCall.getArgs();5_vM„g8 _enqueueCall.getArgs();5_vM„p8 _enqueueCall.getLastArgs();5_ vM„s9 85_vM„{ var5_vM„}8( var args = _enqueueCall.getLastArgs();5_*vM„8+ var connect = _enqueueCall.getLastArgs();5_,vM„99 85_vM„9 console.log(var);5_vM„ console.log(connect);5_vM„ 9 85_  vM„ 5_vM„; :5_ !!vM„<. var connect = _enqueueCall.getLastArgs()[0];5_ !!vM„!< connect();5_!!vM„5_  vM„<;5_!!vM„ 5_  vM„<;5_ !!vM„= <5_  ##vM„5_   ""vM„5_   !!vM„= <5_   $$vM„?5_  $$vM„?% var STREAM = test.object('Stream');5_ !$$vM„ "? test.expect()5_$$vM„ ?5_%%vM„ @+test.requires('./query', {class: 'Query'});5_%%vM„'test.requires('net', {class: 'Query'});5_$$vM„ ?5_%%vM„ @'test.requires('net', {class: 'Query'});5_%%vM„ @(test.requires('net', {class: 'Stream'});5_'%%vM„ @)test.requires('net', [{class: 'Stream'});5_%%vM„ @5_ &&vM„ A*test.requires('net', [{class: 'Stream'}]);5_ $&&vM„ A/test.requires('./parser', [{class: 'Stream'}]);5_ &&vM„ A/test.requires('./parser', [{class: 'Parser'}]);5_ &&vM„A5_''vM„B% var STREAM = test.object('stream');5_''vM„B% var PARSER = test.object('stream');5_''vM„5_ #*&&vM„"$A* test.expect('new', test.required.Stream)5_! #*&&vM„#%A5_ "!#)''vM„"$B+ test.expect('new', test.required.Stream);5_!#"$)''vM…#%B+ test.expect('new', test.required.Stream);5_"$#$#''vM… #%B9 test.expect('new', test.required.Stream, null, PARSER);5_#%$$''vM…+B5_$&%((vM…,C% var PARSER = test.object('parser');5_%'&((vM…3C' var CB_PARAM = test.object('parser');5_&(''((vM…<&(C connectClosure();5_'*(3((vM…AC5 var _enqueueCall = test.expect(client, '_enqueue');5_(+)*((vM…J C5 var _enqueueCall = test.expect(client, '_enqueue');5_*-+))vM…K!D .expect(client, '_enqueue');5_+.,-)**vM…e(*E connectClosure(CB_PARAM);5_-/."**vM…g!#E client.connect();5_.0/'**vM…'*F ')E5_/10,,vM…G% var STREAM = test.object('stream');5_021 ,,vM…G) var CONNECTION = test.object('stream');5_132&1,,vM…%'G9 test.expect('new', test.required.Stream, null, STREAM);5_243) ,,vM…(*G test.stub(5_354),,vM…(*G test.stub(CONNECTION, );5_465),,vM…(*G test.stub(CONNECTION, '');5_576),,vM…(*G test.stub(CONNECTION, 'on');5_6;7)(,,vM…(*G* test.stub(CONNECTION, 'on').andReturn();5_7<:;),,vM†Y(*G4 test.stub(CONNECTION, 'on').andReturn(CONNECTION);5_;=<)%,,vM†^)+G5_<>=*--vM†e)+H> test.stub(CONNECTION, 'on', Infinity).andReturn(CONNECTION);5_=?>*--vM†h)+HC test.stub(CONNECTION, 'connect', Infinity).andReturn(CONNECTION);5_>@?*#--vM†l)+HE test.expect(CONNECTION, 'connect', Infinity).andReturn(CONNECTION);5_?A@*$--vM†m)+H; test.expect(CONNECTION, 'connect').andReturn(CONNECTION);5_@BA*$--vM†u*,H5_ACB+..vM†v*+% test.expect(CONNECTION, 'connect');5_BDC*--vM†w*,H5_CED+..vM†x*,I5_DIE, //vM†y+-J> test.stub(CONNECTION, 'on', Infinity).andReturn(CONNECTION);5_EJGI)//vMˆ(*J> test.stub(CONNECTION, 'on', Infinity).andReturn(CONNECTION);5_IKJ,//vMˆ+-J: test.stub(PARSER, 'on', Infinity).andReturn(CONNECTION);5_JLK) //vMˆ(*J@ test.expect(CONNECTION, 'on', Infinity).andReturn(CONNECTION);5_KML,//vMˆ+-J< test.expect(PARSER, 'on', Infinity).andReturn(CONNECTION);5_LOM) //vMˆ(*J9 test.expect(CONNECTION, 'on', 5).andReturn(CONNECTION);5_MPNO1//vMˆ01return;require('../common');.var StreamStub = GENTLY.stub('net', 'Stream'),) ParserStub = GENTLY.stub('./parser'),: OutgoingPacketStub = GENTLY.stub('./outgoing_packet'),' QueryStub = GENTLY.stub('./query'),% Parser = require('mysql/parser');for (var k in Parser) { ParserStub[k] = Parser[k];};%var Client = require('mysql/client');function test(test) { client = new Client(); gently = new Gently(); test(); gently.verify(test.name);};test(function constructor() {% (function testDefaultProperties() { var client = new Client();3 assert.strictEqual(client.host, 'localhost');, assert.strictEqual(client.port, 3306);, assert.strictEqual(client.user, null);0 assert.strictEqual(client.password, null);. assert.strictEqual(client.database, '');0 assert.strictEqual(client.typeCast, true);. assert.strictEqual(client.debug, false);/ assert.strictEqual(client.ending, false);2 assert.strictEqual(client.connected, false);< assert.strictEqual(client.flags, Client.defaultFlags);; assert.strictEqual(client.maxPacketSize, 0x01000000);G assert.strictEqual(client.charsetNumber, Client.UTF8_UNICODE_CI);1 assert.strictEqual(client._greeting, null);* assert.deepEqual(client._queue, []);3 assert.strictEqual(client._connection, null);/ assert.strictEqual(client._parser, null); })(); (function testMixin() {* var client = new Client({foo: 'bar'});* assert.strictEqual(client.foo, 'bar'); })(); (function testWithoutNew() {& var client = Client({foo: 'bar'});* assert.strictEqual(client.foo, 'bar'); })();});test(function connect() { var CONNECTION, PARSER, onConnection = {}, CB = function() {+ CB_DELEGATE.apply(this, arguments); }, CB_DELEGATE, CONNECT_FN;8 gently.expect(client, '_enqueue', function(task, cb) { assert.strictEqual(cb, CB); CONNECT_FN = task; task(); });/ gently.expect(StreamStub, 'new', function() { CONNECTION = this;* var events = ['error', 'data', 'end'];H gently.expect(CONNECTION, 'on', events.length, function(event, fn) {* assert.equal(event, events.shift()); onConnection[event] = fn; return this; });? gently.expect(CONNECTION, 'connect', function(port, host) {& assert.equal(port, client.port);& assert.equal(host, client.host); }); });/ gently.expect(ParserStub, 'new', function() { PARSER = this;5 gently.expect(PARSER, 'on', function(event, fn) {$ assert.equal(event, 'packet'); var PACKET = {};@ gently.expect(client, '_handlePacket', function (packet) {+ assert.strictEqual(packet, PACKET); }); fn(PACKET); }); }); client.connect(CB);5 assert.strictEqual(client._connection, CONNECTION);- assert.strictEqual(client._parser, PARSER);) (function testRandomConnectionError() { var ERR = new Error('ouch');8 gently.expect(client, 'emit', function(event, err) {# assert.equal(event, 'error'); assert.equal(err, ERR); }); onConnection.error(ERR); })();* (function testConnectionRefusedError() { var ERR = new Error('ouch'); ERR.code = 'ECONNREFUSED';? CB_DELEGATE = gently.expect(function connectCallback(err) {# assert.strictEqual(err, ERR); }); onConnection.error(ERR); })();$ (function testOnConnectionData() { var BUFFER = {};5 gently.expect(PARSER, 'write', function(buffer) {* assert.strictEqual(buffer, BUFFER ); }); onConnection.data(BUFFER ); })();& (function testEndBeforeConnected() {* gently.expect(client, '_prequeue', 0); onConnection.end(); })();! (function testUnexpectedEnd() { client.connected = true;5 gently.expect(client, '_prequeue', function(fn) {) assert.strictEqual(fn, CONNECT_FN); }); onConnection.end();* assert.equal(client.connected, false); })(); (function testExpectedEnd() { client.connected = false; client.ending = true; onConnection.end();' assert.equal(client.ending, false);* assert.equal(client.connected, false); })();});test(function write() { var PACKET = {buffer: []},+ CONNECTION = client._connection = {};7 gently.expect(CONNECTION, 'write', function(buffer) {. assert.strictEqual(buffer, PACKET.buffer); }); client.write(PACKET);});test(function query() { var PACKET,1 SQL = 'SELECT * FROM über WHERE name = ?',? FORMATED_SQL = "SELECT * FROM über WHERE name = 'nice'", PARAMS = ['nice'], CB_STUB, CB, QUERY, queryEmit = {}; client.typeCast = 'super'; (function testRegular() {; gently.expect(client, 'format', function(sql, params) {# assert.strictEqual(sql, SQL);) assert.strictEqual(params, PARAMS); return FORMATED_SQL; });: gently.expect(QueryStub, 'new', function(properties) { QUERY = this;9 assert.equal(properties.typeCast, client.typeCast);1 assert.equal(properties.sql, FORMATED_SQL);4 var events = ['error', 'field', 'row', 'end'];F gently.expect(QUERY, 'on', events.length, function (event, fn) {, assert.equal(event, events.shift()); queryEmit[event] = fn; return this; });= gently.expect(client, '_enqueue', function(fn, query) {) assert.strictEqual(query, QUERY); fn(); });? gently.expect(OutgoingPacketStub, 'new', function(size) { PACKET = this;I assert.equal(size, 1 + Buffer.byteLength(FORMATED_SQL, 'utf-8'));F gently.expect(PACKET, 'writeNumber', function(bytes, number) {' assert.strictEqual(bytes, 1);7 assert.strictEqual(number, Client.COM_QUERY); });@ gently.expect(PACKET, 'write', function(str, encoding) {* assert.equal(str, FORMATED_SQL);* assert.equal(encoding, 'utf-8'); });9 gently.expect(client, 'write', function(packet) {- assert.strictEqual(packet, PACKET); }); }); }); CB_STUB = function() { CB.apply(this, arguments); };/ var r = client.query(SQL, PARAMS, CB_STUB);! assert.strictEqual(r, QUERY); (function testQueryErr() {# var ERR = new Error('oh no');. CB = gently.expect(function errCb(err) {% assert.strictEqual(err, ERR); });( gently.expect(client, '_dequeue'); queryEmit.error(ERR); })();$ (function testQuerySimpleEnd() { var RESULT = {};5 CB = gently.expect(function okCb(err, result) {+ assert.strictEqual(result, RESULT); });( gently.expect(client, '_dequeue'); queryEmit.end(RESULT); })();# (function testFieldsAndRows() { var FIELD_1 = {name: 'A'}, FIELD_2 = {name: 'B'}, ROW_1 = {}, ROW_2 = {}; queryEmit.field(FIELD_1); queryEmit.field(FIELD_2); queryEmit.row(ROW_1); queryEmit.row(ROW_2);; CB = gently.expect(function okCb(err, rows, fields) {+ assert.strictEqual(rows[0], ROW_1);+ assert.strictEqual(rows[1], ROW_2);. assert.strictEqual(fields.A, FIELD_1);. assert.strictEqual(fields.B, FIELD_2); });( gently.expect(client, '_dequeue'); queryEmit.end(); })(); })(); (function testNoParams() {0 gently.expect(QueryStub, 'new', function() {/ gently.expect(this, 'on', 4, function() { return this; });( gently.expect(client, '_enqueue'); }); client.query(SQL, CB_STUB); })(); (function testNoCb() {0 gently.expect(QueryStub, 'new', function() { QUERY = this; queryEmit = {};$ var events = ['error', 'end'];F gently.expect(QUERY, 'on', events.length, function (event, fn) {, assert.equal(event, events.shift()); queryEmit[event] = fn; return this; });4 gently.expect(client, '_enqueue', function() {1 (function testQueryErrWithoutListener() {' var ERR = new Error('oh oh');> gently.expect(QUERY, 'listeners', function (event) {) assert.equal(event, 'error'); return [1]; });? gently.expect(client, 'emit', function (event, err) {) assert.equal(event, 'error');) assert.strictEqual(err, ERR); });, gently.expect(client, '_dequeue'); queryEmit.error(ERR); })();. (function testQueryErrWithListener() {' var ERR = new Error('oh oh');> gently.expect(QUERY, 'listeners', function (event) {) assert.equal(event, 'error'); return [1, 2]; });+ gently.expect(client, 'emit', 0);, gently.expect(client, '_dequeue'); queryEmit.error(ERR); })();( (function testQuerySimpleEnd() {, gently.expect(client, '_dequeue'); queryEmit.end(); })(); }); }); client.query(SQL); })();});test(function format() {8 var sql = client.format('? + ? = ?', [1, 2, 'great']);) assert.equal(sql, '1 + 2 = \'great\''); assert.throws(function() {1 var sql = client.format('? + ? = ?', [1, 2]); }); assert.throws(function() {7 var sql = client.format('? + ? = ?', [1, 2, 3, 4]); });});test(function escape() {1 assert.equal(client.escape(undefined), 'NULL');, assert.equal(client.escape(null), 'NULL');. assert.equal(client.escape(false), 'false');, assert.equal(client.escape(true), 'true');& assert.equal(client.escape(5), '5');@ assert.equal(client.escape({foo:'bar'}), "'[object Object]'");2 assert.equal(client.escape([1,2,3]), "'1,2,3'");2 assert.equal(client.escape('Super'), "'Super'");7 assert.equal(client.escape('Sup\0er'), "'Sup\\0er'");7 assert.equal(client.escape('Sup\ber'), "'Sup\\ber'");7 assert.equal(client.escape('Sup\ner'), "'Sup\\ner'");7 assert.equal(client.escape('Sup\rer'), "'Sup\\rer'");7 assert.equal(client.escape('Sup\ter'), "'Sup\\ter'");8 assert.equal(client.escape('Sup\\er'), "'Sup\\\\er'");; assert.equal(client.escape('Sup\u001aer'), "'Sup\\Zer'");7 assert.equal(client.escape('Sup\'er'), "'Sup\\'er'");7 assert.equal(client.escape('Sup"er'), "'Sup\\\"er'");});test(function ping() { var CB = function() {}, PACKET;7 gently.expect(client, '_enqueue', function (fn, cb) {E gently.expect(OutgoingPacketStub, 'new', function(size, number) { PACKET = this; assert.equal(size, 1);A gently.expect(this, 'writeNumber', function (length, val) { assert.equal(length, 1);+ assert.equal(val, Client.COM_PING); });8 gently.expect(client, 'write', function (packet) {+ assert.strictEqual(packet, PACKET); }); }); fn(); assert.strictEqual(cb, CB); }); client.ping(CB);});test(function statistics() { var CB = function() {}, PACKET;7 gently.expect(client, '_enqueue', function (fn, cb) {E gently.expect(OutgoingPacketStub, 'new', function(size, number) { PACKET = this; assert.equal(size, 1);A gently.expect(this, 'writeNumber', function (length, val) { assert.equal(length, 1);1 assert.equal(val, Client.COM_STATISTICS); });8 gently.expect(client, 'write', function (packet) {+ assert.strictEqual(packet, PACKET); }); }); fn(); assert.strictEqual(cb, CB); }); client.statistics(CB);});test(function useDatabase() { var CB = function() {}, DB = 'foo', PACKET;7 gently.expect(client, '_enqueue', function (fn, cb) {E gently.expect(OutgoingPacketStub, 'new', function(size, number) { PACKET = this;= assert.equal(size, 1 + Buffer.byteLength(DB, 'utf-8'));A gently.expect(this, 'writeNumber', function (length, val) { assert.equal(length, 1);. assert.equal(val, Client.COM_INIT_DB); });> gently.expect(PACKET, 'write', function(str, encoding) { assert.equal(str, DB);( assert.equal(encoding, 'utf-8'); });8 gently.expect(client, 'write', function (packet) {+ assert.strictEqual(packet, PACKET); }); }); fn(); assert.strictEqual(cb, CB); }); client.useDatabase(DB, CB);});test(function destroy() {+ var CONNECTION = client._connection = {};' gently.expect(CONNECTION, 'destroy'); client.destroy();});test(function end() { var CB = function() {}, PACKET; client._connection = {};7 gently.expect(client, '_enqueue', function (fn, cb) {& assert.equal(client.ending, true);E gently.expect(OutgoingPacketStub, 'new', function(size, number) { PACKET = this; assert.equal(size, 1);A gently.expect(this, 'writeNumber', function (length, val) { assert.equal(length, 1);+ assert.equal(val, Client.COM_QUIT); });8 gently.expect(client, 'write', function (packet) {+ assert.strictEqual(packet, PACKET); });D gently.expect(client._connection, 'on', function (event, fn) {# assert.equal(event, 'end');# assert.strictEqual(fn, CB); });( gently.expect(client, '_dequeue'); }); fn(); }); client.end(CB);});test(function _prequeue() {+ var FN = gently.expect(function fn() {}), CB = function() {}; client._queue.push(1); client._prequeue(FN, CB);( assert.equal(client._queue.length, 2);. assert.strictEqual(client._queue[0].fn, FN);4 assert.strictEqual(client._queue[0].delegate, CB);});test(function _enqueue() {+ var FN = gently.expect(function fn() {}), CB = function() {}; client._enqueue(FN, CB);( assert.equal(client._queue.length, 1);. assert.strictEqual(client._queue[0].fn, FN);4 assert.strictEqual(client._queue[0].delegate, CB);% // Make sure fn is only called once client._enqueue(FN, CB);( assert.equal(client._queue.length, 2);. assert.strictEqual(client._queue[1].fn, FN);4 assert.strictEqual(client._queue[1].delegate, CB);});test(function _dequeue() { (function testEmptyQueue() { client._dequeue(); })(); (function testExecuteNext() {3 var TASK = {fn: gently.expect(function () {})}; client._queue = [{}, TASK]; client._dequeue();* assert.equal(client._queue.length, 1);/ assert.strictEqual(client._queue[0], TASK); })();});test(function _handlePacket() { var USER_OBJECT = {}; (function testGreeting() {0 var PACKET = {type: Parser.GREETING_PACKET};: gently.expect(client, '_sendAuth', function (packet) {) assert.strictEqual(packet, PACKET); });! client._handlePacket(PACKET); })();* (function testUseOldPasswordProtocol() { client._greeting = {};A var PACKET = {type: Parser.USE_OLD_PASSWORD_PROTOCOL_PACKET};? gently.expect(client, '_sendOldAuth', function (greeting) {5 assert.strictEqual(greeting, client._greeting); });! client._handlePacket(PACKET); })(); (function testNormalOk() {* var PACKET = {type: Parser.OK_PACKET};D gently.expect(Client, '_packetToUserObject', function (packet) {) assert.strictEqual(packet, PACKET); return USER_OBJECT; });D var TASK = {delegate: gently.expect(function okCb(err, packet) {0 assert.strictEqual(packet, USER_OBJECT); })};& gently.expect(client, '_dequeue'); client._queue = [TASK];! client._handlePacket(PACKET);) assert.equal(client.connected, true); })(); (function testNoDelegateOk() {* var PACKET = {type: Parser.OK_PACKET}; client._queue = [{}]; client.connected = false;& gently.expect(client, '_dequeue');! client._handlePacket(PACKET);) assert.equal(client.connected, true); })(); (function testNormalError() {- var PACKET = {type: Parser.ERROR_PACKET};D gently.expect(Client, '_packetToUserObject', function (packet) {) assert.strictEqual(packet, PACKET); return USER_OBJECT; });@ var TASK = {delegate: gently.expect(function errCb(packet) {0 assert.strictEqual(packet, USER_OBJECT); })};& gently.expect(client, '_dequeue'); client._queue = [TASK];! client._handlePacket(PACKET); })();# (function testNoDelegateError() {- var PACKET = {type: Parser.ERROR_PACKET}; client._queue = [{}];D gently.expect(Client, '_packetToUserObject', function (packet) {) assert.strictEqual(packet, PACKET); return USER_OBJECT; });8 gently.expect(client, 'emit', function(event, err) {# assert.equal(event, 'error');+ assert.strictEqual(err, USER_OBJECT); });& gently.expect(client, '_dequeue');! client._handlePacket(PACKET); })();! (function testQueryDelegate() {$ gently.expect(QueryStub, 'new'); var PACKET = {}, QUERY = new QueryStub();( client._queue = [{delegate: QUERY}];< gently.expect(QUERY, '_handlePacket', function(packet) {) assert.strictEqual(packet, PACKET); });! client._handlePacket(PACKET); })();});test(function _sendAuth() {= var GREETING = {scrambleBuffer: new Buffer(20), number: 1}, TOKEN = new Buffer(20), PACKET; client.user = 'root';" client.password = 'hello world'; client.database = 'secrets';K gently.expect(HIJACKED['./auth'], 'token', function(password, scramble) {2 assert.strictEqual(password, client.password);: assert.strictEqual(scramble, GREETING.scrambleBuffer); return TOKEN; });C gently.expect(OutgoingPacketStub, 'new', function(size, number) { assert.equal(size, ( 4 + 4 + 1 + 23 + client.user.length + 1 + TOKEN.length + 1 + client.database.length + 1 ));. assert.equal(number, GREETING.number + 1); PACKET = this;B gently.expect(PACKET, 'writeNumber', function(bytes, number) {# assert.strictEqual(bytes, 4);/ assert.strictEqual(client.flags, number); });B gently.expect(PACKET, 'writeNumber', function(bytes, number) {# assert.strictEqual(bytes, 4);7 assert.strictEqual(client.maxPacketSize, number); });B gently.expect(PACKET, 'writeNumber', function(bytes, number) {# assert.strictEqual(bytes, 1);7 assert.strictEqual(client.charsetNumber, number); });: gently.expect(PACKET, 'writeFiller', function(bytes) {$ assert.strictEqual(bytes, 23); });A gently.expect(PACKET, 'writeNullTerminated', function(user) {, assert.strictEqual(user, client.user); });? gently.expect(PACKET, 'writeLengthCoded', function(token) {' assert.strictEqual(token, TOKEN); });E gently.expect(PACKET, 'writeNullTerminated', function(database) {4 assert.strictEqual(database, client.database); });5 gently.expect(client, 'write', function(packet) {) assert.strictEqual(packet, PACKET); }); }); client._sendAuth(GREETING);1 assert.strictEqual(client._greeting, GREETING);});%test(function _packetToUserObject() {0 gently.restore(Client, '_packetToUserObject'); (function testOkPacket() { var PACKET = { type: Parser.OK_PACKET, length: 65, received: 65, number: 92, foo: 'bar' };0 var ok = Client._packetToUserObject(PACKET);& assert.notStrictEqual(PACKET, ok);& assert.ok(!(ok instanceof Error));% assert.equal(ok.foo, PACKET.foo);% assert.equal(ok.type, undefined);' assert.equal(ok.length, undefined);) assert.equal(ok.received, undefined); })(); (function testErrorPacket() { var PACKET = { type: Parser.ERROR_PACKET, foo: 'bar', errorMessage: 'oh no', errorNumber: 1007 };1 var err = Client._packetToUserObject(PACKET);$ assert.ok(err instanceof Error);' assert.equal(err.message, 'oh no');. assert.equal(err.errorMessage, undefined);# assert.equal(err.number, 1007);- assert.equal(err.errorNumber, undefined); })();});test(function _sendOldAuth() {< var GREETING = {scrambleBuffer: new Buffer(8), number: 1}, TOKEN = new Buffer(8), PACKET; client.user = 'root';" client.password = 'hello world';Q gently.expect(HIJACKED['./auth'], 'scramble323', function(scramble, password) {: assert.strictEqual(scramble, GREETING.scrambleBuffer);2 assert.strictEqual(password, client.password); return TOKEN; });C gently.expect(OutgoingPacketStub, 'new', function(size, number) {) assert.equal(size, TOKEN.length + 1);. assert.equal(number, GREETING.number + 3); PACKET = this;4 gently.expect(PACKET, 'write', function(token) {' assert.strictEqual(token, TOKEN); });: gently.expect(PACKET, 'writeFiller', function(bytes) {# assert.strictEqual(bytes, 1); });5 gently.expect(client, 'write', function(packet) {) assert.strictEqual(packet, PACKET); }); }); client._sendOldAuth(GREETING);});5_OP0//vMˆ/05_MONvMˆ/5_EHFIG*..vM†)+5_GH)//vM†()I% test.expect(CONNECTION, 'connect');5_EGF)//vM†(*J@ test.expect(CONNECTION, 'on', Infinity).andReturn(CONNECTION);5_79;:),,vM†(*G test.stub(CONNECTION, 'on');5_78:9),,vM…(*6 //test.stub(CONNECTION, 'on').andReturn(CONNECTION);5_798&,,vM…%'G; test.stub('new', test.required.Stream, null, CONNECTION);5_+-, **vM…Y!E .withArg(1, CB_PARAM);5_(*)"2))vM…F"#C5 var connectClosure = _enqueueCall.getLastArgs()[0];5_ &&vM„ A-test.requires('./parser', [class: 'Parser']);5_)vMƒH46 test.expect(test.required.EventEmitter).inContext();5_  vM‚5//test.requires('events', [{class: 'EventEmitter'}]);5_"vM€-//test.requires('./query', {class: 'Query'});5_"vM€+ :!node %:p+test.requires('./query', {class: 'Query'});5_%v%M|+,test.requires('./query', {"class: 'Query'});5_  %v%M|X*1test.requires('events', {class: 'EventEmitter'});5_  %v%M|[*3test.requires('events', {classes: 'EventEmitter'});5_   %v%M{ ), assert.strictEqual(test.required, Client);5_   vM{ ' var args = inheritsCall.();5_   vMz ( .withArg(1, );5_ *+vMz  ' test) .get(test.required.util, 'inherits');5_*+vMz'=var inheritsCall = test.stub(test.required.util, 'inherits');5_wyx*+vMy]//test.requires('util');5_tvu(*+vMwwP"-test.stub(test.required.util, 'inherits', 1);5_hji  vMt,8%Stest.expectAnytime(test.required.util, 'inherits', function(Client, EventEmitter) {5_Ml!test.requires({5_Mhvar common = require('common');5