public void TestJsBuiltInReduceFunction() { var c = new JSViewCompiler(); var reduceBlock = c.CompileReduce("_count", "javascript"); Assert.IsNotNull(reduceBlock); Assert.AreEqual(BuiltinReduceFunctions.Count, reduceBlock); reduceBlock = c.CompileReduce("_stats", "javascript"); Assert.IsNotNull(reduceBlock); Assert.AreEqual(BuiltinReduceFunctions.Stats, reduceBlock); var keys = new List <object> { "master", "schlage", "medeco" }; var values = new List <object> { 19, -75, 3.1416 }; var result = reduceBlock(keys, values, false); var expected = new Dictionary <string, object> { { "count", 3 }, { "sum", -52.8584 }, { "sumsqr", 5995.86965056 }, { "max", 19 }, { "min", -75 } }; CollectionAssert.AreEquivalent(expected, (IEnumerable)result); reduceBlock = c.CompileReduce("_frob", "javascript"); Assert.IsNull(reduceBlock); }
public void TestJsReduceFunction() { var c = new JSViewCompiler(); var reduceBlock = c.CompileReduce("function(k,v,r){return [k,v,r];}", "javascript"); Assert.IsNotNull(reduceBlock); var keys = new List <object> { "master", "schlage", "medeco" }; var values = new List <object> { 1, 2, 3 }; var result = reduceBlock(keys, values, false); CollectionAssert.AreEqual(new List <object> { keys, values, false }, (IEnumerable)result); }