void Chapter2Test::Test2_5() {
  ofstream fout;
  OpenLogFile(fout,"test2_5.html","Problem 2.5: add two lists with digits and return a new list.");

  ListNode *l1(nullptr),*l2(nullptr);
  ListNode *output(nullptr), *expected_1(nullptr), *expected_2(nullptr);
  stringstream ss;

  ListNode::GenerateListNode({}, 0, l1);
  ListNode::GenerateListNode({}, 0, l2);
  ListNode::GenerateListNode({}, 0, expected_1);
  ListNode::GenerateListNode({}, 0, expected_2);
  ListNode::PrintListNode(l1, ss); ss<<" + ";
  ListNode::PrintListNode(l2, ss);
  output = sol.prob2_5_1(l1,l2);
  TestLinkedList(fout, ss.str(), output, expected_1);
  output = sol.prob2_5_2(l1, l2);
  TestLinkedList(fout, ss.str(), output, expected_2);

  ss.str("");
  int A0[] = {1,2,3}, B0[] = {1,2,3}, C0[] = {2,4,6}, D0[] = {2,4,6};
  ListNode::GenerateListNode(A0, sizeof(A0)/sizeof(A0[0]), l1);
  ListNode::GenerateListNode(B0, sizeof(B0)/sizeof(B0[0]), l2);
  ListNode::GenerateListNode(C0, sizeof(C0)/sizeof(C0[0]), expected_1);
  ListNode::GenerateListNode(D0, sizeof(D0)/sizeof(D0[0]), expected_2);
  ListNode::PrintListNode(l1, ss); ss<<" + ";
  ListNode::PrintListNode(l2, ss);
  output = sol.prob2_5_1(l1,l2);
  TestLinkedList(fout, ss.str(), output, expected_1);
  output = sol.prob2_5_2(l1, l2);
  TestLinkedList(fout, ss.str(), output, expected_2);

  ss.str("");
  int A1[] = {9,9,9}, B1[] = {9,8}, C1[] = {8,8,0,1}, D1[] = {1,0,9,7};
  ListNode::GenerateListNode(A1, sizeof(A1)/sizeof(A1[0]), l1);
  ListNode::GenerateListNode(B1, sizeof(B1)/sizeof(B1[0]), l2);
  ListNode::GenerateListNode(C1, sizeof(C1)/sizeof(C1[0]), expected_1);
  ListNode::GenerateListNode(D1, sizeof(D1)/sizeof(D1[0]), expected_2);
  ListNode::PrintListNode(l1, ss); ss<<" + ";
  ListNode::PrintListNode(l2, ss);
  output = sol.prob2_5_1(l1,l2);
  TestLinkedList(fout, ss.str(), output, expected_1);
  output = sol.prob2_5_2(l1, l2);
  TestLinkedList(fout, ss.str(), output, expected_2);

  CloseLogFile(fout);
}
 void basic_test()
 {
   fr::coordinates::lat_long ll(1,2,3);
   cppxml::kml_coordinates::pointer testval = std::make_shared<cppxml::kml_coordinates>(0);
   testval->add(ll);
   std::string returned = testval->to_xml()->to_string();
   std::string expected("<coordinates>\n2,1,3\n</coordinates>\n");
   CPPUNIT_ASSERT(expected == returned);
   // ECEF coordinates for Denver
   fr::coordinates::ecef ef(-1260484.206487,4747249.668167,4057711.884932);
   testval->add(ef);
   std::string expected_2("<coordinates>\n2,1,3\n104.87,39.75,1609.34\n</coordinates>\n");
   returned = testval->to_xml()->to_string();
   CPPUNIT_ASSERT(expected_2 == returned);
   testval->clear();
   returned = testval->to_xml()->to_string();
   CPPUNIT_ASSERT("<coordinates/>\n" == returned);
 }