1
0
Fork 0

Merge branch 'devel' of ssh://github.com/triAGENS/ArangoDB into devel

This commit is contained in:
Max Neunhoeffer 2014-10-29 15:42:35 +01:00
commit e0c85832a5
6 changed files with 117 additions and 15 deletions

View File

@ -284,6 +284,85 @@ BOOST_AUTO_TEST_CASE (tst_json_string_reference) {
FREE_JSON
}
////////////////////////////////////////////////////////////////////////////////
/// @brief test string reference value
////////////////////////////////////////////////////////////////////////////////
BOOST_AUTO_TEST_CASE (tst_json_string_reference2) {
INIT_BUFFER
const char* data1 = "The first Brown Fox";
const char* data2 = "The second Brown Fox";
char copy1[64];
char copy2[64];
TRI_json_t* json;
size_t len1 = strlen(data1);
size_t len2 = strlen(data2);
memset(copy1, 0, sizeof(copy1));
memcpy(copy1, data1, len1);
memset(copy2, 0, sizeof(copy2));
memcpy(copy2, data2, len2);
json = TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE);
TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "first",
TRI_CreateStringReferenceJson(TRI_UNKNOWN_MEM_ZONE, copy1));
TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "second",
TRI_CreateStringReference2Json(TRI_UNKNOWN_MEM_ZONE, copy2, len2));
BOOST_CHECK_EQUAL(true, TRI_IsArrayJson(json));
STRINGIFY
BOOST_CHECK_EQUAL("{\"first\":\"The first Brown Fox\",\"second\":\"The second Brown Fox\"}", STRING_VALUE);
FREE_BUFFER
FREE_JSON
// freeing JSON should not affect our string
BOOST_CHECK_EQUAL("The first Brown Fox", copy1);
BOOST_CHECK_EQUAL("The second Brown Fox", copy2);
json = TRI_CreateArrayJson(TRI_UNKNOWN_MEM_ZONE);
TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "first",
TRI_CreateStringReferenceJson(TRI_UNKNOWN_MEM_ZONE, copy1));
TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "second",
TRI_CreateStringReference2Json(TRI_UNKNOWN_MEM_ZONE, copy2, len2));
BOOST_CHECK_EQUAL(true, TRI_IsArrayJson(json));
// modify the string we're referring to
copy1[0] = '*';
copy1[1] = '/';
copy1[2] = '+';
copy1[len1 - 1] = '!';
copy2[0] = '*';
copy2[1] = '/';
copy2[2] = '+';
copy2[len2 - 1] = '!';
BOOST_CHECK_EQUAL("*/+ first Brown Fo!", copy1);
BOOST_CHECK_EQUAL("*/+ second Brown Fo!", copy2);
sb = TRI_CreateStringBuffer(TRI_UNKNOWN_MEM_ZONE);
STRINGIFY
BOOST_CHECK_EQUAL("{\"first\":\"*/+ first Brown Fo!\",\"second\":\"*/+ second Brown Fo!\"}", STRING_VALUE);
FREE_BUFFER
// freeing JSON should not affect our string
BOOST_CHECK_EQUAL("*/+ first Brown Fo!", copy1);
BOOST_CHECK_EQUAL("*/+ second Brown Fo!", copy2);
FREE_JSON
}
////////////////////////////////////////////////////////////////////////////////
/// @brief test string value (escaped)
////////////////////////////////////////////////////////////////////////////////

View File

