
#include "ccnx-name.h"

#define BOOST_TEST_MAIN 1

#include <boost/test/unit_test.hpp>

using namespace Ccnx;
using namespace std;
using namespace boost;

BOOST_AUTO_TEST_SUITE(CcnxNameTests)

BOOST_AUTO_TEST_CASE (CcnxNameTest)
{
  Name empty = Name();
  Name root = Name("/");
  BOOST_CHECK_EQUAL(empty, root);
  BOOST_CHECK_EQUAL(empty, "/");
  BOOST_CHECK_EQUAL(root.size(), 0);
  empty.appendComp("hello");
  empty.appendComp("world");
  BOOST_CHECK_EQUAL(empty.size(), 2);
  BOOST_CHECK_EQUAL(empty.toString(), "/hello/world");
  empty = empty + root;
  BOOST_CHECK_EQUAL(empty.toString(), "/hello/world");
  BOOST_CHECK_EQUAL(empty.getCompAsString(0), "hello");
  BOOST_CHECK_EQUAL(empty.getPartialName(1, 1), Name("/world"));
  Name name("/hello/world");
  BOOST_CHECK_EQUAL(empty, name);
  BOOST_CHECK_EQUAL(name, Name("/hello") + Name("/world"));


  name.appendComp (1);
  name.appendComp (255);
  name.appendComp (256);
  name.appendComp (1234567890);

  BOOST_CHECK_EQUAL (name.toString (), "/hello/world/%00%01/%00%ff/%00%00%01/%00%d2%02%96I");

  BOOST_CHECK_EQUAL (name.getCompAsInt (5), 1234567890);
  BOOST_CHECK_EQUAL (name.getCompAsInt (4), 256);
  BOOST_CHECK_EQUAL (name.getCompAsInt (3), 255);
  BOOST_CHECK_EQUAL (name.getCompAsInt (2), 1);
  
  // Charbuf related stuff will be checked in other place
}

BOOST_AUTO_TEST_SUITE_END()
