summaryrefslogtreecommitdiffstats
path: root/src/tests/checks.h
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2024-10-13 11:56:14 +0900
committerMichele Calgaro <[email protected]>2024-10-21 09:29:11 +0900
commit0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502 (patch)
tree10f9d3223f0a0904a0748a28ca44da52ee1092b7 /src/tests/checks.h
parent7d5ba3180a82a0827c1fbd6dc93a2abf4f882c37 (diff)
downloadkrecipes-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.h181
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