diff --git a/tests/test_xpath_variables.cpp b/tests/test_xpath_variables.cpp
index 3d2147c..adc4464 100644
--- a/tests/test_xpath_variables.cpp
+++ b/tests/test_xpath_variables.cpp
@@ -642,4 +642,30 @@ TEST_XML(xpath_variables_evaluate_node_set_out_of_memory, "")
CHECK_ALLOC_FAIL(q.evaluate_node_set(xml_node()).empty());
}
+
+TEST_XML(xpath_variables_type_conversion, "15")
+{
+ xpath_variable_set set;
+
+ set.set(STR("a"), true);
+ set.set(STR("b"), 42.0);
+ set.set(STR("c"), STR("test"));
+ set.set(STR("d"), doc.select_nodes(STR("node")));
+
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("boolean($a) = true()"), &set, true);
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("number($a) = 1"), &set, true);
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("string($a) = 'true'"), &set, true);
+
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("boolean($b) = true()"), &set, true);
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("number($b) = 42"), &set, true);
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("string($b) = '42'"), &set, true);
+
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("boolean($c) = true()"), &set, true);
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("number($c) = 0"), &set, false);
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("string($c) = 'test'"), &set, true);
+
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("boolean($d) = true()"), &set, true);
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("number($d) = 15"), &set, true);
+ CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("string($d) = '15'"), &set, true);
+}
#endif