There are a number of weaknesses in your code:
-- this is not wrong, but it's silly, because it does nothing
<xsl:with-param name='test' select='.'/>
-- the context node is an implicit parameter to a named template, there's no need to make it an explicit parameter. Also, when supplying a node to a template, it's often better to make it a match template rather than a named template.
<xsl:param name='test' select='.'/>
-- why declare a parameter that you don't use?
-- square brackets are always used to qualify something, you need to say what you are qualifying.
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference