void test_case(const std::string& filename) { boost::program_options::variables_map vm; std::ifstream test_cases(filename); std::string line; while (std::getline(test_cases, line)) { // Ignore empty lines and comments if (line.size() < 4 || line.substr(0, 3) != "// ") { continue; } std::string statement = line.substr(3, std::string::npos); if (!std::getline(test_cases, line)) { std::cerr << "Unexpected end of test cases." << std::endl; exit(-1); } std::istringstream ss{line}; ss.ignore(std::numeric_limits<std::streamsize>::max(), ' '); std::vector<int> matches; int match_line; while (ss >> match_line) { matches.push_back(match_line); } std::cout << "Testing: " << statement << std::endl; auto term = parse_search_string(statement, vm); auto found = find_matches(filename, term, vm); assert(found.size() == matches.size()); for (std::size_t s = 0; s < found.size(); ++s) { assert(found[s].first.first == matches[s]); } std::cout << " Passed" << std::endl; } }
int calc_piechart(char * account, char * search_string, int month_number, int year, char field_separator, char * currency, int spending, char ** fieldname, double * value, double * total_value, int max_fields, int include_zeros) { double total_receive=0, total_spend=0; int start_index = 0,i,j; char search[STRING_BLOCK]; char name[STRING_BLOCK]; int field_ctr=0; /* perform multiple searches */ *total_value = 0; while (start_index < strlen(search_string)) { start_index = parse_search_string(search_string, ',', '|', start_index, search, name); get_totals(account, search, month_number, year, currency, &total_receive, &total_spend); /* set the value */ if (spending!=0) { value[field_ctr] = total_spend; } else { value[field_ctr] = total_receive; } *total_value += value[field_ctr]; /* set the field name */ fieldname[field_ctr] = (char*)malloc(STRING_BLOCK); fieldname[field_ctr][0]=0; if (name[0] != 0) { for (i = 0; i < strlen(name); i++) { fieldname[field_ctr][i] = name[i]; } fieldname[field_ctr][i] = 0; } else { j = 0; for (i = 0; i < strlen(search); i++) { if ((search[i] != '*') && (search[i] != '%')) { fieldname[field_ctr][j++] = search[i]; } } fieldname[field_ctr][j] = 0; } if (fieldname[field_ctr][0] != 0) { fieldname[field_ctr][0] = toupper(fieldname[field_ctr][0]); } if ((include_zeros != 0) || ((include_zeros == 0) && (value[field_ctr] > 0))) { field_ctr++; if (field_ctr >= max_fields) break; } } return field_ctr; }