END_TEST START_TEST (test_element_selector) { const char* s = wrapMathML ( " <apply>" " <selector/>" " <ci> A </ci>" " <ci> i </ci>" " </apply>" ); N = readMathMLFromStringWithNamespaces(s, NS); fail_unless( N != NULL ); fail_unless( N->getType() == AST_ORIGINATES_IN_PACKAGE); fail_unless( N->getExtendedType() == AST_LINEAR_ALGEBRA_SELECTOR); fail_unless( N->getNumChildren() == 2); fail_unless( N->getPackageName() == "arrays"); ASTNode * child = N->getChild(0); fail_unless( child != NULL ); fail_unless( child->getType() == AST_NAME); fail_unless( child->getExtendedType() == AST_NAME); fail_unless( strcmp(child->getName(), "A") == 0); fail_unless( child->getNumChildren() == 0); fail_unless( child->getPackageName() == "core"); child = N->getChild(1); fail_unless( child != NULL ); fail_unless( child->getType() == AST_NAME); fail_unless( child->getExtendedType() == AST_NAME); fail_unless( strcmp(child->getName(), "i") == 0); fail_unless( child->getNumChildren() == 0); ArraysASTPlugin* plugin = static_cast<ArraysASTPlugin*>(N->getPlugin("arrays")); fail_unless(plugin != NULL); fail_unless(plugin->getASTType() == AST_LINEAR_ALGEBRA_SELECTOR); }
CK_CPPSTART START_TEST (test_element_vector) { const char* s = wrapMathML ( "<vector>" " <apply>" " <cos/>" " <cn type=\"integer\"> 5 </cn>" " </apply>" " <ci> y </ci>" "</vector>\n" ); N = readMathMLFromStringWithNamespaces(s, NS); fail_unless( N != NULL ); fail_unless( N->getType() == AST_ORIGINATES_IN_PACKAGE); fail_unless( N->getExtendedType() == AST_LINEAR_ALGEBRA_VECTOR_CONSTRUCTOR); fail_unless( N->getNumChildren() == 2); fail_unless( N->getPackageName() == "arrays"); ASTNode * child = N->getChild(0); fail_unless( child != NULL ); fail_unless( child->getType() == AST_FUNCTION_COS); fail_unless( child->getExtendedType() == AST_FUNCTION_COS); fail_unless( child->getNumChildren() == 1); fail_unless( child->getPackageName() == "core"); ASTNode *c1 = child->getChild(0); fail_unless( c1 != NULL ); fail_unless( c1->getType() == AST_INTEGER); fail_unless( c1->getExtendedType() == AST_INTEGER); fail_unless( c1->getNumChildren() == 0); fail_unless( c1->getInteger() == 5); child = N->getChild(1); fail_unless( child != NULL ); fail_unless( child->getType() == AST_NAME); fail_unless( child->getExtendedType() == AST_NAME); fail_unless( strcmp(child->getName(), "y") == 0); fail_unless( child->getNumChildren() == 0); ArraysASTPlugin* plugin = static_cast<ArraysASTPlugin*>(N->getPlugin("arrays")); fail_unless(plugin != NULL); fail_unless(plugin->getASTType() == AST_LINEAR_ALGEBRA_VECTOR_CONSTRUCTOR); plugin = static_cast<ArraysASTPlugin*>(child->getPlugin("arrays")); fail_unless(plugin != NULL); fail_unless(plugin->getASTType() == AST_ARRAYS_UNKNOWN); }
END_TEST START_TEST (test_element_matrix) { const char* s = wrapMathML ( "<matrix>" "<matrixrow>" "<apply>" "<cos/>" "<cn type=\"integer\"> 5 </cn>" "</apply>" "<ci> y </ci>" "</matrixrow>" "<matrixrow>" "<cn type=\"integer\"> 2 </cn>" "<apply>" "<cos/>" "<cn type=\"integer\"> 5 </cn>" "</apply>" "</matrixrow>" "</matrix>\n" ); N = readMathMLFromStringWithNamespaces(s, NS); fail_unless( N != NULL ); fail_unless( N->getType() == AST_ORIGINATES_IN_PACKAGE); fail_unless( N->getExtendedType() == AST_LINEAR_ALGEBRA_MATRIX_CONSTRUCTOR); fail_unless( N->getNumChildren() == 2); fail_unless( N->getPackageName() == "arrays"); ASTNode * child = N->getChild(0); fail_unless( child != NULL ); fail_unless( child->getType() == AST_ORIGINATES_IN_PACKAGE); fail_unless( child->getExtendedType() == AST_LINEAR_ALGEBRA_MATRIXROW_CONSTRUCTOR); fail_unless( child->getNumChildren() == 2); fail_unless( child->getPackageName() == "arrays"); ASTNode *c1 = child->getChild(0); fail_unless( c1 != NULL ); fail_unless( c1->getType() == AST_FUNCTION_COS); fail_unless( c1->getExtendedType() == AST_FUNCTION_COS); fail_unless( c1->getNumChildren() == 1); fail_unless( c1->getPackageName() == "core"); child = N->getChild(1); fail_unless( child != NULL ); fail_unless( child->getType() == AST_ORIGINATES_IN_PACKAGE); fail_unless( child->getExtendedType() == AST_LINEAR_ALGEBRA_MATRIXROW_CONSTRUCTOR); fail_unless( child->getNumChildren() == 2); fail_unless( child->getPackageName() == "arrays"); c1 = child->getChild(0); fail_unless( c1 != NULL ); fail_unless( c1->getType() == AST_INTEGER); fail_unless( c1->getExtendedType() == AST_INTEGER); fail_unless( c1->getNumChildren() == 0); fail_unless( c1->getInteger() == 2); ArraysASTPlugin* plugin = static_cast<ArraysASTPlugin*>(N->getPlugin("arrays")); fail_unless(plugin != NULL); fail_unless(plugin->getASTType() == AST_LINEAR_ALGEBRA_MATRIX_CONSTRUCTOR); }