// TestXml.cpp : Test XML encoding and decoding.
// The characters <>&'" are illegal in xml and must be encoded.


#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers

#include <iostream>
// If you are using MSVC++6, you should update <string> to fix
// BUG: getline Template Function Reads Extra Character
#include <string>
#include <assert.h>
#include <stdlib.h>

#include "XmlRpcUtil.h"

using namespace XmlRpc;


int main(int argc, char* argv[])
{
  // Basic tests
  std::string empty;
  assert(empty == XmlRpcUtil::xmlEncode(empty));
  assert(empty == XmlRpcUtil::xmlDecode(empty));
  assert(empty == XmlRpcUtil::xmlEncode(""));
  assert(empty == XmlRpcUtil::xmlDecode(""));

  std::string raw("<>&'\"");
  assert(XmlRpcUtil::xmlDecode(XmlRpcUtil::xmlEncode(raw)) == raw);
  
  std::cout << "Basic tests passed.\n";

  // Interactive tests
  std::string s;
  for (;;) {
    std::cout << "\nEnter line of raw text to encode:\n";
    std::getline(std::cin, s);
    if (s.empty()) break;

    std::cout << XmlRpcUtil::xmlEncode(s) << std::endl;
  }

  for (;;) {
    std::cout << "\nEnter line of xml-encoded text to decode:\n";
    std::getline(std::cin, s);
    if (s.empty()) break;

    std::cout << XmlRpcUtil::xmlDecode(s) << std::endl;
  }

  return 0;
}