@ -664,7 +664,7 @@ int deleteDocumentOnCoordinator (
if (0 == json) {
return TRI_ERROR_OUT_OF_MEMORY;
}
TRI_Insert2ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "_key",
TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "_key",
TRI_CreateStringReference2Json(TRI_UNKNOWN_MEM_ZONE,
key.c_str(), key.size()));
bool usesDefaultShardingAttributes;
@ -855,7 +855,7 @@ int getDocumentOnCoordinator (
if (0 == json) {
return TRI_ERROR_OUT_OF_MEMORY;
}
TRI_Insert2ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "_key",
TRI_Insert3ArrayJson(TRI_UNKNOWN_MEM_ZONE, json, "_key",
TRI_CreateStringReference2Json(TRI_UNKNOWN_MEM_ZONE,
key.c_str(), key.size()));
bool usesDefaultShardingAttributes;
@ -1244,7 +1244,7 @@ int createEdgeOnCoordinator (
TRI_json_t* subjson = TRI_LookupArrayJson(json, "_key");
bool userSpecifiedKey = false;
string _key;
if (0 == subjson) {
if (subjson == nullptr) {
// The user did not specify a key, let's create one:
uint64_t uid = ci->uniqid();
_key = triagens::basics::StringUtils::itoa(uid);

View File

@ -74,6 +74,7 @@ JAVASCRIPT_JSLINT = \
`find @srcdir@/js/apps/system/aardvark/test/specs -name "*.js"` \
`find @srcdir@/js/apps/system/aardvark/test/clusterSpecs -name "*.js"` \
\
@srcdir@/js/common/modules/jsunity.js \
@srcdir@/js/client/client.js \
@srcdir@/js/server/server.js \
@srcdir@/js/server/upgrade-database.js \

View File

@ -1,3 +1,5 @@
/*jshint strict: false */
/*global require, exports */
////////////////////////////////////////////////////////////////////////////////
/// @brief JSUnity wrapper
///
@ -25,10 +27,21 @@
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
var _ = require("underscore");
var internal = require("internal");
var print = internal.print;
var fs = require("fs");
var console = require("console");
var COMPLETE={
"TOTAL": 0,
"PASSED": 0,
"FAILED": 0,
"DURATION": 0,
"RESULTS": {}
};
var TOTAL = 0;
var PASSED = 0;
var FAILED = 0;
@ -71,7 +84,10 @@ jsUnity.results.fail = function (index, testName, message) {
jsUnity.results.end = function (passed, failed, duration) {
print(" " + passed + " test(s) passed");
print(" " + ((failed > 0) ? internal.COLORS.COLOR_RED : internal.COLORS.COLOR_RESET) + failed + " test(s) failed" + internal.COLORS.COLOR_RESET);
print(" " + ((failed > 0) ?
internal.COLORS.COLOR_RED :
internal.COLORS.COLOR_RESET) +
failed + " test(s) failed" + internal.COLORS.COLOR_RESET);
print(" " + duration + " millisecond(s) elapsed");
print();
};
@ -89,13 +105,13 @@ jsUnity.results.end = function (passed, failed, duration) {
/// @brief runs a test with context
////////////////////////////////////////////////////////////////////////////////
function Run (tests) {
var suite = jsUnity.compile(tests);
var definition = tests();
function Run (testsuite) {
var suite = jsUnity.compile(testsuite);
var definition = testsuite();
var tests = [];
var setUp = undefined;
var tearDown = undefined;
var setUp;
var tearDown;
if (definition.hasOwnProperty("setUp")) {
setUp = definition.setUp;
@ -110,12 +126,12 @@ function Run (tests) {
scope.tearDown = tearDown;
for (var key in definition) {
if (key.indexOf("test") == 0) {
if (key.indexOf("test") === 0) {
var test = { name : key, fn : definition[key] };
tests.push(test);
}
else if (key != "tearDown" && key != "setUp") {
else if (key !== "tearDown" && key !== "setUp") {
console.error("unknown function: %s", key);
}
}
@ -131,6 +147,13 @@ function Run (tests) {
PASSED += result.passed;
FAILED += result.failed;
DURATION += result.duration;
COMPLETE.TOTAL += result.total;
COMPLETE.PASSED += result.passed;
COMPLETE.FAILED += result.failed;
COMPLETE.DURATION += result.duration;
_.defaults(COMPLETE.RESULTS, RESULTS);
return result;
}
@ -143,7 +166,7 @@ function Done (suiteName) {
internal.printf("%d total, %d passed, %d failed, %d ms", TOTAL, PASSED, FAILED, DURATION);
print();
var ok = FAILED == 0;
var ok = FAILED === 0;
RESULTS.duration = DURATION;
RESULTS.status = ok;
@ -156,7 +179,7 @@ function Done (suiteName) {
FAILED = 0;
DURATION = 0;
return RESULTS;
return COMPLETE.RESULTS;
}
////////////////////////////////////////////////////////////////////////////////
@ -172,7 +195,7 @@ function RunTest (path) {
content = "(function(){require('jsunity').jsUnity.attachAssertions();" + content + "})";
f = internal.executeScript(content, undefined, path);
if (f == undefined) {
if (f === undefined) {
throw "cannot create context function";
}

View File

@ -31,7 +31,6 @@
var db = require("org/arangodb").db;
var jsunity = require("jsunity");
var helper = require("org/arangodb/aql-helper");
var removeAlwaysOnClusterRules = helper.removeAlwaysOnClusterRules;
////////////////////////////////////////////////////////////////////////////////
/// @brief test suite