static char* test_edge_case() { mu_assert(salary(-1) == my_salary(-1)); mu_assert(salary(0) == my_salary(0)); mu_assert(salary(41) == my_salary(41)); return 0; }
static char* test_salary() { mu_assert(salary(1) == 400); mu_assert(salary(2) == 415); mu_assert(salary(3) == 430); mu_assert(salary(10) == my_salary(10)); mu_assert(salary(15) == my_salary(15)); mu_assert(salary(39) == my_salary(39)); return 0; }
void test_collection (void) { std::cerr << "************* COLLECTION: Testing container collections*************\n"; knowledge::KnowledgeBase knowledge; knowledge::ThreadSafeContext & context (knowledge.get_context ()); unsigned char buffer1[1024]; unsigned char buffer2[2048]; std::cerr << " Creating containers...\n"; containers::Integer age ("age", knowledge); containers::String name ("name", knowledge); containers::Double salary ("salary", knowledge); containers::NativeDoubleVector gps_location ("location.gps", knowledge, 3); containers::NativeIntegerVector years_employed ("employment.years", knowledge); containers::Map jobs ("jobs", knowledge); containers::BufferVector images ("images", knowledge); containers::StringVector movies ("movies.favorite", knowledge); containers::IntegerVector years ("years.favorite", knowledge); containers::IntegerVector sensors_ready ("sensors_ready", knowledge, 3); containers::DoubleVector coolfactor ("coolfactor.by.year", knowledge, 35); std::cerr << " Testing modifieds.size == 2 after container creation... "; if (context.get_modifieds ().size () != 2) { std::cerr << "FAIL\n"; std::cerr << " Printing modified elements in context\n\n"; std::cerr << context.debug_modifieds () << "\n"; } else { std::cerr << "SUCCESS\n"; } std::cerr << " Assigning values to containers...\n"; age = 40; name = "Jack Franklin"; salary = 45000.0; gps_location.set (2, 1000.0); gps_location.set (0, 72.0); gps_location.set (1, 40.0); years_employed.set (0, 1998); years_employed.push_back (1999); years_employed.push_back (2005); years_employed.push_back (2007); years_employed.push_back (2010); years_employed.push_back (2011); years_employed.push_back (2012); years_employed.push_back (2013); years_employed.push_back (2014); years_employed.push_back (2015); jobs.set ("Albert's", "Courtesy Clerk"); jobs.set ("Nursery House", "Plant Care Technician"); jobs.set ("Johnson's", "Landscaping Expert"); images.push_back (buffer1, sizeof (buffer1)); images.push_back (buffer2, sizeof (buffer2)); movies.push_back ("Edge of Tomorrow"); movies.push_back ("Fight Club"); movies.push_back ("Seven"); movies.push_back ("Serenity"); years.push_back (2000); years.push_back (2012); coolfactor.set (0, 10.0); coolfactor.set (1, 12.0); coolfactor.set (2, 10.5); coolfactor.set (3, 9); coolfactor.set (4, 8); coolfactor.set (5, 8.5); coolfactor.set (6, 8.5); coolfactor.set (7, 8.5); coolfactor.set (8, 8); coolfactor.set (9, 9); coolfactor.set (10, 10); coolfactor.set (11, 10); coolfactor.set (12, 11); coolfactor.set (13, 11); coolfactor.set (14, 6); coolfactor.set (15, 7); coolfactor.set (16, 20); coolfactor.set (17, 30); coolfactor.set (18, 35); coolfactor.set (19, 25); coolfactor.set (20, 20); coolfactor.set (21, 35); coolfactor.set (22, 30); coolfactor.set (23, 22); coolfactor.set (24, 18); coolfactor.set (25, 14); coolfactor.set (26, 11); coolfactor.set (27, 10); coolfactor.set (28, 9); coolfactor.set (29, 9); coolfactor.set (30, 5); coolfactor.set (31, 5); coolfactor.set (32, 4); coolfactor.set (33, 3); coolfactor.set (34, 3); sensors_ready.set (0, 1); sensors_ready.set (2, 1); containers::Collection collection; std::cerr << "\n Adding 10 containers to collection container\n"; collection.add (age); collection.add (name); collection.add (salary); collection.add (gps_location); collection.add (years_employed); collection.add (jobs); collection.add (images); collection.add (movies); collection.add (years); collection.add (coolfactor); std::cerr << " Testing collection.size == 10 after adding containers... "; if (collection.size () != 10) { std::cerr << "FAIL. Size returned " << collection.size () << "\n"; } else { std::cerr << "SUCCESS\n"; } std::cerr << "\n Printing Collection contents\n\n"; std::cerr << collection.get_debug_info () << "\n"; std::cerr << " Printing modified elements in context\n\n"; std::cerr << context.debug_modifieds () << "\n"; std::cerr << " Clearing modified elements in context\n\n"; knowledge.clear_modifieds (); std::cerr << " Testing modifieds.size == 0 after clearing modified... "; if (context.get_modifieds ().size () != 0) { std::cerr << "FAIL\n"; std::cerr << " Printing modified elements in context\n\n"; std::cerr << context.debug_modifieds () << "\n"; } else { std::cerr << "SUCCESS\n"; } std::cerr << " Calling modify on collection\n"; collection.modify (); std::cerr << " Testing modifieds.size == 55 after modifying containers... "; if (context.get_modifieds ().size () != 55) { std::cerr << "FAIL\n"; } else { std::cerr << "SUCCESS\n"; } std::cerr << " Printing modified elements in context\n\n"; std::cerr << context.debug_modifieds () << "\n"; std::cerr << " Clearing modified elements in context\n\n"; knowledge.clear_modifieds (); std::cerr << " Clearing collection\n\n"; collection.clear (); std::cerr << " Testing collection.size == 0 after clearing containers... "; if (collection.size () != 0) { std::cerr << "FAIL. Size returned " << collection.size () << "\n"; } else { std::cerr << "SUCCESS\n"; } std::cerr << "\nAdding 3 containers to collection container\n"; collection.add (age); collection.add (name); collection.add (salary); std::cerr << " Testing collection.size == 3 after adding containers... "; if (collection.size () != 3) { std::cerr << "FAIL. Size returned " << collection.size () << "\n"; } else { std::cerr << "SUCCESS\n"; } std::cerr << "\nPrinting Collection contents\n\n"; std::cerr << collection.get_debug_info () << "\n"; std::cerr << " Calling modify on collection\n"; collection.modify (); std::cerr << " Testing modifieds.size == 3... "; if (context.get_modifieds ().size () != 3) { std::cerr << "FAIL\n"; } else { std::cerr << "SUCCESS\n"; } std::cerr << " Printing modified elements in context\n\n"; std::cerr << context.debug_modifieds () << "\n"; std::cerr << " Clearing modified elements in context\n\n"; knowledge.clear_modifieds (); std::cerr << " Calling modify_if_true on collection\n"; collection.modify_if_true (sensors_ready); std::cerr << " Testing modifieds.size == 0... "; if (context.get_modifieds ().size () != 0) { std::cerr << "FAIL\n"; } else { std::cerr << "SUCCESS\n"; } std::cerr << " Updating final sensors ready to true\n"; sensors_ready.set (1, 1); std::cerr << " Calling modify_if_true on collection\n"; collection.modify_if_true (sensors_ready); std::cerr << " Testing modifieds.size == 4... "; if (context.get_modifieds ().size () != 4) { std::cerr << "FAIL\n"; std::cerr << " Printing modified elements in context\n\n"; std::cerr << context.debug_modifieds () << "\n"; } else { std::cerr << "SUCCESS\n"; } }