/* * Prints the values of a node. This function is designed to be called by the * registry module. * * Arguments: * node Pointer to the node. Shall not be NULL. * Returns: * 0 Success * ENOENT This node lies outside the scope of interest. */ static int printNodeValues( RegNode* const node) { int status; const char* const absPath = reg_getNodeAbsPath(node); if (strstr(absPath, _pathPrefix) != absPath) { status = ENOENT; } else { if (0 == absPath[1]) { _nodePath = absPath+1; } else { _nodePath = absPath; } status = reg_visitValues(node, printValueThing); } return status; }
static void test_regNode(void) { RegStatus status; RegNode* testnode; RegNode* subnode; char* string; const char* constString; unsigned uint; int boolean; timestampt time; signaturet defSig1 = {0}; signaturet defSig2 = {1}; signaturet sig; status = reg_getNode("/test_node/subnode", &subnode, 1); if (status) { log_error("test_regNode(): Couldn't get subnode"); } else { CU_ASSERT_EQUAL_FATAL(status, 0); CU_ASSERT_PTR_NOT_NULL(subnode); } constString = reg_getNodeName(subnode); CU_ASSERT_STRING_EQUAL(constString, "subnode"); constString = reg_getNodeAbsPath(subnode); CU_ASSERT_STRING_EQUAL(constString, "/test_node/subnode"); status = reg_getNodeString(subnode, "string_key", &string); if (status && ENOENT != status) { log_error("test_regNode(): Couldn't verify non-existant subnode string"); } else { CU_ASSERT_EQUAL(status, ENOENT); } status = reg_putNodeString(subnode, "string_key", "string value"); if (0 != status) { log_error("test_regNode(): Couldn't add subnode string"); } else { CU_ASSERT_EQUAL(status, 0); } status = reg_getNodeString(subnode, "string_key", &string); if (status) { log_error("test_regNode(): Couldn't get subnode string"); } else { CU_ASSERT_EQUAL(status, 0); CU_ASSERT_STRING_EQUAL(string, "string value"); free(string); } status = reg_getNodeBool(subnode, "bool_key", &boolean); if (status && ENOENT != status) { log_error("test_regNode(): Couldn't verify non-existant subnode boolean"); } else { CU_ASSERT_EQUAL(status, ENOENT); } status = reg_putNodeBool(subnode, "bool_key", 1); if (0 != status) { log_error("test_regNode(): Couldn't put subnode boolean"); } else { CU_ASSERT_EQUAL(status, 0); } status = reg_getNodeBool(subnode, "bool_key", &boolean); if (status) { log_error("test_regNode(): Couldn't get subnode boolean"); } else { CU_ASSERT_EQUAL(status, 0); CU_ASSERT_EQUAL(boolean, 1); } status = reg_getNodeUint(subnode, "uint_key", &uint); if (status && ENOENT != status) { log_error("test_regNode(): Couldn't verify non-existant subnode int"); } else { CU_ASSERT_EQUAL(status, ENOENT); } status = reg_putNodeUint(subnode, "uint_key", 5); if (0 != status) { log_error("test_regNode(): Couldn't put subnode int"); } else { CU_ASSERT_EQUAL(status, 0); } status = reg_getNodeUint(subnode, "uint_key", &uint); if (status) { log_error("test_regNode(): Couldn't get subnode int"); } else { CU_ASSERT_EQUAL(status, 0); CU_ASSERT_EQUAL(uint, 5); } status = reg_getNodeTime(subnode, "time_key", &time); if (status && ENOENT != status) { log_error("test_regNode(): Couldn't verify non-existant subnode time"); } else { CU_ASSERT_EQUAL(status, ENOENT); } status = reg_putNodeTime(subnode, "time_key", &TS_ZERO); if (0 != status) { log_error("test_regNode(): Couldn't put subnode time"); } else { CU_ASSERT_EQUAL(status, 0); } status = reg_getNodeTime(subnode, "time_key", &time); if (status) { log_error("test_regNode(): Couldn't get subnode time"); } else { CU_ASSERT_EQUAL(status, 0); CU_ASSERT_EQUAL(d_diff_timestamp(&time, &TS_ZERO), 0.0); } status = reg_getNodeSignature(subnode, "sig_key", &sig); if (status && ENOENT != status) { log_error("test_regNode(): Couldn't verify non-existant subnode sig"); } else { CU_ASSERT_EQUAL(status, ENOENT); } status = reg_putNodeSignature(subnode, "sig_key", defSig2); if (0 != status) { log_error("test_regNode(): Couldn't put subnode sig"); } else { CU_ASSERT_EQUAL(status, 0); } status = reg_getNodeSignature(subnode, "sig_key", &sig); if (status) { log_error("test_regNode(): Couldn't get subnode sig"); } else { CU_ASSERT_EQUAL(status, 0); CU_ASSERT_EQUAL(memcmp(sig, defSig2, sizeof(signaturet)), 0); } status = reg_deleteNodeValue(subnode, "non-existant_key"); if (status && ENOENT != status) { log_error("test_regNode(): Couldn't verify non-existant subnode value deletion"); } else { CU_ASSERT_EQUAL(status, ENOENT); } status = reg_deleteNodeValue(subnode, "string_key"); if (status) { log_error("test_regNode(): Couldn't delete subnode value"); } else { CU_ASSERT_EQUAL(status, 0); } status = reg_getNodeString(subnode, "string_key", &string); if (status && ENOENT != status) { log_error("test_regNode(): Couldn't verify non-existant subnode string"); } else { CU_ASSERT_EQUAL(status, ENOENT); } status = reg_getNode("/test_node", &testnode, 1); if (status) { log_error("test_regNode(): Couldn't get subnode"); } else { CU_ASSERT_EQUAL_FATAL(status, 0); CU_ASSERT_PTR_NOT_NULL(testnode); } status = reg_flushNode(testnode); if (status) { log_error("test_regNode(): Couldn't flush node"); } else { CU_ASSERT_EQUAL(status, 0); } rn_free(testnode); { status = reg_getNode("/test_node2", &testnode, 1); if (status) { log_error("test_regNode(): Couldn't get temporary node"); } else { CU_ASSERT_EQUAL_FATAL(status, 0); CU_ASSERT_PTR_NOT_NULL(testnode); } status = reg_putNodeString(testnode, "string_key", "string value"); if (0 != status) { log_error("test_regNode(): Couldn't add temporary node string"); } else { CU_ASSERT_EQUAL(status, 0); } status = reg_flushNode(testnode); if (status) { log_error("test_regNode(): Couldn't flush temporary node"); } else { CU_ASSERT_EQUAL(status, 0); } reg_deleteNode(testnode); status = reg_flushNode(testnode); if (status) { log_error("test_regNode(): Couldn't delete temporary node"); } else { CU_ASSERT_EQUAL(status, 0); } rn_free(testnode); status = reg_getNode("/test_node2", &testnode, 0); if (status && ENOENT != status) { log_error("test_regNode(): Couldn't verify temporary node deletion"); } else { CU_ASSERT_EQUAL(status, ENOENT); } } }