From 949f9da6a6548704786d809be76a3a2d47d6fabe Mon Sep 17 00:00:00 2001 From: Adam Kocoloski Date: Thu, 26 Aug 2010 12:21:37 -0400 Subject: move futon to share/www --- .../share/www/script/test/reduce_builtin.js | 153 +++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 rel/overlay/share/www/script/test/reduce_builtin.js (limited to 'rel/overlay/share/www/script/test/reduce_builtin.js') diff --git a/rel/overlay/share/www/script/test/reduce_builtin.js b/rel/overlay/share/www/script/test/reduce_builtin.js new file mode 100644 index 00000000..d9635688 --- /dev/null +++ b/rel/overlay/share/www/script/test/reduce_builtin.js @@ -0,0 +1,153 @@ +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy of +// the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. + +couchTests.reduce_builtin = function(debug) { + var db = new CouchDB("test_suite_db", {"X-Couch-Full-Commit":"false"}); + db.deleteDb(); + db.createDb(); + if (debug) debugger; + + var numDocs = 500 + var docs = makeDocs(1,numDocs + 1); + db.bulkSave(docs); + + var summate = function(N) {return (N+1)*N/2;}; + + var sumsqr = function(N) { + var acc = 0; + for (var i=1; i<=N; ++i) { + acc += i*i; + } + return acc; + } + + // this is the same test as the reduce.js test + // only we'll let CouchDB run reduce in Erlang + var map = function (doc) { + emit(doc.integer, doc.integer); + emit(doc.integer, doc.integer)}; + + var result = db.query(map, "_sum"); + T(result.rows[0].value == 2*summate(numDocs)); + result = db.query(map, "_count"); + T(result.rows[0].value == 1000); + result = db.query(map, "_stats"); + T(result.rows[0].value.sum == 2*summate(numDocs)); + T(result.rows[0].value.count == 1000); + T(result.rows[0].value.min == 1); + T(result.rows[0].value.max == 500); + T(result.rows[0].value.sumsqr == 2*sumsqr(numDocs)); + + result = db.query(map, "_sum", {startkey: 4, endkey: 4}); + T(result.rows[0].value == 8); + result = db.query(map, "_count", {startkey: 4, endkey: 4}); + T(result.rows[0].value == 2); + + result = db.query(map, "_sum", {startkey: 4, endkey: 5}); + T(result.rows[0].value == 18); + result = db.query(map, "_count", {startkey: 4, endkey: 5}); + T(result.rows[0].value == 4); + + result = db.query(map, "_sum", {startkey: 4, endkey: 6}); + T(result.rows[0].value == 30); + result = db.query(map, "_count", {startkey: 4, endkey: 6}); + T(result.rows[0].value == 6); + + result = db.query(map, "_sum", {group:true, limit:3}); + T(result.rows[0].value == 2); + T(result.rows[1].value == 4); + T(result.rows[2].value == 6); + + for(var i=1; i