Files
whetstone_DSL/editor/tests/step1849_test.cpp

26 lines
2.4 KiB
C++

#include "RequirementsParser.h"
#include <iostream>
static int p=0,f=0;
#define T(n) { std::cout<<" "<<#n<<"... "; }
#define P() { std::cout<<"PASS\n"; ++p; }
#define F(m) { std::cout<<"FAIL: "<<m<<"\n"; ++f; }
#define C(c,m) if(!(c)){F(m);return;}
void t1(){T(empty_markdown);auto r=RequirementsParser::parse("");C(r.empty(),"e");P();}
void t2(){T(single_bullet_requirements);auto r=RequirementsParser::parse("## Requirements\n- Do the thing\n");C(r.size()==1,"s");P();}
void t3(){T(multiple_bullets);auto r=RequirementsParser::parse("## Requirements\n- A\n- B\n");C(r.size()==2,"s");P();}
void t4(){T(ignore_constraints_section);auto r=RequirementsParser::parse("## Constraints\n- A\n");C(r.empty(),"e");P();}
void t5(){T(anchorize_lower_hyphen);auto a=RequirementsParser::anchorize("API Surface");C(a=="api-surface","a");P();}
void t6(){T(heading_requirements_true);C(RequirementsParser::isRequirementHeading("requirements"),"h");P();}
void t7(){T(heading_features_true);C(RequirementsParser::isRequirementHeading("features"),"h");P();}
void t8(){T(heading_constraints_false);C(!RequirementsParser::isRequirementHeading("constraints"),"h");P();}
void t9(){T(heading_goal_false);C(!RequirementsParser::isRequirementHeading("goal"),"h");P();}
void t10(){T(field_list_splits);auto r=RequirementsParser::parse("## Requirements\n- WorkItem has: job_id (string), priority (int)\n");C(r.size()==2,"s");C(r[0].isField&&r[1].isField,"f");P();}
void t11(){T(field_name_type_extract);auto r=RequirementsParser::parse("## Requirements\n- WorkItem has: job_id (string), priority (int)\n");C(r[0].fieldName=="job_id","n");C(r[0].fieldType=="string","t");P();}
void t12(){T(source_line_and_section_title);auto r=RequirementsParser::parse("# T\n## Requirements\n- Item\n");C(r.size()==1,"s");C(r[0].sourceLine==3,"l");C(r[0].sectionTitle=="Requirements","t");P();}
void t13(){T(work_item_subheadings_preserved_inside_requirement_section);auto r=RequirementsParser::parse("## Work Items\n### W1. Introduce Composition Types\n- Goal:\n- add a dedicated composition layer\n");C(r.size()>=3,"s");C(r[0].sectionTitle=="Work Items","t");C(r[0].sourceText=="W1. Introduce Composition Types","h");C(r[1].sourceText.find("W1. Introduce Composition Types:")!=std::string::npos,"ctx");P();}
int main(){std::cout<<"Step 1849: RequirementsParser\n";t1();t2();t3();t4();t5();t6();t7();t8();t9();t10();t11();t12();t13();std::cout<<"\nResults: "<<p<<"/"<<(p+f)<<" passed\n";return f?1:0;}