#include <iostream>
#include "../JString.h"

int main(int argc, char **argv) {

   // coreutils::JString test1;
   // std::cout << "empty jstring: [" << test1 << "]." << std::endl;
   // test1.set("key1", "data1");
   // std::cout << "add key1 jstring: [" << test1 << "]." << std::endl;
   // test1.set("key2", "data2");
   // std::cout << "add key2 jstring: [" << test1 << "]." << std::endl;
   // test1.set("key3", "data3");
   // std::cout << test1["key1"] << test1["key2"] << test1["key3"] << std::endl;
   // std::cout << test1 << std::endl;
   // test1.set("key2", "data5");
   // test1.set("key4", "data4");
   // std::cout << test1 << std::endl;

   coreutils::JString test2("{\"key1\":[{\"id\":\"1\",\"name\":\"Brad\"},{\"id\":\"2\",\"name\":\"Jenn\"},{\"id\":\"3\",\"name\":\"Skye\"}],\"key2\":\"data5\",\"key3\":\"data3\",\"key4\":\"data4\"}");
   std::cout << test2 << std::endl;
   std::cout << "--------" << std::endl;
   // std::cout << test2["key2"] << std::endl;
   // std::cout << test2["key1"] << std::endl;
   // std::cout << "value: " << test2["key1.name[id=2]"] << std::endl;
   // std::cout << "value: " << test2["key1.name[id=3]"] << std::endl;

   test2["key2"] = "newvalue1";
   std::cout << "--------" << std::endl;
   // test2 = "newvalue";
   std::cout << test2 << std::endl;
   std::cout << "--------" << std::endl;
   std::cout << "key2: " << test2["key2"] << std::endl;

   return 0;
}

