/** * Visits the given ASTNode node. This function is really just a * dispatcher to either SBML_formulaToL3String_visitFunction() or * SBML_formulaToL3String_visitOther(). */ void L3FormulaFormatter_visit ( const ASTNode_t *parent, const ASTNode_t *node, StringBuffer_t *sb, const L3ParserSettings_t *settings ) { if (ASTNode_isLog10(node)) { L3FormulaFormatter_visitLog10(parent, node, sb, settings); } else if (ASTNode_isSqrt(node)) { L3FormulaFormatter_visitSqrt(parent, node, sb, settings); } else if (isTranslatedModulo(node)) { L3FormulaFormatter_visitModulo(parent, node, sb, settings); } else if (L3FormulaFormatter_isFunction(node, settings)) { L3FormulaFormatter_visitFunction(parent, node, sb, settings); } else if (ASTNode_isUMinus(node)) { L3FormulaFormatter_visitUMinus(parent, node, sb, settings); } else if (ASTNode_hasTypeAndNumChildren(node, AST_LOGICAL_NOT, 1)) { L3FormulaFormatter_visitUNot(parent, node, sb, settings); } else if (ASTNode_hasTypeAndNumChildren(node, AST_QUALIFIER_LOGBASE, 1)) { L3FormulaFormatter_visit(node, ASTNode_getChild(node, 0), sb, settings); } else if (ASTNode_hasTypeAndNumChildren(node, AST_QUALIFIER_DEGREE, 1)) { L3FormulaFormatter_visit(node, ASTNode_getChild(node, 0), sb, settings); } else if (ASTNode_hasTypeAndNumChildren(node, AST_SEMANTICS, 1)) { L3FormulaFormatter_visit(node, ASTNode_getChild(node, 0), sb, settings); } else { L3FormulaFormatter_visitOther(parent, node, sb, settings); } }
END_TEST START_TEST (test_L3FormulaFormatter_accessWithNULL) { // ensure we survive NULL arguments L3FormulaFormatter_format(NULL, NULL, NULL); L3FormulaFormatter_formatFunction(NULL, NULL, NULL); L3FormulaFormatter_formatOperator(NULL, NULL); L3FormulaFormatter_visit(NULL, NULL, NULL, NULL); L3FormulaFormatter_visitFunction(NULL, NULL, NULL, NULL); L3FormulaFormatter_visitLog10(NULL, NULL, NULL, NULL); L3FormulaFormatter_visitOther(NULL, NULL, NULL, NULL); L3FormulaFormatter_visitSqrt(NULL, NULL, NULL, NULL); L3FormulaFormatter_visitUMinus(NULL, NULL, NULL, NULL); fail_unless( L3FormulaFormatter_isFunction(NULL, NULL) == 0 ); fail_unless( L3FormulaFormatter_isGrouped(NULL, NULL, NULL) == 0 ); fail_unless( SBML_formulaToL3String(NULL) == NULL ); }