diff options
author | Michele Calgaro <[email protected]> | 2024-10-13 11:56:14 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2024-10-21 09:29:11 +0900 |
commit | 0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502 (patch) | |
tree | 10f9d3223f0a0904a0748a28ca44da52ee1092b7 /src/tests/checks.h | |
parent | 7d5ba3180a82a0827c1fbd6dc93a2abf4f882c37 (diff) | |
download | krecipes-0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502.tar.gz krecipes-0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502.zip |
Rearrange folders structure to remove unnecessary 'krecipes' second level subfolder
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'src/tests/checks.h')
-rw-r--r-- | src/tests/checks.h | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/src/tests/checks.h b/src/tests/checks.h new file mode 100644 index 0000000..e697814 --- /dev/null +++ b/src/tests/checks.h @@ -0,0 +1,181 @@ +/*************************************************************************** +* Copyright (C) 2005 by * +* Jason Kivlighn ([email protected]) * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +***************************************************************************/ + +#ifndef CHECKS_H +#define CHECKS_H + +#include <cmath> +#include <iostream> + +#include <tqstring.h> +#include <tqpixmap.h> +#include <tqimage.h> + +#include "datablocks/categorytree.h" +#include "datablocks/rating.h" + +using std::cout; +using std::cerr; +using std::endl; + +void check( const RatingList &rating, const RatingList &base ); + +bool check(const TQString &txt, const TQString &a, const TQString &b) +{ + if ( a != b ) { + cout << "ERROR: Tested " << txt.latin1() << ", expected" << endl; + cout << "'" << b.latin1() << "' (" << b.length() << " chars)" << endl; + cout << "but got" << endl; + cout << "'" << a.latin1() << "' (" << a.length() << " chars)" << endl; + exit( 1 ); + } + + return true; +} + +bool check(const TQString &txt, int a, int b) +{ + if ( a != b ) { + cout << "ERROR: Tested " << txt.latin1() << ", expected" << endl; + cout << "'" << b << "'" << endl; + cout << "but got" << endl; + cout << "'" << a << "'" << endl; + exit( 1 ); + } + + return true; +} + +bool check(const TQString &txt, double a, double b) +{ + if ( fabs(a - b) > 1e-10 ) { + cout << "ERROR: Tested " << txt.latin1() << ", expected" << endl; + cout << "'" << b << "'" << endl; + cout << "but got" << endl; + cout << "'" << a << "'" << endl; + exit( 1 ); + } + + return true; +} + +bool check(const TQString &txt, const TQPixmap &a, const TQPixmap &b) +{ + if ( a.size() != b.size() ) { + + cout << "ERROR: Tested " << txt.latin1() << ": photos differ" << endl; + // exit( 1 ); + } + + return true; +} + +void check( const IngredientData &ing, const IngredientData &base_ing, int ing_num ) +{ + check( TQString::number(ing_num)+": Ingredient name", ing.name, base_ing.name ); + check( TQString::number(ing_num)+": Ingredient amount", ing.amount,base_ing.amount ); + check( TQString::number(ing_num)+": Ingredient amount_offset", ing.amount_offset,base_ing.amount_offset ); + check( TQString::number(ing_num)+": Ingredient singular unit", ing.units.name, base_ing.units.name ); + check( TQString::number(ing_num)+": Ingredient plural unit", ing.units.plural, base_ing.units.plural ); + check( TQString::number(ing_num)+": Ingredient group", ing.group, base_ing.group ); + + ElementList::const_iterator prep_it = ing.prepMethodList.begin(); + ElementList::const_iterator base_prep_it = base_ing.prepMethodList.begin(); + for ( ; prep_it != ing.prepMethodList.end(); ++prep_it, ++base_prep_it ) { + check( TQString::number(ing_num)+": Ingredient prep_method", (*prep_it).name, (*base_prep_it).name ); + } +} + +void check( const Recipe &recipe, const Recipe &base ) +{ + check( "Recipe title", recipe.title, base.title ); + check( "Yield base", recipe.yield.amount, base.yield.amount ); + check( "Yield offset", recipe.yield.amount_offset, base.yield.amount_offset ); + check( "Yield type", recipe.yield.type, base.yield.type ); + check( "Instructions", recipe.instructions, base.instructions ); + check( "Photo", recipe.photo, base.photo ); + + check( recipe.ratingList, base.ratingList ); + + int cat_num = 1; + ElementList::const_iterator cat_it = recipe.categoryList.begin(); + ElementList::const_iterator base_cat_it = base.categoryList.begin(); + for ( ; cat_it != recipe.categoryList.end() || base_cat_it != base.categoryList.end(); ++cat_it, ++base_cat_it ) { + check( TQString::number(cat_num)+": Category", (*cat_it).name, (*base_cat_it).name ); + ++cat_num; + } + check( "category count", cat_num-1, base.categoryList.count() ); + + int author_num = 1; + ElementList::const_iterator author_it = recipe.authorList.begin(); + ElementList::const_iterator base_author_it = base.authorList.begin(); + for ( ; author_it != recipe.authorList.end() || base_author_it != base.authorList.end(); ++author_it, ++base_author_it ) { + check( TQString::number(author_num)+": Author", (*author_it).name, (*base_author_it).name ); + ++author_num; + } + check( "author count", author_num-1, base.authorList.count() ); + + int ing_num = 1; + IngredientList::const_iterator ing_it = recipe.ingList.begin(); + IngredientList::const_iterator base_ing_it = base.ingList.begin(); + for ( ; ing_it != recipe.ingList.end() || base_ing_it != base.ingList.end(); ++ing_it, ++base_ing_it ) { + check( *ing_it, *base_ing_it, ing_num ); + + TQValueList<IngredientData>::const_iterator base_sub_it = (*base_ing_it).substitutes.begin(); + for ( TQValueList<IngredientData>::const_iterator sub_it = (*ing_it).substitutes.begin(); sub_it != (*ing_it).substitutes.end(); ++sub_it, ++base_sub_it ) { + check( *sub_it, *base_sub_it, ing_num+1000 ); + } + + ++ing_num; + } + check( "ingredient count", ing_num-1, base.ingList.count() ); +} + +bool check( const CategoryTree *catStructure, const CategoryTree *baseCatStructure ) +{ + CategoryTree * it = catStructure->firstChild(); + CategoryTree * base_it = baseCatStructure->firstChild(); + for ( ; it && base_it; it = it->nextSibling(), base_it = base_it->nextSibling() ) { + check( it, base_it ); + + if ( it->category.name != base_it->category.name ) { + printf("FAILED: Category structure differs\n"); + exit(1); + } + } + + if ( base_it != it ) { //these should both be NULL + printf("FAILED: Category structure differs\n"); + exit(1); + } + + return true; +} + +void check( const RatingList &rating, const RatingList &base ) +{ + RatingList::const_iterator rating_it = rating.begin(); + RatingList::const_iterator base_rating_it = base.begin(); + for ( ; rating_it != rating.end() || base_rating_it != base.end(); ++rating_it, ++base_rating_it ) { + check("checking rater",(*rating_it).rater,(*base_rating_it).rater); + check("checking comment",(*rating_it).comment,(*base_rating_it).comment); + + RatingCriteriaList::const_iterator rc_it = (*rating_it).ratingCriteriaList.begin(); + RatingCriteriaList::const_iterator base_rc_it = (*base_rating_it).ratingCriteriaList.begin(); + for ( ; rc_it != (*rating_it).ratingCriteriaList.end() || base_rc_it != (*base_rating_it).ratingCriteriaList.end(); ++rc_it, ++base_rc_it ) { + check("checking criteria name",(*rc_it).name,(*base_rc_it).name); + check("checking stars",(*rc_it).stars,(*base_rc_it).stars); + } + check( "criteria count", int((*rating_it).ratingCriteriaList.count()), int((*base_rating_it).ratingCriteriaList.count()) ); + } + check( "rating count", int(rating.count()), int(base.count()) ); +} + +#endif |