From 0069de9e222b034b0404713ca6df5d3e75c379b4 Mon Sep 17 00:00:00 2001 From: Joshua Wise Date: Wed, 7 Sep 2016 13:35:04 -0400 Subject: [PATCH] cleaned up repo --- .gitignore | 55 ++- .npmignore | 12 - LICENSE.md | 49 +- README.md | 30 +- TODO | 8 +- binding.gyp | 6 +- deps/{common-sqlite.gypi => common.gypi} | 0 deps/sqlite3.gyp | 15 +- index.js | 2 + lib/database.js | 7 +- lib/set-prototype-of.js | 10 - lib/sqlite3-plus.js | 16 - lib/trace.js | 42 -- package.json | 40 +- src/{sqlite3_plus.cc => better_sqlite3.cc} | 2 +- src/binder/binder.h | 4 +- src/multi-binder/multi-binder.h | 4 +- src/objects/database/database.cc | 1 + src/objects/database/database.h | 4 +- src/objects/statement/build-bind-map.cc | 12 - src/objects/statement/statement.cc | 16 +- src/objects/statement/statement.h | 4 +- src/objects/statement/util.cc | 34 ++ src/objects/transaction/transaction.cc | 16 +- src/objects/transaction/transaction.h | 4 +- .../{build-bind-map.cc => util.cc} | 25 +- src/util/data.h | 4 +- src/util/list.h | 6 +- src/util/macros.h | 4 +- src/util/strlcpy.h | 4 +- src/util/transaction-handles.h | 7 +- src/workers/database-workers/close.h | 4 +- src/workers/database-workers/open.h | 4 +- src/workers/query-worker.h | 4 +- src/workers/statement-workers/all.h | 4 +- src/workers/statement-workers/each.h | 4 +- src/workers/statement-workers/get.h | 4 +- src/workers/statement-workers/run.h | 4 +- src/workers/transaction-worker.h | 4 +- test/affected.test.js | 32 -- test/blob.test.js | 54 --- test/cache.test.js | 42 -- test/constants.test.js | 40 -- test/database_fail.test.js | 153 ------- test/each.test.js | 38 -- test/exec.test.js | 39 -- test/extension.test.js | 26 -- test/fts-content.test.js | 13 - test/issue-108.test.js | 28 -- test/json.test.js | 22 - test/map.test.js | 63 --- test/named_columns.test.js | 38 -- test/named_params.test.js | 69 --- test/null_error.test.js | 41 -- test/nw/.gitignore | 3 - test/nw/Makefile | 39 -- test/nw/index.html | 14 - test/nw/package.json | 9 - test/open_close.test.js | 129 ------ test/other_objects.test.js | 89 ---- test/parallel_insert.test.js | 44 -- test/prepare.test.js | 427 ------------------ test/profile.test.js | 57 --- test/rerun.test.js | 50 -- test/scheduling.test.js | 44 -- test/serialization.test.js | 104 ----- test/support/createdb.js | 36 -- test/support/elmo.png | Bin 162074 -> 0 bytes test/support/helper.js | 37 -- test/support/prepare.db | Bin 161792 -> 0 bytes test/support/script.sql | 70 --- test/trace.test.js | 67 --- test/unicode.test.js | 114 ----- 73 files changed, 177 insertions(+), 2329 deletions(-) delete mode 100644 .npmignore rename deps/{common-sqlite.gypi => common.gypi} (100%) create mode 100644 index.js delete mode 100644 lib/set-prototype-of.js delete mode 100644 lib/sqlite3-plus.js delete mode 100644 lib/trace.js rename src/{sqlite3_plus.cc => better_sqlite3.cc} (85%) delete mode 100644 src/objects/statement/build-bind-map.cc create mode 100644 src/objects/statement/util.cc rename src/objects/transaction/{build-bind-map.cc => util.cc} (53%) delete mode 100644 test/affected.test.js delete mode 100644 test/blob.test.js delete mode 100644 test/cache.test.js delete mode 100644 test/constants.test.js delete mode 100644 test/database_fail.test.js delete mode 100644 test/each.test.js delete mode 100644 test/exec.test.js delete mode 100644 test/extension.test.js delete mode 100644 test/fts-content.test.js delete mode 100644 test/issue-108.test.js delete mode 100644 test/json.test.js delete mode 100644 test/map.test.js delete mode 100644 test/named_columns.test.js delete mode 100644 test/named_params.test.js delete mode 100644 test/null_error.test.js delete mode 100644 test/nw/.gitignore delete mode 100755 test/nw/Makefile delete mode 100644 test/nw/index.html delete mode 100644 test/nw/package.json delete mode 100644 test/open_close.test.js delete mode 100644 test/other_objects.test.js delete mode 100644 test/parallel_insert.test.js delete mode 100644 test/prepare.test.js delete mode 100644 test/profile.test.js delete mode 100644 test/rerun.test.js delete mode 100644 test/scheduling.test.js delete mode 100644 test/serialization.test.js delete mode 100755 test/support/createdb.js delete mode 100644 test/support/elmo.png delete mode 100644 test/support/helper.js delete mode 100644 test/support/prepare.db delete mode 100644 test/support/script.sql delete mode 100644 test/trace.test.js delete mode 100644 test/unicode.test.js diff --git a/.gitignore b/.gitignore index 1197bbe86..07656be63 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,37 @@ -*.dylib -*.so -*.o -*.lo -*.Makefile -*.target.gyp.mk -lib/binding -build -out -Release -Debug +# Logs +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/ + +# Dependency directory node_modules -.deps -Makefile.gyp -gyp-mac-tool -.dirstamp -npm-debug.log -test/support/big.db -test/tmp -test/nw/app.nw + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history + +# Project specific +lib/binding .DS_Store -.idea diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 733dbe72a..000000000 --- a/.npmignore +++ /dev/null @@ -1,12 +0,0 @@ -.gitignore -.npmignore -node_modules -lib/binding -build -test -benchmark -configure -Makefile -scripts -.travis.yml -examples diff --git a/LICENSE.md b/LICENSE.md index dfc771ddc..d20384405 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,12 +1,4 @@ -This project is a fork of node-sqlite3 (https://github.com/mapbox/node-sqlite3). -As such, copyright for portions of this project are held by MapBox as part of -node-sqlite3, under "The BSD-3-Clause License". All other copyright for this -project are held by Joshua Wise, under "The MIT License". - - - -The MIT License -=============== +The MIT License (MIT) Copyright (c) 2016 Joshua Wise @@ -17,44 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - - -The BSD-3-Clause License -=============== - -Copyright (c) MapBox -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. -- Neither the name "MapBox" nor the names of its contributors may be - used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 69da97254..c21338308 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# sqlite3-plus +# better-sqlite3 *You want [Node](http://nodejs.org/)?* @@ -6,23 +6,21 @@ *You want your life to be* **easy?** -##### **Well you're in luck because sqlite3-plus is here!!!!** +##### **Well you're in luck because better-sqlite3 is here!!!!** ## Installation ```bash -npm install --save sqlite3-plus +npm install --save better-sqlite3 ``` ## Usage ```js -var sql = require('sqlite3-plus').verbose(); -var db = new sql.Database(':memory:'); +var Database = require('better-sqlite3'); +var db = new Database('foobar.db', {memory: true, wal: false}); ``` -The `statement.pluck()` method will return the wrong data if the specified column's position in the table changes (by dropping and recreating the table). - ## Features - Full transaction support @@ -30,22 +28,6 @@ The `statement.pluck()` method will return the wrong data if the specified colum - Big test suite - Written in modern C++ and tested for memory leaks -# Contributors - -* [Konstantin Käfer](https://github.com/kkaefer) -* [Dane Springmeyer](https://github.com/springmeyer) -* [Will White](https://github.com/willwhite) -* [Orlando Vazquez](https://github.com/orlandov) -* [Artem Kustikov](https://github.com/artiz) -* [Eric Fredricksen](https://github.com/grumdrig) -* [John Wright](https://github.com/mrjjwright) -* [Ryan Dahl](https://github.com/ry) -* [Tom MacWright](https://github.com/tmcw) -* [Carter Thaxton](https://github.com/carter-thaxton) -* [Audrius Kažukauskas](https://github.com/audriusk) -* [Johannes Schauer](https://github.com/pyneo) -* [Mithgol](https://github.com/Mithgol) - # License -[BSD and MIT licensed](https://github.com/JoshuaWise/node-sqlite3-plus/blob/master/LICENSE.md). +[MIT](https://github.com/JoshuaWise/better-sqlite3/blob/master/LICENSE.md). diff --git a/TODO b/TODO index d0a9190ee..c5532b9ee 100644 --- a/TODO +++ b/TODO @@ -1,11 +1,13 @@ ---------- Polish ---------- -investigate BEGIN IMMEDIATE as an alternative to mutexes -(if we dont need sqlite3_last_insert_rowid or sqlite3_changes, do we get a performance boost?) - use SQLITE_ENABLE_API_ARMOR compilation option while developing +add db method for setting pragma on both connections, synchronously + +think of a way to deal with 64bit integers + ---------- Package ---------- deal with ./test/ and .travis.yml +compare tests with node-sqlite3 ---------- Executable ---------- diff --git a/binding.gyp b/binding.gyp index bd26af4ea..f0b7b233d 100644 --- a/binding.gyp +++ b/binding.gyp @@ -1,8 +1,8 @@ { - "includes": [ "deps/common-sqlite.gypi" ], + "includes": [ "deps/common.gypi" ], "targets": [ { - "target_name": "sqlite3_plus", + "target_name": "better_sqlite3", "include_dirs": [" in ' + name; - err.stack += '\n' + filter(error).slice(1).join('\n'); - err.__augmented = true; - } - throw err; - } - }; - } - return old.apply(this, arguments); - }; -} -exports.extendTrace = extendTrace; - - -function filter(error) { - return error.stack.split('\n').filter(function(line) { - return line.indexOf(__filename) < 0; - }); -} diff --git a/package.json b/package.json index 9d700a097..7847122ea 100644 --- a/package.json +++ b/package.json @@ -1,32 +1,13 @@ { - "name": "sqlite3-plus", - "description": "Simple and expressive SQLite3 bindings for Node.js, with full transaction support.", - "version": "4.0.0", - "homepage": "http://github.com/JoshuaWise/node-sqlite3-plus", + "name": "better-sqlite3", + "version": "0.5.0", + "description": "Simple and expressive SQLite3 bindings for Node.js, with full transaction support", + "homepage": "http://github.com/JoshuaWise/better-sqlite3", "author": "Joshua Wise ", - "contributors": [ - "MapBox", - "Konstantin Käfer ", - "Dane Springmeyer ", - "Will White ", - "Orlando Vazquez ", - "Artem Kustikov ", - "Eric Fredricksen ", - "John Wright ", - "Ryan Dahl ", - "Tom MacWright ", - "Carter Thaxton ", - "Audrius Kažukauskas ", - "Johannes Schauer ", - "Nathan Rajlich ", - "AJ ONeal ", - "Mithgol", - "Ben Noordhuis " - ], "gypfile": true, "repository": { "type": "git", - "url": "git://github.com/JoshuaWise/node-sqlite3-plus.git" + "url": "git://github.com/JoshuaWise/better-sqlite3.git" }, "dependencies": { "bindings": "^1.2.1", @@ -34,20 +15,19 @@ "to-descriptor": "^1.0.1" }, "devDependencies": { - "mocha": "~2.3.3" + "chai": "^3.5.0", + "mocha": "^3.0.2" }, "scripts": { "install": "node-gyp rebuild", - "pretest": "node test/support/createdb.js", - "test": "$(npm bin)/mocha -R spec --timeout 480000" + "test": "$(npm bin)/mocha --timeout 5000 --slow 5000" }, - "license": "(MIT OR BSD-3-Clause)", + "license": "MIT", "keywords": [ "sql", "sqlite", "sqlite3", "database", "transactions" - ], - "main": "./lib/sqlite3-plus.js" + ] } diff --git a/src/sqlite3_plus.cc b/src/better_sqlite3.cc similarity index 85% rename from src/sqlite3_plus.cc rename to src/better_sqlite3.cc index 6fce9ad3d..1784cb20e 100644 --- a/src/sqlite3_plus.cc +++ b/src/better_sqlite3.cc @@ -10,4 +10,4 @@ NAN_MODULE_INIT(RegisterModule) { Statement::Init(); Transaction::Init(); } -NODE_MODULE(sqlite3_plus, RegisterModule); +NODE_MODULE(better_sqlite3, RegisterModule); diff --git a/src/binder/binder.h b/src/binder/binder.h index 52210df65..877d542df 100644 --- a/src/binder/binder.h +++ b/src/binder/binder.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_BINDER_H -#define NODE_SQLITE3_PLUS_BINDER_H +#ifndef BETTER_SQLITE3_BINDER_H +#define BETTER_SQLITE3_BINDER_H #include #include diff --git a/src/multi-binder/multi-binder.h b/src/multi-binder/multi-binder.h index af06211a3..34e20ddbf 100644 --- a/src/multi-binder/multi-binder.h +++ b/src/multi-binder/multi-binder.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_MULTIBINDER_H -#define NODE_SQLITE3_PLUS_MULTIBINDER_H +#ifndef BETTER_SQLITE3_MULTIBINDER_H +#define BETTER_SQLITE3_MULTIBINDER_H #include #include diff --git a/src/objects/database/database.cc b/src/objects/database/database.cc index 7e500d5b3..a1a013243 100644 --- a/src/objects/database/database.cc +++ b/src/objects/database/database.cc @@ -57,6 +57,7 @@ NAN_MODULE_INIT(Database::Init) { Nan::GetFunction(t).ToLocalChecked()); } +// Returns an SQLite3 result code. int Database::CloseHandles() { delete t_handles; int status1 = sqlite3_close(read_handle); diff --git a/src/objects/database/database.h b/src/objects/database/database.h index 07f67f424..233451a21 100644 --- a/src/objects/database/database.h +++ b/src/objects/database/database.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_DATABASE_H -#define NODE_SQLITE3_PLUS_DATABASE_H +#ifndef BETTER_SQLITE3_DATABASE_H +#define BETTER_SQLITE3_DATABASE_H // Dependencies #include diff --git a/src/objects/statement/build-bind-map.cc b/src/objects/statement/build-bind-map.cc deleted file mode 100644 index 0a86873ca..000000000 --- a/src/objects/statement/build-bind-map.cc +++ /dev/null @@ -1,12 +0,0 @@ -void Statement::BuildBindMap() { - int param_count = sqlite3_bind_parameter_count(st_handle); - v8::Local cons = v8::Local::Cast(db->handle()->GetHiddenValue(NEW_INTERNAL_STRING_FAST("NullFactory"))); - v8::Local namedParams = Nan::NewInstance(cons).ToLocalChecked(); - for (int i=1; i<=param_count; ++i) { - const char* name = sqlite3_bind_parameter_name(st_handle, i); - if (name != NULL) { - Nan::ForceSet(namedParams, NEW_INTERNAL_STRING8(name + 1), Nan::New((double)i)); - } - } - handle()->SetHiddenValue(NEW_INTERNAL_STRING_FAST("bindMap"), namedParams); -} diff --git a/src/objects/statement/statement.cc b/src/objects/statement/statement.cc index 63db4ba34..18e767fd1 100644 --- a/src/objects/statement/statement.cc +++ b/src/objects/statement/statement.cc @@ -18,7 +18,7 @@ #include "get.cc" #include "all.cc" #include "each.cc" -#include "build-bind-map.cc" +#include "util.cc" Statement::Statement() : Nan::ObjectWrap(), st_handle(NULL), @@ -47,9 +47,7 @@ void Statement::Init() { } CONSTRUCTOR(Statement::constructor); -bool Statement::Compare::operator() (const Statement* a, const Statement* b) { - return a->id < b->id; -} +// Returns true if the handles have not been previously closed. bool Statement::CloseHandles() { if (st_handle) { sqlite3_clear_bindings(st_handle); @@ -59,13 +57,3 @@ bool Statement::CloseHandles() { } return false; } -bool Statement::CloseIfPossible() { - if (!(state & BUSY)) { - CloseHandles(); - return true; - } - return false; -} -void Statement::EraseFromSet() { - db->stmts.erase(this); -} diff --git a/src/objects/statement/statement.h b/src/objects/statement/statement.h index 6abdd5d2e..e2fc0e68c 100644 --- a/src/objects/statement/statement.h +++ b/src/objects/statement/statement.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_STATEMENT_H -#define NODE_SQLITE3_PLUS_STATEMENT_H +#ifndef BETTER_SQLITE3_STATEMENT_H +#define BETTER_SQLITE3_STATEMENT_H // Dependencies #include diff --git a/src/objects/statement/util.cc b/src/objects/statement/util.cc new file mode 100644 index 000000000..4b143393c --- /dev/null +++ b/src/objects/statement/util.cc @@ -0,0 +1,34 @@ +// Used by std::set to organize the pointers it holds. +bool Statement::Compare::operator() (const Statement* a, const Statement* b) { + return a->id < b->id; +} + +// Closes all associated sqlite3 handles if the statement is not busy. +// Returns false if the transaction is busy. +bool Statement::CloseIfPossible() { + if (!(state & BUSY)) { + CloseHandles(); + return true; + } + return false; +} + +// Removes itself from its database's associated std::set. +void Statement::EraseFromSet() { + db->stmts.erase(this); +} + +// Builds a JavaScript object that maps the statement's parameter names +// with the parameter index of each one. +void Statement::BuildBindMap() { + int param_count = sqlite3_bind_parameter_count(st_handle); + v8::Local cons = v8::Local::Cast(db->handle()->GetHiddenValue(NEW_INTERNAL_STRING_FAST("NullFactory"))); + v8::Local namedParams = Nan::NewInstance(cons).ToLocalChecked(); + for (int i=1; i<=param_count; ++i) { + const char* name = sqlite3_bind_parameter_name(st_handle, i); + if (name != NULL) { + Nan::ForceSet(namedParams, NEW_INTERNAL_STRING8(name + 1), Nan::New((double)i)); + } + } + handle()->SetHiddenValue(NEW_INTERNAL_STRING_FAST("bindMap"), namedParams); +} diff --git a/src/objects/transaction/transaction.cc b/src/objects/transaction/transaction.cc index d6a4e0551..cd33a9a59 100644 --- a/src/objects/transaction/transaction.cc +++ b/src/objects/transaction/transaction.cc @@ -10,7 +10,7 @@ #include "busy.cc" #include "bind.cc" #include "run.cc" -#include "build-bind-map.cc" +#include "util.cc" Transaction::Transaction() : Nan::ObjectWrap(), handles(NULL), @@ -35,9 +35,7 @@ void Transaction::Init() { } CONSTRUCTOR(Transaction::constructor); -bool Transaction::Compare::operator() (const Transaction* a, const Transaction* b) { - return a->id < b->id; -} +// Returns true if the handles have not been previously closed. bool Transaction::CloseHandles() { if (handles) { for (unsigned int i=0; itranss.erase(this); -} diff --git a/src/objects/transaction/transaction.h b/src/objects/transaction/transaction.h index 61d64c15d..806811553 100644 --- a/src/objects/transaction/transaction.h +++ b/src/objects/transaction/transaction.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_TRANSACTION_H -#define NODE_SQLITE3_PLUS_TRANSACTION_H +#ifndef BETTER_SQLITE3_TRANSACTION_H +#define BETTER_SQLITE3_TRANSACTION_H // Dependencies #include diff --git a/src/objects/transaction/build-bind-map.cc b/src/objects/transaction/util.cc similarity index 53% rename from src/objects/transaction/build-bind-map.cc rename to src/objects/transaction/util.cc index 217ceb0de..1f8bfb911 100644 --- a/src/objects/transaction/build-bind-map.cc +++ b/src/objects/transaction/util.cc @@ -1,3 +1,26 @@ +// Used by std::set to organize the pointers it holds. +bool Transaction::Compare::operator() (const Transaction* a, const Transaction* b) { + return a->id < b->id; +} + +// Closes all associated sqlite3 handles if the transaction is not busy. +// Returns false if the transaction is busy. +bool Transaction::CloseIfPossible() { + if (!(state & BUSY)) { + CloseHandles(); + return true; + } + return false; +} + +// Removes itself from its database's associated std::set. +void Transaction::EraseFromSet() { + db->transs.erase(this); +} + +// Builds a JavaScript array that has an object for each sqlite3_stmt handle +// that has bind parameters. Each object maps the handle's parameter names +// to their respective parameter index. void Transaction::BuildBindMap() { v8::Local cons = v8::Local::Cast(db->handle()->GetHiddenValue(NEW_INTERNAL_STRING_FAST("NullFactory"))); v8::Local array = Nan::New(); @@ -16,4 +39,4 @@ void Transaction::BuildBindMap() { } } handle()->SetHiddenValue(NEW_INTERNAL_STRING_FAST("bindMap"), array); -} +} \ No newline at end of file diff --git a/src/util/data.h b/src/util/data.h index 0597ecd75..d0ed76359 100644 --- a/src/util/data.h +++ b/src/util/data.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_DATA_H -#define NODE_SQLITE3_PLUS_DATA_H +#ifndef BETTER_SQLITE3_DATA_H +#define BETTER_SQLITE3_DATA_H #include #include diff --git a/src/util/list.h b/src/util/list.h index 23a059e44..fe9c01f7b 100644 --- a/src/util/list.h +++ b/src/util/list.h @@ -1,6 +1,8 @@ -#ifndef NODE_SQLITE3_PLUS_LIST_H -#define NODE_SQLITE3_PLUS_LIST_H +#ifndef BETTER_SQLITE3_LIST_H +#define BETTER_SQLITE3_LIST_H +// This class is effectively a queue. +// Flushing happens in a first-in-first-out order. template class List { private: diff --git a/src/util/macros.h b/src/util/macros.h index b7720db84..bb19a6140 100644 --- a/src/util/macros.h +++ b/src/util/macros.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_MACROS_H -#define NODE_SQLITE3_PLUS_MACROS_H +#ifndef BETTER_SQLITE3_MACROS_H +#define BETTER_SQLITE3_MACROS_H #include #include diff --git a/src/util/strlcpy.h b/src/util/strlcpy.h index 889dcaa1d..39f4c055c 100644 --- a/src/util/strlcpy.h +++ b/src/util/strlcpy.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_STRLCPY_H -#define NODE_SQLITE3_PLUS_STRLCPY_H +#ifndef BETTER_SQLITE3_STRLCPY_H +#define BETTER_SQLITE3_STRLCPY_H /* * Copyright (c) 1998 Todd C. Miller diff --git a/src/util/transaction-handles.h b/src/util/transaction-handles.h index d950ef76b..d934fde55 100644 --- a/src/util/transaction-handles.h +++ b/src/util/transaction-handles.h @@ -1,8 +1,11 @@ -#ifndef NODE_SQLITE3_PLUS_TRANSACTION_HANDLES_H -#define NODE_SQLITE3_PLUS_TRANSACTION_HANDLES_H +#ifndef BETTER_SQLITE3_TRANSACTION_HANDLES_H +#define BETTER_SQLITE3_TRANSACTION_HANDLES_H #include +// A simple construct for holding three sqlite3_stmt pointers. +// After construction, if statusOut is SQLITE_OK, the three pointers +// can be used to start, commit, and rollback transactions. class TransactionHandles { public: TransactionHandles(sqlite3* db_handle, int* statusOut) diff --git a/src/workers/database-workers/close.h b/src/workers/database-workers/close.h index 3ce40c00e..bd4cd8bdb 100644 --- a/src/workers/database-workers/close.h +++ b/src/workers/database-workers/close.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_WORKER_CLOSE_H -#define NODE_SQLITE3_PLUS_WORKER_CLOSE_H +#ifndef BETTER_SQLITE3_WORKER_CLOSE_H +#define BETTER_SQLITE3_WORKER_CLOSE_H #include class Database; diff --git a/src/workers/database-workers/open.h b/src/workers/database-workers/open.h index 6ed91db5e..6fa9749b0 100644 --- a/src/workers/database-workers/open.h +++ b/src/workers/database-workers/open.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_WORKER_OPEN_H -#define NODE_SQLITE3_PLUS_WORKER_OPEN_H +#ifndef BETTER_SQLITE3_WORKER_OPEN_H +#define BETTER_SQLITE3_WORKER_OPEN_H #include class Database; diff --git a/src/workers/query-worker.h b/src/workers/query-worker.h index d7815d568..a2b982993 100644 --- a/src/workers/query-worker.h +++ b/src/workers/query-worker.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_WORKER_QUERY_WORKER_H -#define NODE_SQLITE3_PLUS_WORKER_QUERY_WORKER_H +#ifndef BETTER_SQLITE3_WORKER_QUERY_H +#define BETTER_SQLITE3_WORKER_QUERY_H #include #include diff --git a/src/workers/statement-workers/all.h b/src/workers/statement-workers/all.h index 7b6cd9eac..45fda5610 100644 --- a/src/workers/statement-workers/all.h +++ b/src/workers/statement-workers/all.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_WORKER_ALL_H -#define NODE_SQLITE3_PLUS_WORKER_ALL_H +#ifndef BETTER_SQLITE3_WORKER_ALL_H +#define BETTER_SQLITE3_WORKER_ALL_H #include #include diff --git a/src/workers/statement-workers/each.h b/src/workers/statement-workers/each.h index 9eb7cbb39..de59fa967 100644 --- a/src/workers/statement-workers/each.h +++ b/src/workers/statement-workers/each.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_WORKER_EACH_H -#define NODE_SQLITE3_PLUS_WORKER_EACH_H +#ifndef BETTER_SQLITE3_WORKER_EACH_H +#define BETTER_SQLITE3_WORKER_EACH_H #include #include diff --git a/src/workers/statement-workers/get.h b/src/workers/statement-workers/get.h index a3296b722..f2913cc0c 100644 --- a/src/workers/statement-workers/get.h +++ b/src/workers/statement-workers/get.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_WORKER_GET_H -#define NODE_SQLITE3_PLUS_WORKER_GET_H +#ifndef BETTER_SQLITE3_WORKER_GET_H +#define BETTER_SQLITE3_WORKER_GET_H #include #include diff --git a/src/workers/statement-workers/run.h b/src/workers/statement-workers/run.h index 3473ba878..e4dbf7377 100644 --- a/src/workers/statement-workers/run.h +++ b/src/workers/statement-workers/run.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_WORKER_RUN_H -#define NODE_SQLITE3_PLUS_WORKER_RUN_H +#ifndef BETTER_SQLITE3_WORKER_RUN_H +#define BETTER_SQLITE3_WORKER_RUN_H #include #include diff --git a/src/workers/transaction-worker.h b/src/workers/transaction-worker.h index 4294a135c..d7b7c9c96 100644 --- a/src/workers/transaction-worker.h +++ b/src/workers/transaction-worker.h @@ -1,5 +1,5 @@ -#ifndef NODE_SQLITE3_PLUS_WORKER_TRANSACTION_WORKER_H -#define NODE_SQLITE3_PLUS_WORKER_TRANSACTION_WORKER_H +#ifndef BETTER_SQLITE3_WORKER_TRANSACTION_H +#define BETTER_SQLITE3_WORKER_TRANSACTION_H #include #include diff --git a/test/affected.test.js b/test/affected.test.js deleted file mode 100644 index f0bf192e6..000000000 --- a/test/affected.test.js +++ /dev/null @@ -1,32 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('query properties', function() { - var db; - before(function(done) { - db = new sqlite3.Database(':memory:'); - db.run("CREATE TABLE foo (id INT, txt TEXT)", done); - }); - - it('should return the correct lastID', function(done) { - var stmt = db.prepare("INSERT INTO foo VALUES(?, ?)"); - var j = 1; - for (var i = 0; i < 1000; i++) { - stmt.run(i, "demo", function(err) { - if (err) throw err; - // Relies on SQLite's row numbering to be gapless and starting - // from 1. - assert.equal(j++, this.lastID); - }); - } - db.wait(done); - }); - - it('should return the correct changes count', function(done) { - db.run("UPDATE foo SET id = id + 1 WHERE id % 2 = 0", function(err) { - if (err) throw err; - assert.equal(500, this.changes); - done(); - }); - }); -}); diff --git a/test/blob.test.js b/test/blob.test.js deleted file mode 100644 index 5c2b0d857..000000000 --- a/test/blob.test.js +++ /dev/null @@ -1,54 +0,0 @@ -var sqlite3 = require('..'), - fs = require('fs'), - assert = require('assert'), - Buffer = require('buffer').Buffer; - -// lots of elmo -var elmo = fs.readFileSync(__dirname + '/support/elmo.png'); - -describe('blob', function() { - var db; - before(function(done) { - db = new sqlite3.Database(':memory:'); - db.run("CREATE TABLE elmos (id INT, image BLOB)", done); - }); - - var total = 10; - var inserted = 0; - var retrieved = 0; - - - it('should insert blobs', function(done) { - for (var i = 0; i < total; i++) { - db.run('INSERT INTO elmos (id, image) VALUES (?, ?)', i, elmo, function(err) { - if (err) throw err; - inserted++; - }); - } - db.wait(function() { - assert.equal(inserted, total); - done(); - }); - }); - - it('should retrieve the blobs', function(done) { - db.all('SELECT id, image FROM elmos ORDER BY id', function(err, rows) { - if (err) throw err; - for (var i = 0; i < rows.length; i++) { - assert.ok(Buffer.isBuffer(rows[i].image)); - assert.ok(elmo.length, rows[i].image); - - for (var j = 0; j < elmo.length; j++) { - if (elmo[j] !== rows[i].image[j]) { - assert.ok(false, "Wrong byte"); - } - } - - retrieved++; - } - - assert.equal(retrieved, total); - done(); - }); - }); -}); diff --git a/test/cache.test.js b/test/cache.test.js deleted file mode 100644 index 9866dbf97..000000000 --- a/test/cache.test.js +++ /dev/null @@ -1,42 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); -var helper = require('./support/helper'); - -describe('cache', function() { - before(function() { - helper.ensureExists('test/tmp'); - }); - - it('should cache Database objects while opening', function(done) { - var filename = 'test/tmp/test_cache.db'; - helper.deleteFile(filename); - var opened1 = false, opened2 = false; - var db1 = new sqlite3.cached.Database(filename, function(err) { - if (err) throw err; - opened1 = true; - if (opened1 && opened2) done(); - }); - var db2 = new sqlite3.cached.Database(filename, function(err) { - if (err) throw err; - opened2 = true; - if (opened1 && opened2) done(); - }); - assert.equal(db1, db2); - }); - - it('should cache Database objects after they are open', function(done) { - var filename = 'test/tmp/test_cache2.db'; - helper.deleteFile(filename); - var db1, db2; - db1 = new sqlite3.cached.Database(filename, function(err) { - if (err) throw err; - process.nextTick(function() { - db2 = new sqlite3.cached.Database(filename, function(err) { - done(); - - }); - assert.equal(db1, db2); - }); - }); - }); -}); diff --git a/test/constants.test.js b/test/constants.test.js deleted file mode 100644 index 126d10141..000000000 --- a/test/constants.test.js +++ /dev/null @@ -1,40 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('constants', function() { - it('should have the right OPEN_* flags', function() { - assert.ok(sqlite3.OPEN_READONLY === 1); - assert.ok(sqlite3.OPEN_READWRITE === 2); - assert.ok(sqlite3.OPEN_CREATE === 4); - }); - - it('should have the right error flags', function() { - assert.ok(sqlite3.OK === 0); - assert.ok(sqlite3.ERROR === 1); - assert.ok(sqlite3.INTERNAL === 2); - assert.ok(sqlite3.PERM === 3); - assert.ok(sqlite3.ABORT === 4); - assert.ok(sqlite3.BUSY === 5); - assert.ok(sqlite3.LOCKED === 6); - assert.ok(sqlite3.NOMEM === 7); - assert.ok(sqlite3.READONLY === 8); - assert.ok(sqlite3.INTERRUPT === 9); - assert.ok(sqlite3.IOERR === 10); - assert.ok(sqlite3.CORRUPT === 11); - assert.ok(sqlite3.NOTFOUND === 12); - assert.ok(sqlite3.FULL === 13); - assert.ok(sqlite3.CANTOPEN === 14); - assert.ok(sqlite3.PROTOCOL === 15); - assert.ok(sqlite3.EMPTY === 16); - assert.ok(sqlite3.SCHEMA === 17); - assert.ok(sqlite3.TOOBIG === 18); - assert.ok(sqlite3.CONSTRAINT === 19); - assert.ok(sqlite3.MISMATCH === 20); - assert.ok(sqlite3.MISUSE === 21); - assert.ok(sqlite3.NOLFS === 22); - assert.ok(sqlite3.AUTH === 23); - assert.ok(sqlite3.FORMAT === 24); - assert.ok(sqlite3.RANGE === 25); - assert.ok(sqlite3.NOTADB === 26); - }); -}); diff --git a/test/database_fail.test.js b/test/database_fail.test.js deleted file mode 100644 index 35589ece5..000000000 --- a/test/database_fail.test.js +++ /dev/null @@ -1,153 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('error handling', function() { - var db; - before(function(done) { - db = new sqlite3.Database(':memory:', done); - }); - - it('throw when calling Database() without new', function() { - assert.throws(function() { - sqlite3.Database(':memory:'); - }, (/Use the new operator to create new Database objects/)); - - assert.throws(function() { - sqlite3.Statement(); - }, (/Use the new operator to create new Statement objects/)); - }); - - it('should error when calling Database#get on a missing table', function(done) { - db.get('SELECT id, txt FROM foo', function(err, row) { - if (err) { - assert.equal(err.message, 'SQLITE_ERROR: no such table: foo'); - assert.equal(err.errno, sqlite3.ERROR); - assert.equal(err.code, 'SQLITE_ERROR'); - done(); - } else { - done(new Error('Completed query without error, but expected error')); - } - }); - }); - - it('Database#all prepare fail', function(done) { - db.all('SELECT id, txt FROM foo', function(err, row) { - if (err) { - assert.equal(err.message, 'SQLITE_ERROR: no such table: foo'); - assert.equal(err.errno, sqlite3.ERROR); - assert.equal(err.code, 'SQLITE_ERROR'); - done(); - } else { - done(new Error('Completed query without error, but expected error')); - } - }); - }); - - it('Database#run prepare fail', function(done) { - db.run('SELECT id, txt FROM foo', function(err, row) { - if (err) { - assert.equal(err.message, 'SQLITE_ERROR: no such table: foo'); - assert.equal(err.errno, sqlite3.ERROR); - assert.equal(err.code, 'SQLITE_ERROR'); - done(); - } else { - done(new Error('Completed query without error, but expected error')); - } - }); - }); - - it('Database#each prepare fail', function(done) { - db.each('SELECT id, txt FROM foo', function(err, row) { - assert.ok(false, "this should not be called"); - }, function(err, num) { - if (err) { - assert.equal(err.message, 'SQLITE_ERROR: no such table: foo'); - assert.equal(err.errno, sqlite3.ERROR); - assert.equal(err.code, 'SQLITE_ERROR'); - done(); - } else { - done(new Error('Completed query without error, but expected error')); - } - }); - }); - - it('Database#each prepare fail without completion handler', function(done) { - db.each('SELECT id, txt FROM foo', function(err, row) { - if (err) { - assert.equal(err.message, 'SQLITE_ERROR: no such table: foo'); - assert.equal(err.errno, sqlite3.ERROR); - assert.equal(err.code, 'SQLITE_ERROR'); - done(); - } else { - done(new Error('Completed query without error, but expected error')); - } - }); - }); - - it('Database#get prepare fail with param binding', function(done) { - db.get('SELECT id, txt FROM foo WHERE id = ?', 1, function(err, row) { - if (err) { - assert.equal(err.message, 'SQLITE_ERROR: no such table: foo'); - assert.equal(err.errno, sqlite3.ERROR); - assert.equal(err.code, 'SQLITE_ERROR'); - done(); - } else { - done(new Error('Completed query without error, but expected error')); - } - }); - }); - - it('Database#all prepare fail with param binding', function(done) { - db.all('SELECT id, txt FROM foo WHERE id = ?', 1, function(err, row) { - if (err) { - assert.equal(err.message, 'SQLITE_ERROR: no such table: foo'); - assert.equal(err.errno, sqlite3.ERROR); - assert.equal(err.code, 'SQLITE_ERROR'); - done(); - } else { - done(new Error('Completed query without error, but expected error')); - } - }); - }); - - it('Database#run prepare fail with param binding', function(done) { - db.run('SELECT id, txt FROM foo WHERE id = ?', 1, function(err, row) { - if (err) { - assert.equal(err.message, 'SQLITE_ERROR: no such table: foo'); - assert.equal(err.errno, sqlite3.ERROR); - assert.equal(err.code, 'SQLITE_ERROR'); - done(); - } else { - done(new Error('Completed query without error, but expected error')); - } - }); - }); - - it('Database#each prepare fail with param binding', function(done) { - db.each('SELECT id, txt FROM foo WHERE id = ?', 1, function(err, row) { - assert.ok(false, "this should not be called"); - }, function(err, num) { - if (err) { - assert.equal(err.message, 'SQLITE_ERROR: no such table: foo'); - assert.equal(err.errno, sqlite3.ERROR); - assert.equal(err.code, 'SQLITE_ERROR'); - done(); - } else { - done(new Error('Completed query without error, but expected error')); - } - }); - }); - - it('Database#each prepare fail with param binding without completion handler', function(done) { - db.each('SELECT id, txt FROM foo WHERE id = ?', 1, function(err, row) { - if (err) { - assert.equal(err.message, 'SQLITE_ERROR: no such table: foo'); - assert.equal(err.errno, sqlite3.ERROR); - assert.equal(err.code, 'SQLITE_ERROR'); - done(); - } else { - done(new Error('Completed query without error, but expected error')); - } - }); - }); -}); diff --git a/test/each.test.js b/test/each.test.js deleted file mode 100644 index 02729c64e..000000000 --- a/test/each.test.js +++ /dev/null @@ -1,38 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('each', function() { - var db; - before(function(done) { - db = new sqlite3.Database('test/support/big.db', sqlite3.OPEN_READONLY, done); - }); - - it('retrieve 100,000 rows with Statement#each', function(done) { - var total = 100000; - var retrieved = 0; - - db.each('SELECT id, txt FROM foo LIMIT 0, ?', total, function(err, row) { - if (err) throw err; - retrieved++; - }); - - db.wait(function() { - assert.equal(retrieved, total, "Only retrieved " + retrieved + " out of " + total + " rows."); - done(); - }); - }); - - it('Statement#each with complete callback', function(done) { - var total = 10000; - var retrieved = 0; - - db.each('SELECT id, txt FROM foo LIMIT 0, ?', total, function(err, row) { - if (err) throw err; - retrieved++; - }, function(err, num) { - assert.equal(retrieved, num); - assert.equal(retrieved, total, "Only retrieved " + retrieved + " out of " + total + " rows."); - done(); - }); - }); -}); diff --git a/test/exec.test.js b/test/exec.test.js deleted file mode 100644 index e3d55329a..000000000 --- a/test/exec.test.js +++ /dev/null @@ -1,39 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); -var fs = require('fs'); - -describe('exec', function() { - var db; - before(function(done) { - db = new sqlite3.Database(':memory:', done); - }); - - it('Database#exec', function(done) { - var sql = fs.readFileSync('test/support/script.sql', 'utf8'); - db.exec(sql, done); - }); - - it('retrieve database structure', function(done) { - db.all("SELECT type, name FROM sqlite_master ORDER BY type, name", function(err, rows) { - if (err) throw err; - assert.deepEqual(rows, [ - { type: 'index', name: 'grid_key_lookup' }, - { type: 'index', name: 'grid_utfgrid_lookup' }, - { type: 'index', name: 'images_id' }, - { type: 'index', name: 'keymap_lookup' }, - { type: 'index', name: 'map_index' }, - { type: 'index', name: 'name' }, - { type: 'table', name: 'grid_key' }, - { type: 'table', name: 'grid_utfgrid' }, - { type: 'table', name: 'images' }, - { type: 'table', name: 'keymap' }, - { type: 'table', name: 'map' }, - { type: 'table', name: 'metadata' }, - { type: 'view', name: 'grid_data' }, - { type: 'view', name: 'grids' }, - { type: 'view', name: 'tiles' } - ]); - done(); - }); - }); -}); diff --git a/test/extension.test.js b/test/extension.test.js deleted file mode 100644 index 36c350fa4..000000000 --- a/test/extension.test.js +++ /dev/null @@ -1,26 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); -var exists = require('fs').existsSync || require('path').existsSync; - -/* - -// disabled because this is not a generically safe test to run on all systems - -var spatialite_ext = '/usr/local/lib/libspatialite.dylib'; - -describe('loadExtension', function(done) { - var db; - before(function(done) { - db = new sqlite3.Database(':memory:', done); - }); - - if (exists(spatialite_ext)) { - it('libspatialite', function(done) { - db.loadExtension(spatialite_ext, done); - }); - } else { - it('libspatialite'); - } -}); - -*/ \ No newline at end of file diff --git a/test/fts-content.test.js b/test/fts-content.test.js deleted file mode 100644 index c7095a9cd..000000000 --- a/test/fts-content.test.js +++ /dev/null @@ -1,13 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('fts', function() { - var db; - before(function(done) { - db = new sqlite3.Database(':memory:', done); - }); - - it('should create a new fts4 table', function(done) { - db.exec('CREATE VIRTUAL TABLE t1 USING fts4(content="", a, b, c);', done); - }); -}); diff --git a/test/issue-108.test.js b/test/issue-108.test.js deleted file mode 100644 index 2ea69a30c..000000000 --- a/test/issue-108.test.js +++ /dev/null @@ -1,28 +0,0 @@ -var sqlite3 = require('..'), - assert = require('assert'); - -describe('buffer', function() { - var db; - // before(function() { - // }); - - it('should insert blobs', function(done) { - db = new sqlite3.Database(':memory:'); - db.serialize(function () { - - db.run("CREATE TABLE lorem (info BLOB)"); - var stmt = db.prepare("INSERT INTO lorem VALUES (?)"); - - stmt.on('error', function (err) { - throw err; - }); - - var buff = new Buffer(2); - stmt.run('a'); - stmt.finalize(); - }); - - db.close(done); - - }); -}); diff --git a/test/json.test.js b/test/json.test.js deleted file mode 100644 index 6d7d32dac..000000000 --- a/test/json.test.js +++ /dev/null @@ -1,22 +0,0 @@ -var sqlite3 = require('..'); - -if( process.env.NODE_SQLITE3_JSON1 === 'no' ){ - describe('json', function() { - it( - 'skips JSON tests when --sqlite=/usr (or similar) is tested', - function(){} - ); - }); -} else { - describe('json', function() { - var db; - - before(function(done) { - db = new sqlite3.Database(':memory:', done); - }); - - it('should select JSON', function(done) { - db.run('SELECT json(?)', JSON.stringify({ok:true}), done); - }); - }); -} diff --git a/test/map.test.js b/test/map.test.js deleted file mode 100644 index db190a7c2..000000000 --- a/test/map.test.js +++ /dev/null @@ -1,63 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('map', function() { - it('test Database#map() with two columns', function(done) { - var count = 10; - var inserted = 0; - - var db = new sqlite3.Database(':memory:'); - db.serialize(function() { - db.run("CREATE TABLE foo (id INT, value TEXT)"); - - var stmt = db.prepare("INSERT INTO foo VALUES(?, ?)"); - for (var i = 5; i < count; i++) { - stmt.run(i, 'Value for ' + i, function(err) { - if (err) throw err; - inserted++; - }); - } - stmt.finalize(); - - db.map("SELECT * FROM foo", function(err, map) { - if (err) throw err; - assert.deepEqual(map, { 5: 'Value for 5', 6: 'Value for 6', 7: 'Value for 7', 8: 'Value for 8', 9: 'Value for 9' }); - assert.equal(inserted, 5); - done(); - }); - }); - }); - - it('test Database#map() with three columns', function(done) { - var db = new sqlite3.Database(':memory:'); - - var count = 10; - var inserted = 0; - - db.serialize(function() { - db.run("CREATE TABLE foo (id INT, value TEXT, other TEXT)"); - - var stmt = db.prepare("INSERT INTO foo VALUES(?, ?, ?)"); - for (var i = 5; i < count; i++) { - stmt.run(i, 'Value for ' + i, null, function(err) { - if (err) throw err; - inserted++; - }); - } - stmt.finalize(); - - db.map("SELECT * FROM foo", function(err, map) { - if (err) throw err; - assert.deepEqual(map, { - 5: { id: 5, value: 'Value for 5', other: null }, - 6: { id: 6, value: 'Value for 6', other: null }, - 7: { id: 7, value: 'Value for 7', other: null }, - 8: { id: 8, value: 'Value for 8', other: null }, - 9: { id: 9, value: 'Value for 9', other: null } - }); - assert.equal(inserted, 5); - done(); - }); - }); - }); -}); diff --git a/test/named_columns.test.js b/test/named_columns.test.js deleted file mode 100644 index 9973bfcee..000000000 --- a/test/named_columns.test.js +++ /dev/null @@ -1,38 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('named columns', function() { - var db; - before(function(done) { - db = new sqlite3.Database(':memory:', done); - }); - - it('should create the table', function(done) { - db.run("CREATE TABLE foo (txt TEXT, num INT)", done); - }); - - it('should insert a value', function(done) { - db.run("INSERT INTO foo VALUES($text, $id)", { - $id: 1, - $text: "Lorem Ipsum" - }, done); - }); - - it('should retrieve the values', function(done) { - db.get("SELECT txt, num FROM foo ORDER BY num", function(err, row) { - if (err) throw err; - assert.equal(row.txt, "Lorem Ipsum"); - assert.equal(row.num, 1); - done(); - }); - }); - - it('should be able to retrieve rowid of last inserted value', function(done) { - db.get("SELECT last_insert_rowid() as last_id FROM foo", function(err, row) { - if (err) throw err; - assert.equal(row.last_id, 1); - done(); - }); - }); - -}); diff --git a/test/named_params.test.js b/test/named_params.test.js deleted file mode 100644 index c03f2dd75..000000000 --- a/test/named_params.test.js +++ /dev/null @@ -1,69 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('named parameters', function() { - var db; - before(function(done) { - db = new sqlite3.Database(':memory:', done); - }); - - it('should create the table', function(done) { - db.run("CREATE TABLE foo (txt TEXT, num INT)", done); - }); - - it('should insert a value with $ placeholders', function(done) { - db.run("INSERT INTO foo VALUES($text, $id)", { - $id: 1, - $text: "Lorem Ipsum" - }, done); - }); - - it('should insert a value with : placeholders', function(done) { - db.run("INSERT INTO foo VALUES(:text, :id)", { - ':id': 2, - ':text': "Dolor Sit Amet" - }, done); - }); - - it('should insert a value with @ placeholders', function(done) { - db.run("INSERT INTO foo VALUES(@txt, @id)", { - "@id": 3, - "@txt": "Consectetur Adipiscing Elit" - }, done); - }); - - it('should insert a value with @ placeholders using an array', function(done) { - db.run("INSERT INTO foo VALUES(@txt, @id)", [ 'Sed Do Eiusmod', 4 ], done); - }); - - it('should insert a value with indexed placeholders', function(done) { - db.run("INSERT INTO foo VALUES(?2, ?4)", - [ null, 'Tempor Incididunt', null, 5 ], done); - }); - - it('should insert a value with autoindexed placeholders', function(done) { - db.run("INSERT INTO foo VALUES(?, ?)", { - 2: 6, - 1: "Ut Labore Et Dolore" - }, done); - }); - - it('should retrieve all inserted values', function(done) { - db.all("SELECT txt, num FROM foo ORDER BY num", function(err, rows) { - if (err) throw err; - assert.equal(rows[0].txt, "Lorem Ipsum"); - assert.equal(rows[0].num, 1); - assert.equal(rows[1].txt, "Dolor Sit Amet"); - assert.equal(rows[1].num, 2); - assert.equal(rows[2].txt, "Consectetur Adipiscing Elit"); - assert.equal(rows[2].num, 3); - assert.equal(rows[3].txt, "Sed Do Eiusmod"); - assert.equal(rows[3].num, 4); - assert.equal(rows[4].txt, "Tempor Incididunt"); - assert.equal(rows[4].num, 5); - assert.equal(rows[5].txt, "Ut Labore Et Dolore"); - assert.equal(rows[5].num, 6); - done(); - }); - }); -}); diff --git a/test/null_error.test.js b/test/null_error.test.js deleted file mode 100644 index 8c34d9bf8..000000000 --- a/test/null_error.test.js +++ /dev/null @@ -1,41 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); -var helper = require('./support/helper'); - -describe('null error', function() { - var filename = 'test/tmp/test_sqlite_ok_error.db'; - var db; - - before(function(done) { - helper.ensureExists('test/tmp'); - helper.deleteFile(filename); - db = new sqlite3.Database(filename, done); - }); - - it('should create a table', function(done) { - db.run("CREATE TABLE febp_data (leacode TEXT, leaname TEXT, state TEXT, postcode TEXT, fips TEXT, titleistim TEXT, ideastim TEXT, ideapool TEXT, ideapoolname TEXT, localebasis TEXT, localetype2 TEXT, version TEXT, leacount_2006 TEXT, ppexpend_2005 TEXT, ppexpend_2006 TEXT, ppexpend_2007 TEXT, ppexpend_2008 TEXT, ppexpendrank_2006 TEXT, ppexpendrank_2007 TEXT, ppexpendrank_2008 TEXT, rankppexpend_2005 TEXT, opbud_2004 TEXT, opbud_2006 TEXT, opbud_2007 TEXT, opbud_2008 TEXT, titlei_2004 TEXT, titlei_2006 TEXT, titlei_2007 TEXT, titlei_2008 TEXT, titlei_2009 TEXT, titlei_2010 TEXT, idea_2004 TEXT, idea_2005 TEXT, idea_2006 TEXT, idea_2007 TEXT, idea_2008 TEXT, idea_2009 TEXT, ideaest_2010 TEXT, impact_2007 TEXT, impact_2008 TEXT, impact_2009 TEXT, impact_2010 TEXT, fedrev_2006 TEXT, fedrev_2007 TEXT, fedrev_2008 TEXT, schonut_2006 TEXT, schonut_2007 TEXT, schomeal_2006 TEXT, schomeal_2007 TEXT, schoco_2006 TEXT, schocom_2007 TEXT, medicaid_2006 TEXT, medicaid_2007 TEXT, medicaid_2008 TEXT, cenpov_2004 TEXT, cenpov_2007 TEXT, cenpov_2008 TEXT, rankcenpov_2004 TEXT, rankcenpov_2007 TEXT, rankcenpov_2008 TEXT, enroll_2006 TEXT, enroll_2007 TEXT, enroll_2008 TEXT, white_2006 TEXT, white_2007 TEXT, white_2008 TEXT, afam_2006 TEXT, afam_2007 TEXT, afam_2008 TEXT, amin_2006 TEXT, amin_2007 TEXT, amin_2008 TEXT, asian_2006 TEXT, asian_2007 TEXT, asian_2008 TEXT, hisp_2006 TEXT, hisp_2007 TEXT, hisp_2008 TEXT, frpl_2006 TEXT, frpl_2007 TEXT, frpl_2008 TEXT, ell_2006 TEXT, ell_2007 TEXT, ell_2008 TEXT, sped_2006 TEXT, sped_2007 TEXT, sped_2008 TEXT, state4read_2005 TEXT, state4read_2006 TEXT, state4read_2007 TEXT, state4read_2008 TEXT, state4read_2009 TEXT, state4math_2005 TEXT, state4math_2006 TEXT, state4math_2007 TEXT, state4math_2008 TEXT, state4math_2009 TEXT, minor_2007 TEXT, minor_2008 TEXT, state8math_2006 TEXT, state8math_2007 TEXT, state8math_2008 TEXT, state8math_2009 TEXT, state8read_2006 TEXT, state8read_2007 TEXT, state8read_2008 TEXT, state8read_2009 TEXT, statehsmath_2006 TEXT, statehsmath_2007 TEXT, statehsmath_2008 TEXT, statehsmath_2009 TEXT, statehsread_2006 TEXT, statehsread_2007 TEXT, statehsread_2008 TEXT, statehsread_2009 TEXT)", done); - }); - - it('should insert rows with lots of null values', function(done) { - var stmt = db.prepare('INSERT INTO febp_data VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', function(err) { - if (err) throw err; - - for (var i = 0; i < 100; i++) { - stmt.run([ '100005', 'Albertville City School District', 'ALABAMA', 'AL', '1', '856031', '753000', 'NULL', 'NULL', '6-Small Town', 'Town', 21, '130', '6624', '7140', '8731', '8520', '102', '88', '100', '94', '23352000', '27280000', '30106000', '33028000', '768478', '845886', '782696', '1096819', '1279663', '1168521', '561522', '657649', '684366', '687531', '710543', '727276', '726647', 'N/A', 'N/A', 'N/A', 'N/A', '986', '977', '1006', '1080250', '1202325', '1009962', '1109310', '70287', '93015', '14693.56', '13634.58', 'N/A', '0.230', '0.301', '0.268882175', '73', '26', '29', '3718', '3747', '3790', '2663', '2615', '2575', '75', '82', '89', '3', '2', '6', '11', '9', '8', '955', '1028', '1102', '1991', '2061', '2146', '649', '729', '770', '443', '278', '267', '0.860', '0.86', '0.8474', '0.84', '0.8235', '0.810', '0.84', '0.7729', '0.75', '0.7843', '1121', '1205', '0.74', '0.6862', '0.72', '0.7317', '0.78', '0.7766', '0.79', '0.7387', '0.84', '0.9255', '0.86', '0.9302', '0.88', '0.9308', '0.84', '0.8605' ]); - } - - stmt.finalize(function(err) { - if (err) throw err; - done(); - }); - }); - }); - - it('should have created the database', function() { - assert.fileExists(filename); - }); - - after(function() { - helper.deleteFile(filename); - }); -}); diff --git a/test/nw/.gitignore b/test/nw/.gitignore deleted file mode 100644 index 107e60536..000000000 --- a/test/nw/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node-webkit.app -node-webkit-v0.8.4-osx-ia32.zip -node_modules \ No newline at end of file diff --git a/test/nw/Makefile b/test/nw/Makefile deleted file mode 100755 index 9c8223301..000000000 --- a/test/nw/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -NODE_WEBKIT_VERSION=0.8.4 - -all: app.nw - -node_modules/sqlite3: - npm install https://github.com/mapbox/node-sqlite3/tarball/master --build-from-source --runtime=node-webkit --target_arch=ia32 --target=$(NODE_WEBKIT_VERSION) - -rebuild: - cd node_modules/sqlite3 && ./node_modules/.bin/node-pre-gyp rebuild --runtime=node-webkit --target_arch=ia32 --target=$(NODE_WEBKIT_VERSION) - -node-webkit-v$(NODE_WEBKIT_VERSION)-osx-ia32.zip: - wget https://s3.amazonaws.com/node-webkit/v$(NODE_WEBKIT_VERSION)/node-webkit-v$(NODE_WEBKIT_VERSION)-osx-ia32.zip - -./node-webkit.app: node-webkit-v$(NODE_WEBKIT_VERSION)-osx-ia32.zip - unzip -o node-webkit-v$(NODE_WEBKIT_VERSION)-osx-ia32.zip - -app.nw: ./node-webkit.app Makefile package.json index.html node_modules/sqlite3 - zip app.nw index.html package.json node_modules - -test: ./node-webkit.app app.nw - ./node-webkit.app/Contents/MacOS/node-webkit app.nw - -package: ./node-webkit.app Makefile package.json index.html node_modules/sqlite3 - rm -rf node-sqlite-test.app - cp -r ./node-webkit.app node-sqlite-test.app - mkdir ./node-sqlite-test.app/Contents/Resources/app.nw/ - cp package.json ./node-sqlite-test.app/Contents/Resources/app.nw/ - cp index.html ./node-sqlite-test.app/Contents/Resources/app.nw/ - cp -r node_modules/ ./node-sqlite-test.app/Contents/Resources/app.nw/ - ./node-sqlite-test.app/Contents/MacOS/node-webkit - -clean: - rm -rf ./node_modules/sqlite3 - rm -f ./app.nw - rm -rf node-sqlite-test.app - rm -f credits.html - rm -f nwsnapshot - -.PHONY: test diff --git a/test/nw/index.html b/test/nw/index.html deleted file mode 100644 index 9a1bb906c..000000000 --- a/test/nw/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - Hello World! - - -

