8 #include <catch2/catch_test_macros.hpp> 
   18 using namespace nmodl;
 
   19 using namespace visitor;
 
   20 using namespace test_utils;
 
   30     std::map<std::string, std::string> rval;
 
   34     SymtabVisitor().visit_program(*ast);
 
   35     PerfVisitor().visit_program(*ast);
 
   36     LocalToAssignedVisitor().visit_program(*ast);
 
   37     SymtabVisitor().visit_program(*ast);
 
   41 SCENARIO(
"LOCAL to ASSIGNED variable transformer", 
"[visitor][localtoassigned]") {
 
   42     GIVEN(
"mod file with LOCAL variables that are written") {
 
   43         std::string input_nmodl = R
"( 
   60         auto symtab = ast->get_symbol_table();
 
   62         THEN(
"LOCAL variables that are written are turned to ASSIGNED") {
 
   64             auto vars = symtab->get_variables_with_properties(NmodlType::assigned_definition);
 
   65             REQUIRE(vars.size() == 2);
 
   68             auto x = symtab->lookup(
"x");
 
   69             REQUIRE(x != 
nullptr);
 
   70             REQUIRE(x->has_any_property(NmodlType::assigned_definition) == 
true);
 
   71             REQUIRE(x->has_any_property(NmodlType::local_var) == 
false);
 
   73             auto z = symtab->lookup(
"z");
 
   74             REQUIRE(z != 
nullptr);
 
   75             REQUIRE(z->has_any_property(NmodlType::assigned_definition) == 
true);
 
   76             REQUIRE(z->has_any_property(NmodlType::local_var) == 
false);
 
   79         THEN(
"LOCAL variables that are read only remain LOCAL") {
 
   80             auto vars = symtab->get_variables_with_properties(NmodlType::local_var);
 
   81             REQUIRE(vars.size() == 1);