#include "src/Trie.hxx"
#include "src/Exception.h"

int main(int argc, char **argv)
{
  /// trie that associates a integer to strings
  /// 0 is the default value I want to receive when there is no match
  /// in trie
  ToolBox::Trie<unsigned>	trie(0);

  std::cout << "set [First String] = 1" << std::endl;
  trie.addEntry("First String", 12, 1);
  std::cout << "set [Second String] = 2" << std::endl;
  trie.addEntry("Second String", 13, 2);
  std::cout << "set [First Element] = 3" << std::endl;
  trie.addEntry("First Element", 13, 3);
  std::cout << "set [Second Element] = 4" << std::endl;
  trie.addEntry("Second Element", 14, 4);

  std::cout << "get [First String] = " << trie.getEntry("First String", 12) << std::endl;
  std::cout << "get [Second String] = " << trie.getEntry("Second String", 13) << std::endl;
  std::cout << "get [First Element] = " << trie.getEntry("First Element", 13) << std::endl;
  std::cout << "get [Second Element] = " << trie.getEntry("Second Element", 14) << std::endl;

  std::cout << "set [First String] = 10" << std::endl;
  trie.setEntry("First String", 12, 10);
  std::cout << "get [First String] = " << trie.getEntry("First String", 12) << std::endl;

  // no match
  std::cout << "get [No match for this entry] = " << trie.getEntry("No match for this entry", 23) << std::endl;
}
