int main()
{
   conversion_test();
   to_view_test();
   equal_test();
   unequal_test();
   less_test();
   greater_test();
   less_equal_test();
   greater_equal_test();
   constructor_test();
   assignment_test();
   assign_test();
   plus_equal_test();
   append_test();
   insert_test();
   replace_test();
   find_test();
   rfind_test();
   find_first_of_test();
   find_last_of_test();
   find_first_not_of_test();
   find_last_not_of_test();
   compare_test();

   return boost::report_errors();
}
int main(int argc, char **argv)
{
    int failure_count = 0;
    int pass_count = 0;
    std::string test_serial_device("/dev/ttyUSB0");

    if(argc >= 2)
    {
        test_serial_device = argv[1];
    }


    if(constructor_test(test_serial_device))
    {
        std::cout << "\n\n *** PASSED constructor test\n";
        pass_count++;
    }
    else
    {
        std::cout << "\n\n*** FAILED constructor test ***\n";
        failure_count++;
    }

    std::cout << "pass count:    " << pass_count << std::endl;
    std::cout << "failure count: " << failure_count << std::endl;


    if(pass_count == 1 && failure_count == 0)
    {
        std::cout << "\n\nAll Tests Passed\n";
    }

    /** Display date and time program completes */
    /** reference: http://en.cppreference.com/w/cpp/chrono */
    std::chrono::time_point<std::chrono::system_clock> end;
    end = std::chrono::system_clock::now();
    std::time_t end_time = std::chrono::system_clock::to_time_t(end);
    std::cout << "finished computation at " << std::ctime(&end_time) << std::endl;

    return 0;
}