Hello World!

- Using node-sqlite3: - . - - \ No newline at end of file diff --git a/test/nw/package.json b/test/nw/package.json deleted file mode 100644 index d1b4aeef2..000000000 --- a/test/nw/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "nw-demo", - "main": "index.html", - "window": { - "toolbar": false, - "width": 800, - "height": 600 - } -} \ No newline at end of file diff --git a/test/open_close.test.js b/test/open_close.test.js deleted file mode 100644 index 649e21789..000000000 --- a/test/open_close.test.js +++ /dev/null @@ -1,129 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); -var fs = require('fs'); -var helper = require('./support/helper'); - -describe('open/close', function() { - before(function() { - helper.ensureExists('test/tmp'); - }); - - describe('open and close non-existant database', function() { - before(function() { - helper.deleteFile('test/tmp/test_create.db'); - }); - - var db; - it('should open the database', function(done) { - db = new sqlite3.Database('test/tmp/test_create.db', done); - }); - - it('should close the database', function(done) { - db.close(done); - }); - - it('should have created the file', function() { - assert.fileExists('test/tmp/test_create.db'); - }); - - after(function() { - helper.deleteFile('test/tmp/test_create.db'); - }); - }); - - it('should not be unable to open an inaccessible database', function(done) { - // NOTE: test assumes that the user is not allowed to create new files - // in /usr/bin. - var db = new sqlite3.Database('/test/tmp/directory-does-not-exist/test.db', function(err) { - if (err && err.errno === sqlite3.CANTOPEN) { - done(); - } else if (err) { - done(err); - } else { - done('Opened database that should be inaccessible'); - } - }); - }); - - - describe('creating database without create flag', function() { - before(function() { - helper.deleteFile('test/tmp/test_readonly.db'); - }); - - it('should fail to open the database', function(done) { - new sqlite3.Database('tmp/test_readonly.db', sqlite3.OPEN_READONLY, function(err) { - if (err && err.errno === sqlite3.CANTOPEN) { - done(); - } else if (err) { - done(err); - } else { - done('Created database without create flag'); - } - }); - }); - - it('should not have created the file', function() { - assert.fileDoesNotExist('test/tmp/test_readonly.db'); - }); - - after(function() { - helper.deleteFile('test/tmp/test_readonly.db'); - }); - }); - - describe('open and close memory database queuing', function() { - var db; - it('should open the database', function(done) { - db = new sqlite3.Database(':memory:', done); - }); - - it('should close the database', function(done) { - db.close(done); - }); - - it('shouldn\'t close the database again', function(done) { - db.close(function(err) { - assert.ok(err, 'No error object received on second close'); - assert.ok(err.errno === sqlite3.MISUSE); - done(); - }); - }); - }); - - describe('closing with unfinalized statements', function(done) { - var completed = false; - var completedSecond = false; - var closed = false; - - var db; - before(function() { - db = new sqlite3.Database(':memory:', done); - }); - - it('should create a table', function(done) { - db.run("CREATE TABLE foo (id INT, num INT)", done); - }); - - var stmt; - it('should prepare/run a statement', function(done) { - stmt = db.prepare('INSERT INTO foo VALUES (?, ?)'); - stmt.run(1, 2, done); - }); - - it('should fail to close the database', function(done) { - db.close(function(err) { - assert.ok(err.message, - "SQLITE_BUSY: unable to close due to unfinalised statements"); - done(); - }); - }); - - it('should succeed to close the database after finalizing', function(done) { - stmt.run(3, 4, function() { - stmt.finalize(); - db.close(done); - }); - }); - }); -}); diff --git a/test/other_objects.test.js b/test/other_objects.test.js deleted file mode 100644 index 155951791..000000000 --- a/test/other_objects.test.js +++ /dev/null @@ -1,89 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('data types', function() { - var db; - before(function(done) { - db = new sqlite3.Database(':memory:'); - db.run("CREATE TABLE txt_table (txt TEXT)"); - db.run("CREATE TABLE int_table (int INTEGER)"); - db.run("CREATE TABLE flt_table (flt FLOAT)"); - db.wait(done); - }); - - beforeEach(function(done) { - db.exec('DELETE FROM txt_table; DELETE FROM int_table; DELETE FROM flt_table;', done); - }); - - it('should serialize Date()', function(done) { - var date = new Date(); - db.run("INSERT INTO int_table VALUES(?)", date, function (err) { - if (err) throw err; - db.get("SELECT int FROM int_table", function(err, row) { - if (err) throw err; - assert.equal(row.int, +date); - done(); - }); - }); - }); - - it('should serialize RegExp()', function(done) { - var regexp = /^f\noo/; - db.run("INSERT INTO txt_table VALUES(?)", regexp, function (err) { - if (err) throw err; - db.get("SELECT txt FROM txt_table", function(err, row) { - if (err) throw err; - assert.equal(row.txt, String(regexp)); - done(); - }); - }); - }); - - [ - 4294967296.249, - Math.PI, - 3924729304762836.5, - new Date().valueOf(), - 912667.394828365, - 2.3948728634826374e+83, - 9.293476892934982e+300, - Infinity, - -9.293476892934982e+300, - -2.3948728634826374e+83, - -Infinity - ].forEach(function(flt) { - it('should serialize float ' + flt, function(done) { - db.run("INSERT INTO flt_table VALUES(?)", flt, function (err) { - if (err) throw err; - db.get("SELECT flt FROM flt_table", function(err, row) { - if (err) throw err; - assert.equal(row.flt, flt); - done(); - }); - }); - }); - }); - - [ - 4294967299, - 3924729304762836, - new Date().valueOf(), - 2.3948728634826374e+83, - 9.293476892934982e+300, - Infinity, - -9.293476892934982e+300, - -2.3948728634826374e+83, - -Infinity - ].forEach(function(integer) { - it('should serialize integer ' + integer, function(done) { - db.run("INSERT INTO int_table VALUES(?)", integer, function (err) { - if (err) throw err; - db.get("SELECT int AS integer FROM int_table", function(err, row) { - if (err) throw err; - assert.equal(row.integer, integer); - done(); - }); - }); - }); - }); -}); diff --git a/test/parallel_insert.test.js b/test/parallel_insert.test.js deleted file mode 100644 index fc3829bc0..000000000 --- a/test/parallel_insert.test.js +++ /dev/null @@ -1,44 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); -var helper = require('./support/helper'); - -describe('parallel', function() { - var db; - before(function(done) { - helper.deleteFile('test/tmp/test_parallel_inserts.db'); - helper.ensureExists('test/tmp'); - db = new sqlite3.Database('test/tmp/test_parallel_inserts.db', done); - }); - - var columns = []; - for (var i = 0; i < 128; i++) { - columns.push('id' + i); - } - - it('should create the table', function(done) { - db.run("CREATE TABLE foo (" + columns + ")", done); - }); - - it('should insert in parallel', function(done) { - for (var i = 0; i < 1000; i++) { - for (var values = [], j = 0; j < columns.length; j++) { - values.push(i * j); - } - db.run("INSERT INTO foo VALUES (" + values + ")"); - } - - db.wait(done); - }); - - it('should close the database', function(done) { - db.close(done); - }); - - it('should verify that the database exists', function() { - assert.fileExists('test/tmp/test_parallel_inserts.db'); - }); - - after(function() { - helper.deleteFile('test/tmp/test_parallel_inserts.db'); - }); -}); diff --git a/test/prepare.test.js b/test/prepare.test.js deleted file mode 100644 index c32db72a4..000000000 --- a/test/prepare.test.js +++ /dev/null @@ -1,427 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('prepare', function() { - describe('invalid SQL', function() { - var db; - before(function(done) { db = new sqlite3.Database(':memory:', done); }); - - var stmt; - it('should fail preparing a statement with invalid SQL', function(done) { - stmt = db.prepare('CRATE TALE foo text bar)', function(err, statement) { - if (err && err.errno == sqlite3.ERROR && - err.message === 'SQLITE_ERROR: near "CRATE": syntax error') { - done(); - } - else throw err; - }); - }); - - after(function(done) { db.close(done); }); - }); - - describe('simple prepared statement', function() { - var db; - before(function(done) { db = new sqlite3.Database(':memory:', done); }); - - it('should prepare, run and finalize the statement', function(done) { - db.prepare("CREATE TABLE foo (text bar)") - .run() - .finalize(done); - }); - - after(function(done) { db.close(done); }); - }); - - describe('inserting and retrieving rows', function() { - var db; - before(function(done) { db = new sqlite3.Database(':memory:', done); }); - - var inserted = 0; - var retrieved = 0; - - // We insert and retrieve that many rows. - var count = 1000; - - it('should create the table', function(done) { - db.prepare("CREATE TABLE foo (txt text, num int, flt float, blb blob)").run().finalize(done); - }); - - it('should insert ' + count + ' rows', function(done) { - for (var i = 0; i < count; i++) { - db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)").run( - 'String ' + i, - i, - i * Math.PI, - // null (SQLite sets this implicitly) - function(err) { - if (err) throw err; - inserted++; - } - ).finalize(function(err) { - if (err) throw err; - if (inserted == count) done(); - }); - } - }); - - it('should prepare a statement and run it ' + (count + 5) + ' times', function(done) { - var stmt = db.prepare("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err) { - if (err) throw err; - assert.equal(stmt.sql, 'SELECT txt, num, flt, blb FROM foo ORDER BY num'); - }); - - for (var i = 0; i < count + 5; i++) (function(i) { - stmt.get(function(err, row) { - if (err) throw err; - - if (retrieved >= 1000) { - assert.equal(row, undefined); - } else { - assert.equal(row.txt, 'String ' + i); - assert.equal(row.num, i); - assert.equal(row.flt, i * Math.PI); - assert.equal(row.blb, null); - } - - retrieved++; - }); - })(i); - - stmt.finalize(done); - }); - - it('should have retrieved ' + (count + 5) + ' rows', function() { - assert.equal(count + 5, retrieved, "Didn't retrieve all rows"); - }); - - - after(function(done) { db.close(done); }); - }); - - describe('inserting with accidental undefined', function() { - var db; - before(function(done) { db = new sqlite3.Database(':memory:', done); }); - - var inserted = 0; - var retrieved = 0; - - it('should create the table', function(done) { - db.prepare("CREATE TABLE foo (num int)").run().finalize(done); - }); - - it('should insert two rows', function(done) { - db.prepare('INSERT INTO foo VALUES(4)').run(function(err) { - if (err) throw err; - inserted++; - }).run(undefined, function (err) { - // The second time we pass undefined as a parameter. This is - // a mistake, but it should either throw an error or be ignored, - // not silently fail to run the statement. - if (err) throw err; - inserted++; - }).finalize(function(err) { - if (err) throw err; - if (inserted == 2) done(); - }); - }); - - it('should retrieve the data', function(done) { - var stmt = db.prepare("SELECT num FROM foo", function(err) { - if (err) throw err; - }); - - for (var i = 0; i < 2; i++) (function(i) { - stmt.get(function(err, row) { - if (err) throw err; - assert(row); - assert.equal(row.num, 4); - retrieved++; - }); - })(i); - - stmt.finalize(done); - }); - - it('should have retrieved two rows', function() { - assert.equal(2, retrieved, "Didn't retrieve all rows"); - }); - - after(function(done) { db.close(done); }); - }); - - describe('retrieving reset() function', function() { - var db; - before(function(done) { db = new sqlite3.Database('test/support/prepare.db', sqlite3.OPEN_READONLY, done); }); - - var retrieved = 0; - - it('should retrieve the same row over and over again', function(done) { - var stmt = db.prepare("SELECT txt, num, flt, blb FROM foo ORDER BY num"); - for (var i = 0; i < 10; i++) { - stmt.reset(); - stmt.get(function(err, row) { - if (err) throw err; - assert.equal(row.txt, 'String 0'); - assert.equal(row.num, 0); - assert.equal(row.flt, 0.0); - assert.equal(row.blb, null); - retrieved++; - }); - } - stmt.finalize(done); - }); - - it('should have retrieved 10 rows', function() { - assert.equal(10, retrieved, "Didn't retrieve all rows"); - }); - - after(function(done) { db.close(done); }); - }); - - describe('multiple get() parameter binding', function() { - var db; - before(function(done) { db = new sqlite3.Database('test/support/prepare.db', sqlite3.OPEN_READONLY, done); }); - - var retrieved = 0; - - it('should retrieve particular rows', function(done) { - var stmt = db.prepare("SELECT txt, num, flt, blb FROM foo WHERE num = ?"); - - for (var i = 0; i < 10; i++) (function(i) { - stmt.get(i * 10 + 1, function(err, row) { - if (err) throw err; - var val = i * 10 + 1; - assert.equal(row.txt, 'String ' + val); - assert.equal(row.num, val); - assert.equal(row.flt, val * Math.PI); - assert.equal(row.blb, null); - retrieved++; - }); - })(i); - - stmt.finalize(done); - }); - - it('should have retrieved 10 rows', function() { - assert.equal(10, retrieved, "Didn't retrieve all rows"); - }); - - after(function(done) { db.close(done); }); - }); - - describe('prepare() parameter binding', function() { - var db; - before(function(done) { db = new sqlite3.Database('test/support/prepare.db', sqlite3.OPEN_READONLY, done); }); - - var retrieved = 0; - - it('should retrieve particular rows', function(done) { - db.prepare("SELECT txt, num, flt, blb FROM foo WHERE num = ? AND txt = ?", 10, 'String 10') - .get(function(err, row) { - if (err) throw err; - assert.equal(row.txt, 'String 10'); - assert.equal(row.num, 10); - assert.equal(row.flt, 10 * Math.PI); - assert.equal(row.blb, null); - retrieved++; - }) - .finalize(done); - }); - - it('should have retrieved 1 row', function() { - assert.equal(1, retrieved, "Didn't retrieve all rows"); - }); - - after(function(done) { db.close(done); }); - }); - - describe('all()', function() { - var db; - before(function(done) { db = new sqlite3.Database('test/support/prepare.db', sqlite3.OPEN_READONLY, done); }); - - var retrieved = 0; - var count = 1000; - - it('should retrieve particular rows', function(done) { - db.prepare("SELECT txt, num, flt, blb FROM foo WHERE num < ? ORDER BY num", count) - .all(function(err, rows) { - if (err) throw err; - for (var i = 0; i < rows.length; i++) { - assert.equal(rows[i].txt, 'String ' + i); - assert.equal(rows[i].num, i); - assert.equal(rows[i].flt, i * Math.PI); - assert.equal(rows[i].blb, null); - retrieved++; - } - }) - .finalize(done); - }); - - it('should have retrieved all rows', function() { - assert.equal(count, retrieved, "Didn't retrieve all rows"); - }); - - after(function(done) { db.close(done); }); - }); - - describe('all()', function() { - var db; - before(function(done) { db = new sqlite3.Database('test/support/prepare.db', sqlite3.OPEN_READONLY, done); }); - - it('should retrieve particular rows', function(done) { - db.prepare("SELECT txt, num, flt, blb FROM foo WHERE num > 5000") - .all(function(err, rows) { - if (err) throw err; - assert.ok(rows.length === 0); - }) - .finalize(done); - }); - - after(function(done) { db.close(done); }); - }); - - describe('high concurrency', function() { - var db; - before(function(done) { db = new sqlite3.Database(':memory:', done); }); - - function randomString() { - var str = ''; - for (var i = Math.random() * 300; i > 0; i--) { - str += String.fromCharCode(Math.floor(Math.random() * 256)); - } - return str; - } - - // Generate random data. - var data = []; - var length = Math.floor(Math.random() * 1000) + 200; - for (var i = 0; i < length; i++) { - data.push([ randomString(), i, i * Math.random(), null ]); - } - - var inserted = 0; - var retrieved = 0; - - it('should create the table', function(done) { - db.prepare("CREATE TABLE foo (txt text, num int, flt float, blb blob)").run().finalize(done); - }); - - it('should insert all values', function(done) { - for (var i = 0; i < data.length; i++) { - var stmt = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)"); - stmt.run(data[i][0], data[i][1], data[i][2], data[i][3], function(err) { - if (err) throw err; - inserted++; - }).finalize(function(err) { - if (err) throw err; - if (inserted == data.length) done(); - }); - } - }); - - it('should retrieve all values', function(done) { - db.prepare("SELECT txt, num, flt, blb FROM foo") - .all(function(err, rows) { - if (err) throw err; - - for (var i = 0; i < rows.length; i++) { - assert.ok(data[rows[i].num] !== true); - - assert.equal(rows[i].txt, data[rows[i].num][0]); - assert.equal(rows[i].num, data[rows[i].num][1]); - assert.equal(rows[i].flt, data[rows[i].num][2]); - assert.equal(rows[i].blb, data[rows[i].num][3]); - - // Mark the data row as already retrieved. - data[rows[i].num] = true; - retrieved++; - - } - - assert.equal(retrieved, data.length); - assert.equal(retrieved, inserted); - }) - .finalize(done); - }); - - after(function(done) { db.close(done); }); - }); - - - describe('test Database#get()', function() { - var db; - before(function(done) { db = new sqlite3.Database('test/support/prepare.db', sqlite3.OPEN_READONLY, done); }); - - var retrieved = 0; - - it('should get a row', function(done) { - db.get("SELECT txt, num, flt, blb FROM foo WHERE num = ? AND txt = ?", 10, 'String 10', function(err, row) { - if (err) throw err; - assert.equal(row.txt, 'String 10'); - assert.equal(row.num, 10); - assert.equal(row.flt, 10 * Math.PI); - assert.equal(row.blb, null); - retrieved++; - done(); - }); - }); - - it('should have retrieved all rows', function() { - assert.equal(1, retrieved, "Didn't retrieve all rows"); - }); - - after(function(done) { db.close(done); }); - }); - - describe('Database#run() and Database#all()', function() { - var db; - before(function(done) { db = new sqlite3.Database(':memory:', done); }); - - var inserted = 0; - var retrieved = 0; - - // We insert and retrieve that many rows. - var count = 1000; - - it('should create the table', function(done) { - db.run("CREATE TABLE foo (txt text, num int, flt float, blb blob)", done); - }); - - it('should insert ' + count + ' rows', function(done) { - for (var i = 0; i < count; i++) { - db.run("INSERT INTO foo VALUES(?, ?, ?, ?)", - 'String ' + i, - i, - i * Math.PI, - // null (SQLite sets this implicitly) - function(err) { - if (err) throw err; - inserted++; - if (inserted == count) done(); - } - ); - } - }); - - it('should retrieve all rows', function(done) { - db.all("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err, rows) { - if (err) throw err; - for (var i = 0; i < rows.length; i++) { - assert.equal(rows[i].txt, 'String ' + i); - assert.equal(rows[i].num, i); - assert.equal(rows[i].flt, i * Math.PI); - assert.equal(rows[i].blb, null); - retrieved++; - } - - assert.equal(retrieved, count); - assert.equal(retrieved, inserted); - - done(); - }); - }); - - after(function(done) { db.close(done); }); - }); -}); diff --git a/test/profile.test.js b/test/profile.test.js deleted file mode 100644 index 6545f09c9..000000000 --- a/test/profile.test.js +++ /dev/null @@ -1,57 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('profiling', function() { - var create = false; - var select = false; - - var db; - before(function(done) { - db = new sqlite3.Database(':memory:', done); - - db.on('profile', function(sql, nsecs) { - assert.ok(typeof nsecs === "number"); - if (sql.match(/^SELECT/)) { - assert.ok(!select); - assert.equal(sql, "SELECT * FROM foo"); - console.log('profile select'); - select = true; - } - else if (sql.match(/^CREATE/)) { - assert.ok(!create); - assert.equal(sql, "CREATE TABLE foo (id int)"); - create = true; - } - else { - assert.ok(false); - } - }); - }); - - it('should profile a create table', function(done) { - assert.ok(!create); - db.run("CREATE TABLE foo (id int)", function(err) { - if (err) throw err; - setImmediate(function() { - assert.ok(create); - done(); - }); - }); - }); - - - it('should profile a select', function(done) { - assert.ok(!select); - db.run("SELECT * FROM foo", function(err) { - if (err) throw err; - setImmediate(function() { - assert.ok(select); - done(); - }, 0); - }); - }); - - after(function(done) { - db.close(done); - }); -}); diff --git a/test/rerun.test.js b/test/rerun.test.js deleted file mode 100644 index e98562ec6..000000000 --- a/test/rerun.test.js +++ /dev/null @@ -1,50 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('rerunning statements', function() { - var db; - before(function(done) { db = new sqlite3.Database(':memory:', done); }); - - var count = 10; - var inserted = 0; - var retrieved = 0; - - it('should create the table', function(done) { - db.run("CREATE TABLE foo (id int)", done); - }); - - it('should insert repeatedly, reusing the same statement', function(done) { - var stmt = db.prepare("INSERT INTO foo VALUES(?)"); - for (var i = 5; i < count; i++) { - stmt.run(i, function(err) { - if (err) throw err; - inserted++; - }); - } - stmt.finalize(done); - }); - - it('should retrieve repeatedly, resuing the same statement', function(done) { - var collected = []; - var stmt = db.prepare("SELECT id FROM foo WHERE id = ?"); - for (var i = 0; i < count; i++) { - stmt.get(i, function(err, row) { - if (err) throw err; - if (row) collected.push(row); - }); - } - stmt.finalize(function(err) { - if (err) throw err; - retrieved += collected.length; - assert.deepEqual(collected, [ { id: 5 }, { id: 6 }, { id: 7 }, { id: 8 }, { id: 9 } ]); - done(); - }); - }); - - it('should have inserted and retrieved the right amount', function() { - assert.equal(inserted, 5); - assert.equal(retrieved, 5); - }); - - after(function(done) { db.close(done); }); -}); diff --git a/test/scheduling.test.js b/test/scheduling.test.js deleted file mode 100644 index e00a8cf51..000000000 --- a/test/scheduling.test.js +++ /dev/null @@ -1,44 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('scheduling', function() { - it('scheduling after the database was closed', function(done) { - var db = new sqlite3.Database(':memory:'); - db.on('error', function(err) { - assert.ok(err.message && err.message.indexOf("SQLITE_MISUSE: Database handle is closed") > -1); - done(); - }); - - db.close(); - db.run("CREATE TABLE foo (id int)"); - }); - - - it('scheduling a query with callback after the database was closed', function(done) { - var db = new sqlite3.Database(':memory:'); - db.on('error', function(err) { - assert.ok(false, 'Event was accidentally triggered'); - }); - - db.close(); - db.run("CREATE TABLE foo (id int)", function(err) { - assert.ok(err.message && err.message.indexOf("SQLITE_MISUSE: Database handle is closed") > -1); - done(); - }); - }); - - it('running a query after the database was closed', function(done) { - var db = new sqlite3.Database(':memory:'); - - var stmt = db.prepare("SELECT * FROM sqlite_master", function(err) { - if (err) throw err; - db.close(function(err) { - assert.ok(err); - assert.ok(err.message && err.message.indexOf("SQLITE_BUSY: unable to close due to") > -1); - - // Running a statement now should not fail. - stmt.run(done); - }); - }); - }); -}); diff --git a/test/serialization.test.js b/test/serialization.test.js deleted file mode 100644 index ccc586734..000000000 --- a/test/serialization.test.js +++ /dev/null @@ -1,104 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - - -describe('serialize() and parallelize()', function() { - var db; - before(function(done) { db = new sqlite3.Database(':memory:', done); }); - - var inserted1 = 0; - var inserted2 = 0; - var retrieved = 0; - - var count = 1000; - - it('should toggle', function(done) { - db.serialize(); - db.run("CREATE TABLE foo (txt text, num int, flt float, blb blob)"); - db.parallelize(done); - }); - - it('should insert rows', function() { - var stmt1 = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)"); - var stmt2 = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)"); - for (var i = 0; i < count; i++) { - // Interleaved inserts with two statements. - stmt1.run('String ' + i, i, i * Math.PI, function(err) { - if (err) throw err; - inserted1++; - }); - i++; - stmt2.run('String ' + i, i, i * Math.PI, function(err) { - if (err) throw err; - inserted2++; - }); - } - stmt1.finalize(); - stmt2.finalize(); - }); - - it('should have inserted all the rows after synchronizing with serialize()', function(done) { - db.serialize(); - db.all("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err, rows) { - if (err) throw err; - for (var i = 0; i < rows.length; i++) { - assert.equal(rows[i].txt, 'String ' + i); - assert.equal(rows[i].num, i); - assert.equal(rows[i].flt, i * Math.PI); - assert.equal(rows[i].blb, null); - retrieved++; - } - - assert.equal(count, inserted1 + inserted2, "Didn't insert all rows"); - assert.equal(count, retrieved, "Didn't retrieve all rows"); - done(); - }); - }); - - after(function(done) { db.close(done); }); -}); - -describe('serialize(fn)', function() { - var db; - before(function(done) { db = new sqlite3.Database(':memory:', done); }); - - var inserted = 0; - var retrieved = 0; - - var count = 1000; - - it('should call the callback', function(done) { - db.serialize(function() { - db.run("CREATE TABLE foo (txt text, num int, flt float, blb blob)"); - - var stmt = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)"); - for (var i = 0; i < count; i++) { - stmt.run('String ' + i, i, i * Math.PI, function(err) { - if (err) throw err; - inserted++; - }); - } - stmt.finalize(); - - db.all("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err, rows) { - if (err) throw err; - for (var i = 0; i < rows.length; i++) { - assert.equal(rows[i].txt, 'String ' + i); - assert.equal(rows[i].num, i); - assert.equal(rows[i].flt, i * Math.PI); - assert.equal(rows[i].blb, null); - retrieved++; - } - done(); - }); - }); - }); - - - it('should have inserted and retrieved all rows', function() { - assert.equal(count, inserted, "Didn't insert all rows"); - assert.equal(count, retrieved, "Didn't retrieve all rows"); - }); - - after(function(done) { db.close(done); }); -}); diff --git a/test/support/createdb.js b/test/support/createdb.js deleted file mode 100755 index bd34dbb10..000000000 --- a/test/support/createdb.js +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env node - -var existsSync = require('fs').existsSync || require('path').existsSync; -var path = require('path'); - -var sqlite3 = require('../../lib/sqlite3-plus'); - -var count = 1000000; -var db_path = path.join(__dirname,'big.db'); - -function randomString() { - var str = ''; - var chars = 'abcdefghijklmnopqrstuvwxzyABCDEFGHIJKLMNOPQRSTUVWXZY0123456789 '; - for (var i = Math.random() * 100; i > 0; i--) { - str += chars[Math.floor(Math.random() * chars.length)]; - } - return str; -}; - - -if (existsSync(db_path)) { - console.log('okay: database already created (' + db_path + ')'); -} else { - console.log("Creating test database... This may take several minutes."); - var db = new sqlite3.Database(db_path); - db.serialize(function() { - db.run("CREATE TABLE foo (id INT, txt TEXT)"); - db.run("BEGIN TRANSACTION"); - var stmt = db.prepare("INSERT INTO foo VALUES(?, ?)"); - for (var i = 0; i < count; i++) { - stmt.run(i, randomString()); - } - stmt.finalize(); - db.run("COMMIT TRANSACTION"); - }); -} diff --git a/test/support/elmo.png b/test/support/elmo.png deleted file mode 100644 index 37000d470273df08a7097fafc93312e668572009..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162074 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

K*I&09ZP! zct4nb>&(F|TzH#3ve6k?m++o`E!lIjqVER!?-Bz3LIIGV37BqUP753{V8yxA4&0FS zU32|wS8U7gOf$>$b3N{5zT`?@}z@tyZt}P6u&)G9Kv6dlQHG!2ppbtA;NOD}x!M>k# z281FCRu~X6BNIOsLZod&Q)(JM(7?NZMl1NWvSrryBWi|DV*x`_?E>(O8AFp`lsJRo z2`*8`^3o{G_GI^N8IWF=-HU)(4HsoBF{z~?kUtcd5HO@Bll`5*TV6y38}T$zm0=jL zQufcO`ZbSASKMpca$o8r&hk=`<~5o5LycoP7o24cOg1^j>#Y+kj!#V157eefX7^l2 zaJerD2lKaN+K*Khh@?P6V~HJUCo&s?Od5W!$+ghzo~Lun)4LZy4bbSAspS`%sP&(1 za4od>H+d_zy34k^Q#;+|J3SRU16A96<=cG~+kBPVyfs_>bsPP4tDWU*>}8v568`6~=){$&E60X_hi0yJD_qbELT(P~j@E(hQ7Z=`dFKhMHorn!N5E{4= zL=Ah-w3!&~Uk#7$gx=+e_fH5JJx_odUdvFOO zRY)ueXqQhWjqoV}LJ=E%lr;DfSvUgu3sp#j4TI1Ve-74^I+XtjK zW4D%_-jLh9Huv`0?A{G|y&H?VH%Ys9=(~40F3)nd{yDyCOyzra{vQg>2P)Y6*e9y^ zX*zx(??tb_))8A_@h#BsU#K~XACqIA$+ZZG4Wk>&fW=z(0-Nd3udUzi^=Ghcya8kh zh?AtNL|SAdM+QJ~E<;j7tiyc!SgLDW`Ob%;`$r7iSvP2vuVOJDhY{6MUFe{H;PsmO z&qszHv6P+h*0wuqjyuZWUwyrL__+w|4C;rH`!k?IqJYc9T6b$fp}eHCM6 z?E4A1++UJGo)FzRphV=ejGVwoZNg@XjAS8ugK>Mmg)AvO6Y=;|A<>3#iNbstk=IZ9 zXOtsxD~7>EWX8S$q zQIW=||KR#(Q@~(WM$v*?BucL?`ErKh#0#3v7g9Taka*vye_dgGPwV(t@14wrrdosJ zOxAbQ`ggU)cXY-#mAdy-rpZ|3d*V~g?hi}#@MD^3a?iH~SNY;={E0a{2GiU$ofV(c zJfmxl&bgTLt#F3so7^*Xj_F$a6czu40bIrSCR=<11Xe834Irr5Bde^zb=Ke}dvv$I zc7Js6jzIlZPt^`j)plFO7Cy1nk=Wu$Y=Y;wHFn5feLUQF%u{{XUfF7^JmINp18Ue^ zb;@6R0(g6K^rXGwyl-GfVDPE%pcDS464`uB&{8R+qhB$p-LQNiHiI1?!t8t^b%lRpxkwiFfZx$yv*^u%u!Hi zv(tOCdUg!x**c(ib5_rW+@AHK-gS9Bt3|h0gC>~Uy)M6ZV`1O6lHM)af6lR8c)w!r zPirTJtnaJ!++O@VO@8w>D|i+it@fZfI1yGk-wHGNmCy(i-rK1*yF>E4u#?5(cb z6s}ldi!HOn*7AU;S04?x+^BuvX4QQF5FK|^c1D`JVvSd-TE1+$t25Qo9v#?G(Q+tM zy^RYUja8m|sP^A8sxzIgo|`4NZ{&5~BxxuT!h|kae{2vx8Qlmo;}kSJF)}7!8`3E! ziwsuT%kO54Y#;ADIBW257>Qthis{Tn(Hj(0TX@do=8&O1?Wo1o=C*Tclz zxxnsU8%(YCC%)jlQ;d#TM#mz~yNH7ljdOv?y}}+`#QSEOTysp`#e5jZw2idcjIHPV zs|?;%Cf`znYl*?N%Irn`y%$@y*x;S+s?CTKKDnJwY~!Mv`0x&2YO5!)fe-HqR_#JA z;v?Hlkv-Pb5pV4=7izGIGyb}+P{UC`T5PEf#EGk6pDDH9lsfDz-@(T>n#1eN{tZU| z9zKpO{$68vFCX3SjP14rcNzTqt+B)2%J#A$Cu>G;_E*nP*=A@R3;F0WKC#jkUgC1B z8OXQ2?7p?rojF&Ex(l3P0$g<=25^QEgM&bTmZIm|+ctl{7;l_W^TtsR&@R zUUb#%g;bBVBE4iIz4UAw(7k2A?G0Jo>sYj`&Fxv8+r1{cXLS}G>!1@<*t=f&lM693QEmK8ZJc7T zL78!`#lF2IbmgOX&mja%Y33%jkPy(YWG-1V7tQHQrp!4meaz9lFLHZJ<;~Bl4?i5; z9*^w{R-@0{4%-h*bV7{>ql4R$qfRA9T&TDUweH2#$WxK#v++S^6UaG3|J8i&naUv@ z)h%bM2el^~_S&O|VzGa=N$ETBc_me$fNc6f?AnVQma09NJ?pfhZ=n{@BdinFoMgwydOQ zuC4QV-?XIk4Q=95nR~x*mjowZ6*q#88w)MMR727~*uP zzg;Qq{H)~c2Z4)k4BK;W&8B39UdV{p@PG_w2y?IvVfmYIxvc(?jQK?(QlZb*Xan`P9hs zRijbyo{To0iqv(c2E(wrtA6U{_Q2dVPc1&WtSt)CbJ<8-cfG^RJTrnim!YkJE| zr3fVBM_O*O(Kd?%;mkf&%gr>{=G%SKEzYqT6Ot(f6%hKrs-JyT}Nu}-V|<_sdv6zDE(NWS%4j}$+MW4 zbnxUeIoef8t={dkuT>bzh0TVwYBQs zODeB@PEpl@9U}}ZNf+nWK`0jqQZ>%&Y-mds+l5(QB}$2h6ppXvLwxR3|mN3kXhz36?7Ib zEZ7hyg%HhPwzRlVG1&wNXkhPyBtz~3h#3O>U^+?cPq$dr?G+ydUW$R5Oa?NhCJ zyh=Y&W0+##F_p$JXQtA!)aY4f3$1~khQYrR{e!ROM6hwEvtli4X|~#;`&_BLZp2Iy zw}*Yz`(0&Q`REe8>kBQn*yLUXmkxB{mf%7#y12-0xQg4$_9NA}D-Jpnhdt%zsz%;u ze(+Ru&^|7C$X0PIP%oV%G&Fx|GHkfZb7OLK&#rLhv;l|}5^y0m75E%6{~%nv$N-GpAx@P* zEhM*lCJaeLbjU;i)(+(d7BB$+i>dj(@@yo=? zKgK#<2Qyp{N<2` zuMfQMLdA&F(LtEMUv0SWa^2k*szw|S)SONZzBKT@YeOEmKIGo(O(T!R%8s^#zaE>+ z9J2L6c94b&2nV8|qLjrbcmM-XlCnA(DuDpN5<-R;`~-?7az9RYdJqX3sTrz=G*)J_ zW?1G5pfte|mwxp^z%V@5ZcF zn%wj%48gGeN1h@3O9~i_lEGwNmem6a4IV+BS(%?%skuJRwrr$)!vm(yf7Hwy>iwOx z;Jscx3hHkWfxGFZoJEmMuw$p-#&gLNk7oMpC6D>ck2H7z!}AhNO2=-*%n z9dK8+#|F1Xnm5=JxInJuyxScZh()nU-0Lkr6sSHDs5usD*c+)^=_Y0l4b%K(>s*P& z=HMbDU{qk^B;YT((-GTh3GA}P4n^vYCK``K8;*o(j|8d@xXKPVQ%8MOCz1nO1EHEjftvRCphMoO!@-)is)48Py?g7hsyVgVlW+NZPFD7v zGhmT|tr}ZKgBhO#76xGIaALuri7sJ;%wR5BB;>$sB?XNO`rL_`Nc1PvZ2Pu1M{!MC0C6Gde?H$yQms2o(g(O3t^|jX`{DtrLQ5i9KaMKxhr&XfQI&2~nNW)cd_nu8g*pQ>g;U0A7A={cP(9o;AFGvpurIo!IBALbRMt3^`dj z99~7URMvI&IM$#j-qxDK^VE*{2KNGkYZ+(-W>jdwwI)AC2#a;LwVZzgX2-trwq$ch zS<9Jd6C^Blc*~IAP}Cg`H+NNxIT{^!2%%NhjF@Q+)Eo&^9q^Uy2_&{wCQtmT{`}a~ zx7$PLiGfka>Z}J8LQ=2?WIY!(cK1!l9FqneM1uNNVCZT{J&Yix#jceYLlJhC>T|H$ z&*u<$s$G;ml1)3xtyl)YXpwo7u>3EuGcrph-_DR;d{5Q&lB45K!86asI)7hr;dc#P zPYymYXz=0WpuORN8(r0FtQFh*^@rlk2V+ggt4CZJ`B+!WeQk{+T5DVOCmWBHH=k@A zd3wlw$D8lk6Rq3oO0Ba-7aCk!s>@qP4m>%irLBC}c2C_pa{{cmwWjD&6Rtk~MS9Ot zoqM$@u+LX{CfRbnV$`+z`_CkX@3bVg==@u>-fddnHobqV*}vBwIcQHDu%(W;8_t%E zzR~a?EZVO$Jn+@XAAUXR34kOH1S$^I2QEAx`1fjX*ED_CplVAN&Amt!M9e0oSp-ZG zB+~^LC0vx5PBZE2klrEb#fZ@YvN{dyZ81PGf)of2TE$@73S&+Rn11h1!3UIDe+Kxc zaan)bK^{Z4!PJrk46HCQsRSV#+GUvQ@5#lsIK4TG@G@(%(aiLscf`Sv%Rm5NtqH0o z0tsa1zLkoXJRkZdes_WAdXWj@-EZ4qec8udAa*wv-zjNFawRaE55>&0JvzmJF(0Im8JmXGEhCEb$L&&8K*W)h3c%u zHN^s-z29oyYWv>dzaWvdMSMd;Cu&IKCVCN8|sSA!yLy23J7 zW!dD6?upi{#Av~ay+P%rYM6-++3PO{Z)btQy_$=iNR2pKJ?2Qfxi!^%Fww9F@MK^4 zkx<13yKhCvb@}Z z%H5Bj8FJszs-YcCV=j+)_~Pit&y9YpwQAT-U*&dZYKRD9n&>vibncWB~)I@_)^coO-+X`V`AIbN#!2ZF=9Ue%t8()Dj=3 z^L(JT0x*VN|1YKL-^moel**qdDtcHd{;9U~FJ{Y!R__dVV!pp}p0|9uH9Xnkoe7

lsd(HiR<6~EZv2FPN&vl3gHHMZmzYTF8vuPr|CM4;h- zt9m2a8x-zF&mMQ>$;6Ni&ax?`{9K)LlQVX*cG%wXhDBQ2GL`K_r15g?s8i*GwzyKj zCCtJK+*8pGx>&`i!t&I$!bc6Q*tgBNwDk z=49Hz0wgp(>WFSCn2D{#K4@WCE^OZDf=FCIJOPCOOtZ0kLsII>$zb;ns!VHs?`~1= zCPHT5vIU0uttA6)EgsMfO~z$~|DGxBd|i9>)rxOkyZ4{ZJlH;Z#NNt5dy>t&LiO7) zJhYcX_-eI1waT7Y2fB{0es8Q9i{MqZMfp11j9~u_5R4fla2Qr ztRA-6Td~7c4tm*oZ^iaR)9!Hn-ca3kPuX@?^02S!sJCX9Esp$*;mRI=`SDmoM{-bm zsNqy};N^yUZjb!YtwE1}RekSuZ1??*$DHLzFFW|aZfo$kyYf=`n12oa;g#A4J7R;c zHjcU0eD?t;fTp4se_q-BMOo&cBXd?o5@&Qlfh<%0ZK$f_a&sf^_Ko}jw9^Fx8FEj! zWv1c1Kvm-QJVW1?VTKtcsxowtxQt;2fF&luF%d1_ zferwP8Ny$JMN`ndLYi5l{r61s#>Y$FwwAu5_m49KKUUkuLV{Uu`M_v-Nv(fQp?+4W z`Jqg4cX82ZndDx1$xpSqzwpk#bM8MIY`;`!eo`!bwp8^2sx@oi3$t&E-Ub%hEW2-( z-9Odp8Edq>QmTBVRP%~b`W|2X#__qv@u}P}L28(|^(I-FNrFnx>s7r~CFhqgb z8Yj6gn!IxW<~M~Q^t0Jsw%!!qs0jiq)EXPSFV(WiTfWJeTxUzHb(L)fJqGv9!4-P< zW?Qs9)^s}52+63u&axf$`0-d>N7=xx#GrHG=F`E(uJRE#YVW(69C<$2+~sRH>#J|~ z*8<y;( zVjzZxAYEQB=!TjZxub~(kW({r++?oJBw;}ZBx`}U1LhKpG3LZcDghuuv=beoUyB-p zG71<7s(&9aOj!dWPNcGd$U&WkfBbfrl%CD(M95+(xO39@t~r@5#pjTV##Q6(U8LY!D7*v z;)0)*Dqb^ipCL|s(fPq7a5R(kwsC61dn(s?NHBo1K zSuB0CM1?i^dRy6nVAD=-^=eCWl|Hh`oB~N^OQ2@=;HnMxdKW#ZJHOb{d)5fj3kbb5 zBBR<2I7{n8KdN^ zo;A7MD++s-74_LZuwkpM&zvLV>?`x8@V{(*n7FuJ}!0G*Rb1Hi?ol6 z(PEQ-u{pHV99hj{{S^lCf0f>K(4A`Y)^tP%9Sb&W1qQ-b-X5+!6{x$C9C{%!6ouBg z#L$zTx|8mjlir$R-YQV*c3Y!+OpzmwA76TkgLwX5_(#gV(3W z(x+pYb6QfL!R`c*F{po_^1@c?I^3SA`v8({03nh|G<@!i0^4nc-GL_dz*8 z??|Le##to^0uqG*=Nq?7as5ufAUs$-hJYagCbpTB>zOq!xf}{A=wxO_cui89rY$nm z3Q;*6N5B*iK70$PGT<gARZx%}T|sS+2c5;@;5~ z{ViYidWq&8rRH6==6$txoWcB_+WaS(>gNjeqfq89DjrcH86+!dE-4-?DH zs)hF8ixTNyi{j7pmS}sC3gF2S|g2Jso`g1 zLpq{^yUItkr-ouuGFfT)Txpqw>Ac#pQ0rc2jR4L^m)vVd z?>2@{g&MwWy6;BQ{hi5S?f%9#U&9fUd5*+7opZC+wa*+n?W;H!sqaiQU#%I{f#R)d z*q8S_a^k_7vmg0y9r5>cYHoED-U415*ljQf&XZA$U@%T59Bi63fQ+MHeGEP)^aQ|6 zCXY|($n<;Fes?CPkH%sI1!umNWR(n;DKdfiUjZZN0#L9OR`ZsmjmsL2YOM&xyO=bM8MDb{T;r#{T2PM+`OXPQz zDDIJ};9-BCRDHKhHC$0TNFg66DH>fU{+U$qJ89`J#gb7`S;h?{v=f zq0aKIo||Cv&Txgs8u%BA6z{7nv%q%Z{4-3>PfJaosZ1D2FS5AjYizR=`q`!WB}N-$ zoVIw&)_YRRoS{W7Aa3jnb#_dpSD3s@)plGXx7Y%k9R8IS&w4(vlZzhp*6njvEYl+| z`4(`2Rqn)ke7h|U-O9b5ip_j{u{HdGk$>J`_=~~xnnI75S?j4>%;D4wFVH2I+W~?e zvND-!eI|ALSowFC6tKBwh)L49!_E-^3s~)ewNHdz@Mq~3J)~eA%$`FM4pbp$+M!@n z0QL(mi?~XXVabu~-d6OP#hGo~twrG*Z^cjlJapgz&yJC<^^LAoG51odW4$%H*Vnk; zH*h0gyTlNmkDd^WF}-cP#WBt1Ti}W=w1(%Je1ICwHh7lsk=Ep(qw$u_)+BI7&`;ZH zPo1e8dcEPEi{&Fa<3mA%16TA&*}#SNz^58+qSiV^Yn`d)FoQlCsXyQ;+lA?(-n-X_ z)}?8$Be_ZI*`#sqwS>=v8~@dO-&aE(?yA6!r2$;A9nLaT#hAoww**c&%R2q_r#v;M zgH0F-T&N#@tz|^puiBmZso%X@@DiKyGas=Ng#>M+TGK_%QBySl3f_Vp-MmT>o zMa-QLs?yjA5apG8anVrrV!#huzrDF=`qLY-(rXCe-%X1buq=VR1i3$p&@lqPpMaR) zEfZuWy+m>K1Abw%>QzO_n{wlaM%!yT!ylE(-^rD~6DyuADEW0^@vlnczf9FGBq0-{Jic5YdSN~bdzr}gp;hb-3`BxOW7jPk0Xy@B} zi){YS^_GuSrjM0oIBHC`INww0UzI4ws*H1;fffGvY%`h}<7Aa_j>d{lWxX}HL~jFa zaEZaa))v7`d8s3^EL<^*^G;Bjr|Mm^dH)=fbAisf%IF5tY>hLr#uZtIZH&8ef4E^s zplYJR_;QhKoYwM%&A&QOzRnikYKv`mmM?S0KQP;VsgyrZSnyOq(R)hEY;$m~IWp4_ znQn|u(S+yO%9mD#&b(dI(~{k)b5y@DL9q62wTg zL@mZA-VOPclcZfl`3IQ?X9D<@@GLnZP49MmH8XYSN&j4z_6x0Uq0zAv{0L`sEmYn; z72r5*wwCYmG_12$&C`*Y!VI%-oZe30SD4NMdI#;~L z#yhYx)^e_4M90vfCq`8q`?>eaCGpG^f8RM7dA6Pw-GX`!6Q;R^+6wd`veCpK1dTVA z??qr-QpJX>jcXE7@F*V0-IHY-W@SONRi;u!%AaWc@dV7uNLU2@;{TLn{SGsjPO?!L zd7J|VD=6_WyfaKXae#!)2ux(`)}Eavr9UQIwwnO|JsXG~gHQp~vKu&mfR`8L_7W=w z_1FN2W%j__4+kDuEb3jX?t0BWqfGOLTs>Cj{K({bUa9$Mk>qKq>JO!cKPgmykt?59 zX#OVE{Ha9!ivszhqT(NjrH{g~9(krjF|w#=q`2?_aq&}<(myElFX_y0f(~GGyrD9^ zs?fc!<7YX7a|jt=nQpL7fp~z<^0ChHp~m=5sRkk&Gpz2Fe&_%alxBv}4xvpL2cRF_ z;!3P@#;~khzccVz(5Y44*ivs~w#^IK&P6CK z0+k^1JTEEvbD`ulIhaqr<@WGe=&E_k<~xEfE44oo7yh6i?-wQVw}4l$hNkF!>PghLm5Q@$jufL%(fx-a4eqoR*W(F}Z}ZX$@6hSxl`9AX=7Ngira-!8UBU zAS!>?o{LaHH4d-VG;B+bi_-^QUD!Msz{DBRU8T{U%dzPALa{pAS_gFf>0<>Oa?5R$KhLF%z>!wwc^( zG`5vGCqNaKt4E)WG#)gE4jIDd!vn9ThF?jJI2##q6!>v_a)mK8N9kUw4{qmU2f6qu zcin~fh^~sE=SL1d{$Op}ufzYE3md7#cULr-E+_*s#a0pwK)u>8X^S9U;_rrl60k#+ee&e>eREBqJ0VVQOgUNuz3XGNh1; z#S3Hhp-rM~8tBl_l_C*Qm@eh?fMNkc(w>~&ty$^y19|{PLVAJzGWeB?vq@%&ME+s3 zOePudTgHQZi$&ipk=>qSZTq8tTGaNT+WMK^JJ#U-bE)o$f|4i2^4}|UXh@z{l>S4h zdqZP>QK5ZSEc;oZ>`{sAAzA4U9|RpXP!I0)E-}E z3SnEa+Lc`3j!!iEJ~q3?+I{a@J_^Z&qzv(+>8oJwDeP@+@okcLUMnw(Dh@SQ==-e^c zE`fzk%C4lk-+!Mjk@WdON)E%ZlZci9y(e-rN9EtHakM_`SQ2+Gx2HDRYPRs`(P04) zSq^^$KD0hiyE)Rh)?dBcky?&()C$UKXu8e@Lvsi$PBPl(TYQU+zNHrbN^5u-I(U>} z7XNaSce&2F6}`AKiOKkdM9cN^5tn0wucI@G4g}YKy%nDF!7n(^XL{@VO5LX#(>$Yd z9S7Q}|F9!^4AXpT^pLZ>Gd%E&ulle#e9~HWvuyak>+b!s>hANgq2M4PU{;w!^E80o z1h;V@Ay;?Chh456b79Evi;s`E@N(l zs|hzifD3@th$BG8XcwU;4KfBomiA~spmld;kmU>ECi zu7mwzq%csD^)4;QESL8#uwQvAxMrkdg3Ufr@11J)k2AaeRH}Kh zpya7S*`MT^f2cICs#T!Gyl3QIQR)98Q~pk-{2`hdvE+f`k{?KAPs)|QRO)|Ms((hR z`i)Ha3z__>qT-*3OP-QQe^?^>L4M(HiWMJNoD(gcsn)<-dj7Xk*)uZvU$n*-bcQ!{ z<_UVoY-?b=!S*+q`cEp|YZm)NXJ{55o@EM5(7Rq%8h#^@|F}T%qe96~rHTiNN*W6b z8Vd7Ah(y1YD<;^zi+zbj&iD+I4>kImYQtZZn!n1GFO?`>la;7@&@}7wYN#TuR z#itqzQq3nO*UK6sAPY|y6hA9dy`rvSFO zmH%gL)vfKG^igM~-Pm_Zj;f4Y7DHY@y|E7=4fn7OfD#r!e?`nIe5^XJR5AfRyO=A5Q(D$ z54w_jUCEuE6ckJ+>ujHDj8je4Sz3Oz!FAZ3xR7ePT-kCeSaZZxaokmT%$97mL{2%% z&-oibrM#LNc`-Qx83t;=D=dM98pmqAcNdpD<{Q{qKKk;|dv82;&!y)E{(D(f`a&#o zQ_rB;qQ0xSTJP#bAlKnjP-S^!)~6c!p|17M1Kn+|qb(?AV)WU_Z<;yR$M zk_I~@%}FGeG}0NTpGk_)6cT`cEG|i>oR~ATEf$Q?2xP&Qo*-MFBQIQ3V#J9h3N*ZP zu|+1~W^^^c+CWzUf->-3>Y?3bZr>&mP00wG48SD_n9z(R5e&Lrl9ygA>zS|lW-5RF zRsW`Yd=u@n2Zw^f?Abh_6KhL_a3=j7_2 zN~8}L6+KcSeO#vav7+=B3KgQ|*^<&f%GJ**RM>JpRV;l}B6&z6xxcXBx24+Gb=J4h z-st(?6w4nLiJlOPeaTKB9%{wG!G z%UbQLrK%Ssiq{qTH|=@`oD3 zSf%z8l^&(za&X8jjs z(Bu|I4qlKF2eXnS$Z%aFXfrz1Ky=Rn|V zOb|l^{b4=_gI@0pvgQSq(u$!LB*vF;ZVcApo-jpa`9!Wq9-e3S&op3=2vj8o8=e^| z^DLER6(%39=sG^Q&gk1^4z}8o?Y`;@@j)H_`oq@5K@cUJ$XDSRTHAEBWhw7nXAkdm zCyocJPDW}^gzHWOYmNu7U`g&V1^1gmCu~V18PHcx`x@H34f{P+TU^Pt_6Rh!H=s?j zCc$Rys2$mP*YK{N*I)Y-1Ob2F4Lw}Zp`o0<3Z65B^?(mXoLyhijrRoi(@(sP=Wu4(Usq$w9k|zra9~X-sD-u60F8qn4=oy*pFAC+0 zD&61Yn%_$mzn02=E|)!3Qu4Fnl9#m>Se?D9<9?@5{XmrW15y6dQpHad^2ZQM3gvr7 z`-f)dpS9+Pq>3R$MT3hZW2B{zD|J898XlLI-j$zsPXVUY@?V#zf2%e=Tr3+cQ?y7* zMoCJZQfhyp)cmAS{<8wvuO+3wm8pKOQ2$=8_)Dqc4U_q8t?3o1`X5rwOH$3>N)#{4 zNoq3 zc=ymvEvcnd_AO)ltv`=l`k>;QHK|(%eZB2m`kaCsAh4Z0FX@4eIQeynGw?A+n@YaK zSu_tg2Be=Pb41_0Db)FTWL2|u7SAm(dXXGvXt|F-Hpb*#WtyS~{lUKode%ngY?E`k z!S%VuI)mt|&czUgK_h4OPEcE*6Fbt@0>evEN$0-BGsQkyrz_Mo5=9qKAAHC(8zP3?JJ5ROPvM z1Gl!j`Y!0x*A%xAFwC8jp!!#VT!G~>b8EuIos3*rwjsT9h`(lapB(_kC5f?2z9R9b8* zUo6$VYqY;>w7sCy|ENgvgS`Bwi=}_n=$|Q7{zM|dAnrw_;RTKH7b@MD5?Pa^xK1po zD-bsn6bvd9j}(jV6N`UTEPJ+C^{U49qSo@XwDgAx)dN!beZ?h@7R!)!9?30yQdIo3 zSoWI|#UEtKm#`#NY2MbEKEz-^rF%)HdO@ms5#k;y^*iXMw5HdzNO#)TRND8TQDkv_ zr03s|z|wm~)(eU+;8Ev6tAu<}b|0oPCkuLxN_vlKx_9|6j!kSB>6+=r zV8c1b=v`@bvpyq z^Q-~L0DWO_ZgfU>`^vXCqKh@Q>2kw#jTwsaTixN^&hReYf5;j?W-U8yuQ}&!I_qs} zb=0mkh8AjFi}WtwSzE)^C(9bnv<$rXOyiBo$y*1!nahUnU}$kwa+@%zBEdikTM!T; zQJ9fe6y~}Y^19EHzCLmeIR_$s&gBfC?K|_1p~WKEI*Z`2WEvm@9CVc$@zEX{A7cB zzBN4E=y_eL`)xtVZzR&ctMwlk>>ul~_%~xdGgf2xSZDk|XL?g(dPSpuQLTRg^8mR9 z4fM+z{hLPft2*7wO4ZvM{RbM;ShZ<_0SZ7)NMnvOJ3r){Z5aAz_1ybv)BAeKROVgcS2yc$Z zH|m)+p7?4{7+J#xC9={VS>VxTJAJe4-sPU)CVw0g>k7~a2*6c1*U<&;AR475-Vn@D zQmnyTt?&fqTfHk?dZU&=PkDsNSa#f-*;}qB$6Qa0xrSjoGUD~bh)cop6KdjkAbTuc zyDwh5#YlmelTjOp89myrr&@gRO*a2pX7pZToloBzD?3eidZhAVxc+iz^tI?MZ>8>h zD|_dq_?X>FrpXy?^Tg54yi$AH>v!G#-hbWk_qF4DuT=E^QFt2tV$N8pmw`iP!Lfq_^4;NPC@h`2Bv(q!P$yN$Fz_*Hk4iM+we!`{zJi@M()Ui`)ta$n!4m^FHlakM^9~KiRF$ z^cizhV~U4+j{OCvXRcRY<`1pc;~>jcXt6nJh$j2@cKZW1%R_e8(=PvHe~6Rk_r+F5 z3s1R}Ctb=fE!J-p$F%{*`QJX&1x zRI&B(5-XK}6?CB%Uco#%kXWck=If!k{s5>uj>H)bALh_Ut+q!j)<-P1he|DvTP?DR zwb&jjEuLhxvjxHlM`=x=jqz#Ed3;Y4mrSxbLFO*-g=X5+ITp64iFTGhMye%P))A^{ z^H(=1RY%6$`u>yO{PVW2|6|v9>UpQQM@ScW5M+9|lCj@>d3gWDVg2U{ z`pzhSX-pmXzP2K)ZqX~Z`peh2!Z?SQI(mh#4?F=YxqZ*xCvvHr58_@@Q=zb-6%oN2PtJ;COf;&ik0SfT}IdX(pF zE_t7JxSnDdWph36^v?2Va~L9X2P?Hsv^r4&DI(}YI@L&1Ee`mEk z>!G?rlU@3wCAO#S6rMW8r%zJU-*EU?t-r84f9G&N$oF9PKH~8H!Rma%>3PCppJ25w zkH(jVqE8hSJy}#R$LU=F-hr)7Fupz*TQ7eWNRYm%PUj02+Y2SOX;#+@Rwo1H-&;!_ zC@JC(@~gc3CvDa#9{&X9-35hHt@imI-$ErY&EtQ@;hE^g9_O3nbWt!<9p3q#;5>O! zL(73k8Q2FRn`DHQZdS{h{N+0}W%Nn|7) zZ9&(|MctPQ`c4n~?07-XfxzpNV_QeKSD}=1XEwOvt9jhL$^y4%rp-Ca=3VGB7W?`B z)#nQB(@LGvqNt%oN&uBN$3C3+7p$JAi>#b`i=8?m%WdKEE#VA6g_RzChn6@1;mxRc zDLv-Z?6`~Jnpe}K-zdNJ^~C6x1641vs11uB^SKh+WX=}Fn5}?1LHFd{7)>)A$6WS2jQqwZD7_PG0%U#V8vJ28+3*HOcY^{UsnQ_*d74_g^XKKU>&$4BE(WlOGGS&(_lre*2kp`>pX+ zdSZn;#cPR@K>oN$i7wOP3q7IfHt(}sU>xozT<%A#)<=qq|4>l$aDL%K1qDx9tx-prn~+kabJ{PV)R z2Z{@MgP)^Pa>lb(?+Z?4z7m}0F{ZiI$DPjK+N_Uyyxh~Cb1Ki-Jd^ESTJz~HWwOOJ zsl+m0(^kh~v%TJ@^75vZTGye8)+1{*cA$X;9%Y`(yMTM3%RSj=~HHTl;^C@ zi4ON;HtUlP=Tp?S-8t3mn~T)IrOvZ^7P)*Ye9}Enad3Ru9_7#Ca8Bpj_UV%?&Pj## z7p%Tng8K+B0Q>Dym!Udy84Pf@DX9iMxpQRY<^R0x>O*5+o}T>6@nqk7UU}~WfNyRm zyRPJQUCQe|o!5Unum7;~Z=2)C{#{$GyEk~^yw?zvudfgkTf zV48#7B5wr70v{`RKiId8T4r0gY7uJDBKw45$4rOHIkU_iT&+Y`DF`EsjqV`u9d1hJ zQX{cvqrJbL8GkK1{>4D`C9Uk`Slx+4-9|k+o3V{kSwrO;sa5{yaxK!Ftvfm9?n}4c zf3EJXBe4W{u>+ZZ-a|ib0>ouQyt?KS8W5&Ps zqxw(Qmv_Ay=>51Q0mb|YmJSOq_p@S`NfB1!%@uZylm@(IN|EQgFappttN%l;2? zvEy%2zCDn2>?!w%|P?wTYM$nnb zD3b$DXjdjB@EtB=Sox5VOSSa#J_j$0$j_JZDVUz)!)ass5hFL1bZyrDy0HA(uSV<~ zJz_(kW|c3y%o|_q3D0xV)5}9V1;B;PJ;m;x?(xr5j2V7?rca&Xa6gSsv7qQli}g8| zXOh)6p|E7C)ivAYpW{*Id$fgaeX+b>238Rx;}0xTgG=<_JXL$n;dr>9@HYkdzbz?x z$Wr>K)jHYbS)}s60+U#M*gT8RlNMFIJTqcFSz5ZH3prK?}13p`tLY*w|`4%baT%T`_;$NT}Gris^ zb{7>wLp94oH?IRCM8`giQsDarG@vY7|R%Ig@Rf&;X!c}v~h_`s>dV?#J=n7YGr8BTWiSGzx z@g76$Kb0N@OXQ?c@oIeRdsUx%qXN(r#Zz-JUVAW7)rjH3hyy2SgNPZdYF5*0JfZbQ zvMpV|zZ_}ynB$r8uhrlC_K44uSpbXukebD<{c81{ufb2Mz2}vxyRKA22)X^0QMbJ` zZtRtB)qFUss_SH??|m;DLLS#{vRTFdOLNZ|LY!s3$sc3Vn~(LS>m!C(QY!KiW(dze z1w%y;3j0x!93WiDOkNCSL!Fo(F##Il zcjXt$olgwRqGA?9tT|;CXOaxo%upVBO{UBM7il-)mAzQdf4TsRfA9WbeH|r#TjO~7 z5!->UINHZWwxuf9=;ez%Q6?=*+=2N{V~WMg`|%Wq2NC`(r;kdQBl9ACu@+uwL>Bvv z87}2{hi8gMndPJP_sw@I3*8!S<955NqR6=Xv#cE~#pIYZPVBo@Ma z&4UoZHA~fIa&v>dqJ)|D;xgFmk8M?wI|Aw5mDPJj*Be~}iOp$49Hd!BJPp0e4W zEVVsncQ4YzD*_>|mou#Hg>GYw65ni;ZwXZq+&h~P3&MIywB`kCO3QQxD);IY;B}71 z>kbAhP6w*4r*8S6?!Na%BFn$~rHZlOm0@1C2FlvPO#I3Sy5c0+t5x9dUx8D=5!~p3 zj+x$*8vW8p*hpV~bJXXrSKrO?LZ~_h)%VBV|KXS~y;b-5S4ZFe>fPh6eR<5=KO6bU z!kVt5Wqt1$eSc&!W(KKCD}hLio?d{4Jf9*-7Q#V(@5d%|ii1Q(zOp6}J-%G803>n3 zd|YHA#mopljs>}cNjH)s$x5{dEy?s7w4F0Fj5_MC#c$q-S?=cSrc0sTB=% z`f5)==Edx1IgNdR)yV1snH5@cf!qn@t5Ygd7-u_u{6$goOOycQx3$D0`;%*Z;H*-} zFIM=8RZPI<+-X$f*2ajxORdw zfDk^q?aLqD^1rT)zx&$P#(wa~*gwx6ccXQ5@0D!ddwTaDEj`#;q(7mXr#}%gj)Zjz z*3i@=%ey?}3CRT$ScN>^vV50r#hjJV=l`oe%`KFiT^h zSDmkF+-hcW<#qWMxcy6f>OyX44h5XwvsTAcn{$arTk8+QOyWFQt3ii}Gz21B4b}zP zA_wqTb)`SReQA{%TA_y*YJvHFW1)h1Q(55f@_%R9TvM#hg?`%H0M~a8qUmn$VpXSu zUyg3Y8{FVFHhF^${s^0atK?%c*sXlcwb>j3rfyJ%Z@|(PpCySj-#y1BgUTUKfX9vI1W2|rm7FpH#Ruz;~ z`}pk357qr;(}>=^ss7#GzMZ!IU6$Ss%Rjd}|FkN0{js|3<ed zt=gkj?bU0rD<2Hi9SBzMHL$*wAM=-A4g&tXyc>fu}J*^qhg;?xhGK5Y1C|2$`+Pr^NN)%TG`R;9k0}V>5Va8xl;GJizCOqc{83%INA;br>w7!V`zKe|p9&!&<@g>w9~5?*X9zz^8>yG*rEt1X5z#(ZHLteP zZ=gzE<7dhgSV_O3as5*`d{(OgY6i9JJfDA#+c(dnEK*?4YRi543b(e#scm!ywt0e0 zYP8u%LYAR6wo)O11ngNf@Y^+n%s8Jiha=_3gXQN!)kL=*(#qH;Y;*@!gLw4#*Lk#! zQqKmb-x@Wt)TwSXVw=OMRYrJ`SDjYsm~D40^7;A0a+);+(+zW(3iahT2{xmP|r^E6eDPef6Pj~3EY}yjmCR$`Ut&Z1VcreT6TjJE#soJKja_C!; zkLQg1$I6Pot&VkVOZPNo{(EKo&B@s-KO57SOf>qlJA;tI(>s(zgPPqMzyy|NN8A>a z$b*gk*a}aOe~5|5M!o*k;W(7)mEPb2m%dDit~W9pw9Hxs_e-W(tK1o=-K~=(0Xnp1 zf24k26pMca4pYo92lTR&YWXFj_DXo<%c(K1RNVSXCBFRIuT|f5wffFesZl^i_Xn$v z$3_uFcp^IbDCr>aar>jAx46^WL0eSab+Y>2V->d_tsZk?O#SK4m!JFh)b+>8|F)^N z_jJ1dHKYF>Pw$5%H~yH%d%Zk<(sFYKa4{3cCrHb#KMv~sNPq|6#idT(VtC6GSN4?> z5X+AOHX!DJw5GwBQ~vK0hRWfP5$~iNBSH`@pik=kgu9&yE5minlualz6oZ)w!zm_n zYkow*_OB}$w=&synin&^S1AuB5`twCSpXRrvPK<7E^arn&=*Ni7}k4qSU=s%?))2# zmXDWs-+eA~;U^WFN6?vg=2-l!}_nW#Xg-+P7X6?6qmY9o=`J;Yc0_xDd(vsBehM5 zZuLdLnQsp!SG)D)4)12JMtb~UwCqg0_H?-FVyyOJv<{gqEZI&y*}x9lqj8aI(Bm8Z zfwkai5SVxa*lZdC@y1AcN4#vc9$Mh>F;JfC^3G+JpoTVs^3cigf+Zc8;`Px>u)29p z)hFuuZ|&Bf=NB;Ap6FDbDt1n?;!_AN)uJmk?x>hagY)d#a=X46CIPtyVej#;*S`A8 zu`m6!{QB=IK76|V!)L}_ePHZ`Z{FGz0mzbR3zVb#+M*G#Q`s1)+3e43a3i=RCZwV@ zhI1h`msQp9!Uyt;xezY*8BpCOTinlVAOALrHod27|DhqApdg?itx z_pq6LpMxd;hH#H_$`t{;++4MDUE;p;$)Mhk2T8vmJ4%`2-nfo$e*kNb8>9jfM9v^l z!lj2W*ZmYNnaSYeU@;BGH!ovc$!KYEPrp|Gc_+oP{zGa>O$ID887-0z4XhvaEJff;vNk*SM z-_aFHV6of3%BQXO8JiSihZ@=eyw8ZP(u4Co{&_ART5%LgSb~9B?vPc3u}%rCRU^wi z0gj^;J_EGURyES7ha3FCEqaul-9oDecr0bssKr`?$wsox6l50_tl_rNo#RqgxqWdZ zW0n{LU5ONDhN-HN-A)aJ;7vlsV}_L6f}~RMNe(g60#}sL^j%u z21j7Gk~$NqznC0*COPVGtZq-Je5aAwV^kap)t^q@awc>8(dhUip>fAUh zBgCv$e*3x6_ng1=-iu%S+{-_@?Y-wm|FgMH=(w*0`mVXU-zeue44uJ?KW@RbMU_K@>D%Hs+|2sRD-&3`M!W31nGR0_N?jmlxlnP@HqDYZDjG zA;TI+Qb!O@OLl_LM^6v$IhNOZXm}r~37sU8=XW>T-k##wb-%Z9RB~%&#bT)Y&R|0@ zyET}dXVrMECe+0jnrlbj?w)A%JnQsw`{MSpN@3WK$S=V4gSKRo-)K++O)5ISV6z_H zq=#1cjb;A8LXU=UaIsUR1>X}c+ePkzFS45Ps8?UWJlE+36}!==cN+1%!9)v9yxYIn z;#y(xtaoa-^E-p7&OoAFi|&H1 zwkzRIxG-9>MTu;82O7PBRyES5MH_cW&mBSQnZ0Ktm&a4oDVBZ190j!PH4x4dtnMW5AXE+cO#2 z{;Cdd^=@UvPVcClz7hM>5r>U2Cu8GIrN*DBx%F*NcRg|0XX`IMhi|4@-S>nQn3_<-TJUj4;6DNj43_CP^G(8w(jT0>sQmqIKzg z8$JHu9^5Dtk7OjH;~qr8{O{H!S1>o58I$NI*DWTmuJAp~|Ad$fH`oUiO_G+DESPks)0NhIa280*}0F zCt(Q?Ff4yx6FC3#X!EVHwdurCCAN{ZZnTP7+0-H*OBe)80L1}NJZE)1X0c%uW5BvX zCC4Iy|8b7PH`nQ-cp4O>e&G%+wo8Tb8b^Ax#HB3r8jERWT>gbl|5{%N(Krh5MkBG3 zDsm}|r)D{&&)KSl_l8mj!l@4KU`}O&ko({;gqpmec7tnJq}3PROVE;@X_lrXxFtv~ zKxn?*GmBjW`Vod>?%=udaThDc?+h^5@i+S;9iT4NM5h)fKWLN7-{22yRk$7bcj(bp zJ&ydgLyfga+Y{R!N^cD&R(sUdPK5&vvL;Tqs~&3&Bnjf&5y~!6qmP!_ z9&&j8;PT-4dB*B_u-NuE1_$DCM91Ks#l@2Jjzmpkq!MMw7>%7m~?N1dKGYZEiycNJco*(95{@6M- zzQsr*k#0?tZ;NGC1|xILJs1Y08D5=n;v(8SmB8xA0;hq^c!pPd)@l+LtZwdy&7oRY zm}fHME@j6O$l9T0i6U$AMRpq5y+rW@>vw8E59{}6V|Hs}I(&7zwfdvcTh5i=_2S6S zU%l%q?|<*RfBfy2K6>WX_vfWQY4rD8^z^+^)c^L7{&%HW7jXW&MQAG}cge&fnc)?xnPtCBj&)l=eDr-<02kxHkIbDG~e8FGXOMPNHFn1m=LAhl`Qwl9WSzbk z8n=JBS6kxN=UQoskU9BDAYp8Z6R?514Ky=^n=CgutlU1P0-Y30D81W&xEIOyAB9_&*} zup4D-N?@CU>NZUB))sHD)f+k_ymOAVXpqS zT;iT%Rp+=>R%El-u5wYdxh53bW?Fn3y~uXTLA)LaRuF=)Q?J+$P&Ym5bZVTmD~Vf< zCdMC(-+Cl-`;oHo2Z2*(N1ds=on+8JAmqno&wJ>XvGz zPDFYjQXDE?vXq5UGF(tsnE0udgQUF;=-xA+cjo{MFrbzCI)?SN7xy=Nde+B3es08z z|2}5t$Pwr)HtFp6L$hrD85VUB@rc~4@aX!qryZ`}my}L+`_>o{`fT2qSJ3dtEZC1d z11#lkHF;1^?dKB0KeLmO0BeolVyB;JGI%5aTR^10kmL-?*oD&-uymj0^3GwD%$%Bi zj>Em)qqZBdy@BL`VEP1!dC|J#!HPrJ34K&cXb(q|mN*n7Nwlol739!pk=(y1>y()e z*9@C&wO82{uv!^Sc~D!s9#?g%)Q%ESR5KO3+vxE9h z4DOZG1h9PryLS!f?EnlrsK2eCcZci7YU8hS5+6KK{_^)~kK9__oB+=QSuZ-v;eWo= z!;fo?D5EfTATt#8F`NC7B4MmBWoikgh^#<4JKv7|FtA05v}lQaTK14p#>3YjDT?X_ zMHpi2*O>~S58vXKZW{&?W99ii|3c&~{4YJU5My(xb#76~8mp^K4Ihh?oeozL0CqA| zc{G^aOXuSc?bj0>{%EH^b}UqW09u7FM03&^NOp$O$XMoDY;&!)HBNt%667|xRbe?} zG(#sd(wAcO7m3*RB|3dD?BJRwS{X>Fp#>%OE@v#}?*TH^%a$BVOAUss;kK(P?b= zMRx|tpsYltf@pGI5gk&_Il=?a)&i1ExfJMs%iH^I zY4`iwzKUh2OTm1^q?ieEq4-CnU`$D+nc8CZ*dpdK-7m6d&&40fWh{5Fy9mU8k7o~`=$OsLnyJC3xEQFMR~BKWP-)9 z7UPtjYBf^Kj^|jMi)|i);5N8}E&k+@VAVlH7DE0GY-P3vXxt|U6dO$T9vhX=4xVNs zy3DK2b$b^m>heH%O(?oH5LvAUSG)XcZ0_wI^*}InEKr7r_GF;!sGdHoCXV={xcslI9z@xQnA?=SYSn{%UD_40mvLJmP28oN$H+M*&eJq3@F(f z<#+96en1aHwJV`jCGJ)|3C;0*Y$O>N4AwdWnY}u9`U+$UoO@dW@#au^i6`(_sp~(A zEqCS(zc0VwmmcjIBle)xfj#bNmomv8nc&s`U~~LDFYmvG5Bqg#=@VY%Nw@MaZ~6EO z9PSBjFXqiD&{#Zy#cFJs8iN?Rz#ZBcEN>1~HR8L%mv5xFg|Y+Lg$XRcQYFT_5>mH` zrP!xkvzffPQI~~R_@f*klM1}EEdlz>_82i0HJzclmO$-}Kqc2a2(hj3*W)9bqcuAc z*^cV$fpHakM^&_CtJ>mq`|8GBy#LOZzjDiq|2FF6ts@SPsy}>7{oZlqoi*v56{-Do z>C>O9K5|d^)VGz7XC-@@!+pEGy$9XB$9#R~wEkE1zBm2-Z#(+lDd~N;h+GO&5{55} z<6>~{M?+{ROxwI{)y+_e|E)D)flfKelEWm4ONOB-5jI!*()yc1ds7i+9t^VLG~+8x zke{iG5qztN1q9yCaltjNNDdYvc-}H;6%ql0=MhV{3V^lUdioSHcL z)xeet|4Lm&Vz|;3Sz!;aamUzEvU*$O4J=?5tVfzcsjY$JVl{|M1g+#8m%0rciGfrp zj$31n)wzn;SJ^WJNZ~sits#P4rfTae%vVzB@Mg*%lfgW!{)EC{({O6-J|I1$JkBuL&H+~LwXe4ztIa;Fk) zcZZJvwv1HmGgy!V8!$F$OzJ`#yo90pRyvd&zR)f`xmWN)@uR`?nFyyAILs)d%;U+r zCWMmSz@@TVE~m$x3fJz&nHVaE<;UHU`4VQhrf9Y)kXqt0i1heLiQ{wm`D2C+`9fjI z?-cz3hl8Ag-`bpi@M#a*JY313cKj6MXI|cqKu;By{HCPz5sRI{0J~0UNbJfyUvQBx zy3iY$VfT}7yjIUND4FfvWQ(35t97STOZhIoIt9Z?!j#3K%m!*fa*nKbgXpG_BTTU= z&zGpvO9OK(`dZ*gdfDE1^)VQnqsH&69JMz|zQwpB)wdoVHR{;il`nn2;{7Mby!VIC z9lmSSS}nGJ+~^Pf@b$mVxc|SOzvId!`B{lUl=zf<n*_oM5p8JH`M&I&-;_)f&ze^Aj>OE(!?;*73l!v5;U-!UHNw1jwZpsK>EGnmHoMeafyBkK`m32y=yQoKIT$LxR5t!VxN5c4 zdoWb>a@8G|vg13I#7;fEn{0GF{=CJ3&bkSXW+1uING@07QjcZLo7Nl`Hi&8Ms`MvK$z-Z@@_ z6NbKjHqD_6>8HL@No@9~TSHZ?Q5<8@4UPb>tynDGfi;ZvwD<-lV<=zbg9w*2YDOq+ zE_IQXT0v5xJ-EcmTUB&-UHSDN-u>n;K7a1ZV~&oiIaFVD^3Lj4{;T%GiRJ%XQQp%u z_Rq`i+5c~qD|~8mMe@XVDy~ng{_E;-e_wO!wI@?o9|?XkxAK!&)gL}z{@%poCv#$5 zTVkI!YM-{bx{s6q;O@ONq?gADq|sYIRp}ihG}4?4OGvBvDrPb!>fw)uP&VAqBw~%R zEj44>?-8uzWL#qV1$iMg!yA3BNW>U(^J8-YY$hEQN*J5S`Arx(YD?2`$wObren%`{ zaw>sG8pa*03o1g6ynG$Y7d+)bH*j2{v5`m_ZgsRxQn=`FZo&iZm;dUKfbr)PF3mfMFp{8(jtByEQTjSAq*WaOn&x>u3q&5X(3q9&&8xvtKO3F?C z@D_i#U5|15!ZCX^km6WqQo?Oobf*?M5=@?Da~~}`fL1__bQ-Z{E!^NkG8o#Ya|%_w zoEZ6Xa>QXR)$R{B>7iClRyQpiWo&*Rt+@3~K4V|J{7ka?#aQ*r@p@(eN5WO-GUHEG zj9XRe-DuU$mXCk2>ULCB46<7zWymy9?=SO(TS66d6phhxb|5Q__;YID>z2~d`9p3i zF8Yeq^|g}HuNCHhtDxw=iY&jj+8za(;nnbpK4f+Nyu|X063e4@_f*B0&)CDq8;UX2 zMl8EF7i}IFNEdH3>4sR%=5QsdFh&=if_>5TkW_#`u>Emf1Ww^?I$W;`(?%1Z^T~wVdO8fv%T9R{q1_! zw$Lk21$K=0u8(`RRk)gNx96s4(6VeH4DbDdF46^QnB~T0@+ager}ZzAw|=TZ7U;P{Msf&E zt%|K}--x_q#)=JqByifbd428$*i?)BKUXU53sgkL2;jaY<*xhA~e< zFw6u#8$|DR4)1Gm{e5Nd$^&}y80U(JbCKV-gr$Kmv01O! zY*cK}vhb6TyE2nm%|8;EVWHGgHH7)@(SnkRCH7@VRP^*Ve+u@(LXSSf?poqi*BH@R zsPQenRoynT*q10N%*lYxw!@T83HxqE_H4v?|22wkT)Jv9cG$JU_5CN=E z1KWa0q>yVo>UK4JP*0v!Qx^l6X0t62{al<6{$0WN*;LhqGLUwuZNQC`(9U3@BM@u# z1@~ytli`X>(VCaywI_`9E?=0L0jrgEJ-$oD%bwU5DQgWRnvBGrXxYI)>U6m5#c0hr z;`_qYM3bKzaXav#6~*pjnb8-jZr`nE);aVBX39!ko@dhXQ4A?Xe*_@M*r4r)l z3(j@xFIc@`J{PF5#cGtkXeDFuUUsIT4G)nxt0cH50+ThFeN z-UE3(Cx&zbM5k2Xdx3v=OQB#S+NW>d24tY5Y-W<~X#=slAfV5z3e2YybyBCT_0;Nr(egVpwE|~$Kq7+>i1tWeK z3PwybH?5bZ75NQVO2YF8@k*?Pd=^y39BthHMDuT63ZHU6s`Xsk6x}aTZa$lrkZyZ8Jy3I(k*XPut^WpM#AzXDPQhO{`f3jj+qc67I z89AOBeKI>1z{(1Tx=By2QxLGlH>>HjzSuG^q8NDiQF9HY{>DDU5?QyzUSmK$3gf7?*<>DJ*r;N)9|cQ=%Lywvv5BK4me z6Wz_xp4Q0UHzlq<<3Iju$D1<)H(COH`$~KE4(-}Iyc^)wF(kP|dM^#_ei?J9yo2{p zEn>$Km^~*#-WUW6N!pON$Y8rkr9_9;^NBc)O_3LYN#=HNNnzKTV{GxO!ki!T0mPoWpPfnda)&OXTXK~ zWU+Os&%acUZ3&g5x!??et`8v+NY_j)G~G|NxG;yzQ~ZlPev};zffSsc4T1P3nXQF8 zLh1eRzjaCOMYFUoQOlbps$s6|YgmCZW5wFx^dmz?-b=l)i`ZwRF2(9zjE_7REN45p z!K-cd5)d2Mp#(R(v~3=v-51&Ki=Pf~R#cr2mz^}yM_>if#D`M5eG!t%55}^cdaR9Y z3=>t9{7Q)6q`i^yMkU6zV{gvjoR*RBPDi=j7|g%-P= zCQXYiA$Y@uPexm#)2D^O-~303HPqnRK#Ioi8H@FSg1jdj_IY3?^+Y3r zVt?ug2H;=~F)Vxa%pRb7R0|QGA+C`%=!iQF{&X2q2loU=v?&$axU&9R{7>_Te22E%)|s#-q#d7ZaGdR1r0!`Nl2REz^!K&$^IX%z$W- zx)2QpOoH+N4<@W}KHx{FEWBXA3QxJ4vH>*#a8GoWAS)!dP+&{k(3pgYPEvF<1Efek zkWNVE)}j;;%NP7VQ8*K50aBK^u+RXgX0s~zouaWr}$1%o5jT@eisFvM`7Fy~L zK5utETu}62amk}L`$I(~PZXANo~+ao)2+UF7)WB-Es?SfMrw&KG}Z2zWU)W%a8L2; zFDN>w$jM+J6=S)IdNQ!y7nD9#PtcxXbwqc(Csw{cQb7poZY^^#R=qo3u|sEX$dW#W zP*Ut=6fFT`)U6tt?=eVJrp$Os&Zb76PK^Z9*p4Pe4L7r)cWOI4fn9;*;b7V6K*gnS z)zx_YJdHm zaHDg9xEw*+UlBMbv=*t z%d0-;@IF>V{aB|t{q%bbSLXTDCoPsItv1SXl{<(Q8(PJYaP@9A-QkPx(K3g~e-4zB z&~hSNdpuHiC{n{5kI^$oiY8yW#g_(Vxp#c{wI_mI+m-%~!oHSaJx-Q2Ssc9lf3AkGt}Ece?(($@k`B+ecf9ZXC#$JJ{)gJ?95>Um6VK7^o0FcEJw` zG)%_3raiYJCP+{;wQOAE~nO*S04Ge`Vac^pj=zfNa?>X+>ZH>Mo0lA9E$2|n}N zaF2(WA#J3uLCpu)0_SM3EJdU~#Z4@hN{PEL?Z<*dl6?&?b7+lWT#!>JoAxpmLvjSkz<_3}r2B*7Zf1NWHNRcb_lDqLx|su>#4KLgw@>@W=Ge7~ z#>HQR&VD1=RvTEaqgf2hb!fBg93$#-e`o=SEhHWm2hPFgJnB;x2a546@hb4%E0oAu ztlr@)H#Dx``2L==yQq*EV8=WP|L{*1TDfd2@!(HAjWs+P&2!~r&z6lo zLhy@`+NZI*j2#GMkHo7896u4RJRhmLlB~Z(gmSQqTsYP&#}NTU%G=P!)8vFwErIxI zpEkMJiV&eaT6QR2&Cl>6wGc zOhxz;Ba#+x>2#|LKKF)DW{H+~(Bb=HLBTCW`D04*Z!0SJs@3@;kNR`B{|6=Z@8%c( zwAl6-e@k9o-`oOewUj zau_>9mHVUMiPMDIlE{gpnE0ptTAB=_)3LfU>>MN2`w1+FR(I&xEzWSOn%*0)+&dzE z^*7NQTa5nBVh)+^rlCD#mh2eN2VlN=fMm-NlnJGA54$+>v*0!o)mYej(9wOs(RHY( z3lrg~p}pq@^<5m)L(<0eg3sPAB8e4CeJ+br9L18|2)pT02!Xi+aqMf#JR=0(IW%(rB}$wI~)G-JSoJ0+?VP9c^e)Rn00Q4*68 zh9#L$Sa_|XL1uy`vI5iAA_y{?D!L-pFR=chA?kQ)8UWJS0ae^;K6MRS2Bd5U0EAQFTx^gaXk(3$Y$p(Lga^#3`Wt! zA`3thdKegUTwT@&BGk+>9uz04cqgA9wc>HYDDm_$t|iFZNTO(7p{UzK@tu*f4kOd5 z#EDRB^2KOm7diAr=%#|P1%C2jJOqjDiB_D<)SrlulbAVSWX?pZcw)H9cc@9a`2)q} zvP;>~CxX>SwX);ks`VDFHCVPMS+_luecI}Q)A@|syG)O43n%IIaUWm@n(I`SDWPTl z*fS3QcMD7IEiSmjUNp8S@6Lk!uauPjm&5&Yr~4-*wx1Q-9<)LX^ieP{ae(7YbE#9^ zI%f-%wh1oJ6J#7XJWs$Fu=&=QF#+qS8HaCnp<|nx+@GpP=g+CT!58Wv_=z|{B0bd9 zk#PB$MBUj$-SKe6K_(*6x?M(jM-ans&E8nWp}O*GKdZd4Hrd~1C0`M~T;GnteUct0 zCrlrw%I?AB%XYI}I6%e;R}b=;hxHx@hL+cV9y0yVp7W$Q4eh(k1ew$)xvHT06(X@L zFmmtOCOXUnc}sULlVaKB=XiRi!bR>xCYw(dB;D@}|CHO;Tg1G`;FwAy0+|=LD*51p zB3W6QYkqMr^9;WYOkA27VI~WLLN0qI;v#j0q^?kYQf@u0Z#MI4*=s z4lJoQ^Ay9tDH3ReocxG1je8!2YX&1T?<2?x>_4d^#9s~VzA~)$qP1tg{^zB!Hy=rz z`BtW}K0M#)Tv+Ve;Et1ex6vD0<6&fMa6#Xyr&oI7vu%hVHK6po=ZSyA2WK(9US%y4 zS>h$6B?#?qLa~*9;|Uf!4tQ!~sn0Ook=kOQEefWJG2x{ktteBpNdvoOw?S8*ImhsJ{PY>2-DyWZnXQ`)Y#r^ z%|egz1T34pf>{>VHdSnx<}Ov;X~ZvP$DWDSpAM3yUA5MZ6(V zC4aEkCo4LAzYu7Pom1edx&5%rg-zx5!XhQjO-IxuM3<~Wch;fG6NwQF6Yh)G4S4$>zne$n_7KQPjcg;0GRY* zIhI|gsc%H>!aWEwI6L|xQvyS2@kt7Jm?2blv$CgUk_AoTyFq$}o;1ksG| zV;I6P;lGenhAEPR%nXaYA+7)renaV#;JvfO?|y3t<8WTxW_AVn)Doo$_?;}Ct3$e9 z9@I@z(uLCQLxB(HM$ddJ*jXFc5)3YL2j*JTrMAFke_|8ZPcQ#AfptoNVI|2SM7=Hd zgc*9m4dPNnqd(UP@l{{s;qWo|0H;11i3ufEE@NbZvn^hyAyNwBK;|CB;WN|io$c{0 z@WO~umb%qNZVgZT64dp23ZchdCOm$Y_X#9qsPUl$;e&tL?&MQ#(D2{molJEE=r_dI zwZjj*B7`>+tv+6twQggFH?&8MAJ&scwB#XHiVVI&qzzCK$Z~G7GLCGvZ^y(y}<6n0mgdt1&bX|3s%hyPHjnvZJXCP!>^ClAES*4 zlrOb0bwGlU+8L`}m#Fw%Y3T#jk{5i+ay76;jct?eKe3E0yIbQuWf90cSKtAw=RZnH z|HEqK^>v%=^YESX3cglU`n_Vy&r3=lve};TD$jZKr(on3+ow2{Sqg`Y`zfpaal7kb ztMm88mPvLG>ChZpOg`97?g*D{4P}A5&M3Anv-`F&*a(#$3zQQ?d@5ddG**oW6=C&J zEp@_>q>9s_%0uDo-e77sv4p%4B=z(EVf=Gt5T`~@#}MM~fS2$P(cU>OLrm6S1@!{h5{`-AfLkch3Ox*`9q8>n^e;1W2`A*>CSa)vz+Qwn-AjXR4gv&IJC%Y0LO)v z2?#FH^9K`{E7y2~tBK=M@Lhx`r>Ra4oh#}|j)lb@RX7!%z!tw?c{|nQZXNM&io4ks z#8F=DDTn(P#igVa{jRW>u4y`4CAWXO5o<*K<@4{*0?k1P+@ZC&kPh&fb#GFrW#haMG7xO`8ta+8L8(GO%} zvQsiG5P&vmN#x1POC4KW`tf+}`NXILz7(dkg?8UEx3N`A?uyl{4`m)HD*bI~(Ik(1 zp0CjCTL1QAxF&2v!}7RvieIA!+4oIT6U7307W?j=U79ITRVynS@OfFF-*;TeHxnLC*eN34LLs9LP&;huR*zxh-4;C}8*zx&zko+f~R`R^i ztVmX*8IVM-E1#L$5W_9T%|rQRT)Ut{gH0v-KiE5-iC3u zbYB?Od)oKst%*b5;VE&faRs;fGo*Dh5Sv!)S?U0}8{eTsX&B&=Y*V8+fpLH|YcO*o ziybP#h%=lj4hjNUpLZ)j^~n;O<_lnlg7OGX31-(S62hG5T+}tFPE>Npe3L8;eB2;o z7P*xrC@K9x{AAo=*cG(<6RqA@2QdkO^mZe$Rt*C#d)&-~AqVd#d3g`y7d&2642^EH z5pB>3X7DuyXgs9Npl0wq?ha-Tg)5GVxGUX=JPdb@-MhxEBl_FxIM;d)N_IM2cS5fsl;TLRLKJR9=S6Dh`%i_c&V*`SijBS; zs=E-aC9d^Ue8iz>Ef>y~dgG0!V?7;O|Ka@J!-IQ|4Cy-oZ$7{GVt(IcAkGD(&-Pr) zCwGNsw~yP(I|KXQ=7~2Gj3w@lw_{1Ilav(Uh9OS5X&%W9i=|*VOhmdhu2 zQgkte%iYR8WDi4NC9$vk=C=oPz~%Nn6pSdPnR=lM0JJBb&%ynga`B|4?pHKowOWDE`bHXbZ3 z(_vKb_q)j#z)sw#333H&%5;{{cH}L}vmXBwKJSAL+wYh%7hCyBXxvNu!9@=LLK~7W zm0{~<_VkKA+2)vJv(IpQ=7Fn3EvCqHcs0Wxf4n_V#;&c|7i;!Kn)MjJo{j!AxA#dP z{8k5Pn52JAf>GvEH$)RnQTCz1HC{h+t^KhwHjH>JH+cj6UTi8HFSHz6Rr)UfVz0s> zhC6_J$YFRtO8TIWD_;WW-bPOdp+I{$xjRv{BamVfilcLZ#kV<}*%-+pft%s*z*XuD z(mR#y*3)~H)bVf~hUdlri4kG4zFK3I@LiYj{$f+0dr~bkY@D>-DPI2*cKfdj@_tjC z_uG<^#{{z!obHc2B7T){?U7(5 zsgzBg@IJ0#iIL|MBYBTFMZo|R57obt7<;ws_RHnBo=%NIE!tKUdhHMCt`5*=rLY2f z&JOLl$dNLvPr?8(dVo9Sy2a(EfChuRQ}6qO`rqdvcs)*?o_#dd|=y z&^%e13z3+vffWkLEeL!?hQhl!eSzRS305J*(`*x@Q{YtLm?Er&%Nuty?p<8c=q7lo zX(+g%$+sbEeqLg4mM&vBcPr`G-=`M9#)_)gg!M62W`W8HC}$IGeGZo_-<+V8$ZtV4 zEpSSKyoi8@6NXUOTsES#^~3uK-F;KV3ZNF0AZEt|>tN7>1PRcwJ&@fMtRQ3urTrGbNT9MlC4KN923fmj29;6?=N`D9p?(1u7C^7xi3`bup5 z9uKjKy*v_7y$4*$AyN0t?`wxxB00DrqM#CP%-P8Gj`;ieJCo8(MBt zHU%P$$+GoEbg2`3Rs;g~8i&ywt?bOy0pWkLsC1UY$6TSqkf9S|{=e-YWGzrA8-)vp=_azB45M2SW>fIkfQ6Li;4QhC1da1^K@!$RkPsXA7?OX+bhrpB?*q>x@K zzx7rA_^I))Ror>K?(Qp5$ zSIH?Dg+eSsW|azYQ_~?N>n$He*p4aCaQs|JqOrruXIi zt`~>jxH!1$?7-ergZobv^&B(aoS)isn`^G_A=j=UP~EI$>8INxWzAvUL^C^phG5Xu z!f;zUp%eKc?7#U>99|8N+uz4T8OpAcal_+HWo73XiegZLnNt4-NWyJCr6w{?W`TJ-h@+mts(F z%UJC@RQ&53kq#K-&8IuVSbx)NIf4{+GNHXHclYw0o*14=!~qAR6&<0}de{IyxR~CV z4uDUN6?R{nKXp1W@?zQ8GwBf>dWwAx7cjmAe+pb*vr3(~@b?AE7|nGM)g7;7-}>`m z!=JEPkt(+Oqj=Fy%08!JZ?t?hZg`t>1%!ZbYKhZWXjh4(ZScq1gBkWDQ%l@W6V;AM)9&!}?z?=y|b#rlsfXu>P}_{*(T{HYX4MP+yf* zcaFQ|;F!BxBQ-7DRk(OWt9M1J@UFDzNt{~^G%a*8q^r7&ja<@L#wn3C;)o2agkh(L zC%F7SE4Ctz`k~G7TY_AmBzps^eUi}!=7#|&x9wS07f52#U?wAwDY4IWDXX;5CM77O zNdt;frk#NAK&mrQxg$}5j9|9i2TY!bEYeI{;LJlG1^c4n83Zd6qh|2;bJ1GhRyJV7 z_b2wNnLR#w{q(_bMTeGLBI7ur2w#P}mLcq0v7;Kk8(q;0}(M&3(;DFjys zhG#@ND#Y}84*$*o-pTY{d?tzV>2BXoh7EtHxEQJE-eBf{)J$|&DBcmxV4?@Y|zCe1-cvJ!MR{8Pe-xd)k=ONvcY{j%d1NDJM+i7Ylv#b%tfu4FQi zklu?-P!Yo9Ld8V;+4IMt-5(Ey-}l*vL*>Qj%w%GS9pF8N1Oxk-LeRrpDeSpa)OP{A zSn+44mF@%KcjiaiKkwajTkVx^eErCnI{-_!`;$AdCJEZ{fCIKgkFQn&3t{kqQC1|4^}$m2PYdl2dyVJA(OG(Mg+I0Yk2{ zkO&HYV73~ZjCtLqtOZIG%rt3nb|Z�zn{)VdP|q`96lu8ev_05(x9H!OC6Xs#YV@ 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 diff --git a/test/support/helper.js b/test/support/helper.js deleted file mode 100644 index 10dc20c70..000000000 --- a/test/support/helper.js +++ /dev/null @@ -1,37 +0,0 @@ -var assert = require('assert'); -var fs = require('fs'); -var pathExists = require('fs').existsSync || require('path').existsSync; - -exports.deleteFile = function(name) { - try { - fs.unlinkSync(name); - } catch(err) { - if (err.errno !== process.ENOENT && err.code !== 'ENOENT' && err.syscall !== 'unlink') { - throw err; - } - } -}; - -exports.ensureExists = function(name,cb) { - if (!pathExists(name)) { - fs.mkdirSync(name); - }; -} - -assert.fileDoesNotExist = function(name) { - try { - fs.statSync(name); - } catch(err) { - if (err.errno !== process.ENOENT && err.code !== 'ENOENT' && err.syscall !== 'unlink') { - throw err; - } - } -}; - -assert.fileExists = function(name) { - try { - fs.statSync(name); - } catch(err) { - throw err; - } -}; \ No newline at end of file diff --git a/test/support/prepare.db b/test/support/prepare.db deleted file mode 100644 index 660234cc0968ad2e2bd701e0abe862deab898d8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161792 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

4n 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 diff --git a/test/support/script.sql b/test/support/script.sql deleted file mode 100644 index 8a345ed67..000000000 --- a/test/support/script.sql +++ /dev/null @@ -1,70 +0,0 @@ -CREATE TABLE IF NOT EXISTS map ( - zoom_level INTEGER, - tile_column INTEGER, - tile_row INTEGER, - tile_id TEXT, - grid_id TEXT -); - -CREATE TABLE IF NOT EXISTS grid_key ( - grid_id TEXT, - key_name TEXT -); - -CREATE TABLE IF NOT EXISTS keymap ( - key_name TEXT, - key_json TEXT -); - -CREATE TABLE IF NOT EXISTS grid_utfgrid ( - grid_id TEXT, - grid_utfgrid TEXT -); - -CREATE TABLE IF NOT EXISTS images ( - tile_data blob, - tile_id text -); - -CREATE TABLE IF NOT EXISTS metadata ( - name text, - value text -); - - -CREATE UNIQUE INDEX IF NOT EXISTS map_index ON map (zoom_level, tile_column, tile_row); -CREATE UNIQUE INDEX IF NOT EXISTS grid_key_lookup ON grid_key (grid_id, key_name); -CREATE UNIQUE INDEX IF NOT EXISTS keymap_lookup ON keymap (key_name); -CREATE UNIQUE INDEX IF NOT EXISTS grid_utfgrid_lookup ON grid_utfgrid (grid_id); -CREATE UNIQUE INDEX IF NOT EXISTS images_id ON images (tile_id); -CREATE UNIQUE INDEX IF NOT EXISTS name ON metadata (name); - - -CREATE VIEW IF NOT EXISTS tiles AS - SELECT - map.zoom_level AS zoom_level, - map.tile_column AS tile_column, - map.tile_row AS tile_row, - images.tile_data AS tile_data - FROM map - JOIN images ON images.tile_id = map.tile_id; - -CREATE VIEW IF NOT EXISTS grids AS - SELECT - map.zoom_level AS zoom_level, - map.tile_column AS tile_column, - map.tile_row AS tile_row, - grid_utfgrid.grid_utfgrid AS grid - FROM map - JOIN grid_utfgrid ON grid_utfgrid.grid_id = map.grid_id; - -CREATE VIEW IF NOT EXISTS grid_data AS - SELECT - map.zoom_level AS zoom_level, - map.tile_column AS tile_column, - map.tile_row AS tile_row, - keymap.key_name AS key_name, - keymap.key_json AS key_json - FROM map - JOIN grid_key ON map.grid_id = grid_key.grid_id - JOIN keymap ON grid_key.key_name = keymap.key_name; diff --git a/test/trace.test.js b/test/trace.test.js deleted file mode 100644 index 3f790bd8f..000000000 --- a/test/trace.test.js +++ /dev/null @@ -1,67 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('tracing', function() { - it('Database tracing', function(done) { - var db = new sqlite3.Database(':memory:'); - var create = false; - var select = false; - - db.on('trace', function(sql) { - if (sql.match(/^SELECT/)) { - assert.ok(!select); - assert.equal(sql, "SELECT * FROM foo"); - select = true; - } - else if (sql.match(/^CREATE/)) { - assert.ok(!create); - assert.equal(sql, "CREATE TABLE foo (id int)"); - create = true; - } - else { - assert.ok(false); - } - }); - - db.serialize(function() { - db.run("CREATE TABLE foo (id int)"); - db.run("SELECT * FROM foo"); - }); - - db.close(function(err) { - if (err) throw err; - assert.ok(create); - assert.ok(select); - done(); - }); - }); - - - it('test disabling tracing #1', function(done) { - var db = new sqlite3.Database(':memory:'); - - db.on('trace', function(sql) {}); - db.removeAllListeners('trace'); - db._events['trace'] = function(sql) { - assert.ok(false); - }; - - db.run("CREATE TABLE foo (id int)"); - db.close(done); - }); - - - it('test disabling tracing #2', function(done) { - var db = new sqlite3.Database(':memory:'); - - var trace = function(sql) {}; - db.on('trace', trace); - db.removeListener('trace', trace); - db._events['trace'] = function(sql) { - assert.ok(false); - }; - - db.run("CREATE TABLE foo (id int)"); - db.close(done); - }); -}); diff --git a/test/unicode.test.js b/test/unicode.test.js deleted file mode 100644 index b76ca4289..000000000 --- a/test/unicode.test.js +++ /dev/null @@ -1,114 +0,0 @@ -var sqlite3 = require('..'); -var assert = require('assert'); - -describe('unicode', function() { - var first_values = [], - trailing_values = [], - chars = [], - subranges = new Array(2), - len = subranges.length, - db, - i; - - before(function(done) { db = new sqlite3.Database(':memory:', done); }); - - for (i = 0x20; i < 0x80; i++) { - first_values.push(i); - } - - for (i = 0xc2; i < 0xf0; i++) { - first_values.push(i); - } - - for (i = 0x80; i < 0xc0; i++) { - trailing_values.push(i); - } - - for (i = 0; i < len; i++) { - subranges[i] = []; - } - - for (i = 0xa0; i < 0xc0; i++) { - subranges[0].push(i); - } - - for (i = 0x80; i < 0xa0; i++) { - subranges[1].push(i); - } - - function random_choice(arr) { - return arr[Math.random() * arr.length | 0]; - } - - function random_utf8() { - var first = random_choice(first_values); - - if (first < 0x80) { - return String.fromCharCode(first); - } else if (first < 0xe0) { - return String.fromCharCode((first & 0x1f) << 0x6 | random_choice(trailing_values) & 0x3f); - } else if (first == 0xe0) { - return String.fromCharCode(((first & 0xf) << 0xc) | ((random_choice(subranges[0]) & 0x3f) << 6) | random_choice(trailing_values) & 0x3f); - } else if (first == 0xed) { - return String.fromCharCode(((first & 0xf) << 0xc) | ((random_choice(subranges[1]) & 0x3f) << 6) | random_choice(trailing_values) & 0x3f); - } else if (first < 0xf0) { - return String.fromCharCode(((first & 0xf) << 0xc) | ((random_choice(trailing_values) & 0x3f) << 6) | random_choice(trailing_values) & 0x3f); - } - } - - function randomString() { - var str = '', - i; - - for (i = Math.random() * 300; i > 0; i--) { - str += random_utf8(); - } - - return str; - } - - - // Generate random data. - var data = []; - var length = Math.floor(Math.random() * 1000) + 200; - for (var i = 0; i < length; i++) { - data.push(randomString()); - } - - var inserted = 0; - var retrieved = 0; - - it('should create the table', function(done) { - db.run("CREATE TABLE foo (id int, txt text)", done); - }); - - it('should insert all values', function(done) { - var stmt = db.prepare("INSERT INTO foo VALUES(?, ?)"); - for (var i = 0; i < data.length; i++) { - stmt.run(i, data[i], function(err) { - if (err) throw err; - inserted++; - }); - } - stmt.finalize(done); - }); - - it('should retrieve all values', function(done) { - db.all("SELECT txt FROM foo ORDER BY id", function(err, rows) { - if (err) throw err; - - for (var i = 0; i < rows.length; i++) { - assert.equal(rows[i].txt, data[i]); - retrieved++; - } - done(); - }); - }); - - it('should have inserted and retrieved the correct amount', function() { - assert.equal(inserted, length); - assert.equal(retrieved, length); - }); - - after(function(done) { db.close(done); }); -});