/**
  * 
  * 
  * @param string $method
  * @param array $parameters
  * @param null $identifier
  * @return type
  */
 public function encodeRequest($method, array $parameters, $identifier = null)
 {
     $dom = $this->buildDocument();
     $callElement = $dom->createElement("methodCall");
     $methodNameElement = $dom->createElement("methodName");
     $methodNameElement->appendChild(new DOMText($method));
     $paramsElement = $dom->createElement("params");
     foreach ($parameters as $param) {
         $rpcParameter = $this->parameterFactory->fromValue($param);
         $importedParamNode = $dom->importNode($this->parameterSerializer->getDomElementFromParameter($rpcParameter), true);
         $paramElement = $dom->createElement("param");
         $paramElement->appendChild($importedParamNode);
         $paramsElement->appendChild($paramElement);
     }
     $callElement->appendChild($methodNameElement);
     $callElement->appendChild($paramsElement);
     $dom->appendChild($callElement);
     return $dom->saveXML();
 }
 /**
  * @test
  */
 public function testGetDomElementFromParameterHandlesStruct()
 {
     $domDocument = new DOMDocument();
     $arrayValues = array("one" => 1, "two" => 2.0, "three" => "three", "four" => false, "five" => 5.123466, "SIX" => true);
     $structParameter = new XmlRpcParameter($arrayValues, XmlRpcParameter::TYPE_STRUCT);
     $parameterFactoryReal = new XmlRpcParameterFactory();
     $parameterFactoryMock = $this->buildXmlRpcParameterFactoryMock();
     $parameterFactoryMock->expects($this->exactly(count($arrayValues)))->method("fromValue")->will($this->returnCallback(function ($value) use($parameterFactoryReal) {
         return $parameterFactoryReal->fromValue($value);
     }));
     $serializer = new XmlRpcParameterSerializer($parameterFactoryMock, $domDocument);
     $structElement = $serializer->getDomElementFromParameter($structParameter);
     $comparitiveDomDocument = new DOMDocument();
     $comparitiveDomDocument->loadXML("<struct>" . "<member><name>one</name><value><int>1</int></value></member>" . "<member><name>two</name><value><int>2</int></value></member>" . "<member><name>three</name><value><string>three</string></value></member>" . "<member><name>four</name><value><boolean>false</boolean></value></member>" . "<member><name>five</name><value><double>5.123466</double></value></member>" . "<member><name>SIX</name><value><boolean>true</boolean></value></member>" . "</struct>");
     $this->assertEqualXMLStructure($comparitiveDomDocument->documentElement, $structElement);
 }