Skip to content

interclass constraints not working #11

@ElectronicBatman

Description

@ElectronicBatman

I have two classes with simple public members, when I provide constraints which define dependency between classes, I dont see any randomization
e.g.

#include <crave/ConstrainedRandom.hpp>
#include <crave/experimental/Experimental.hpp>
#include <boost/format.hpp>
#include <iostream>

using namespace crave;
class class_a : public crv_sequence_item {
 public:
 crv_variable<unsigned int> num;
 
  crv_constraint legal_num_class_C{ num() < 10 };

 class_a(crave::crv_object_name name = "class_a") {
    
 }
 void print(){
   std::cout<<" CLASS A num "<<num<<"\n";

 }
};

class class_b : public crv_sequence_item {
 public:
 crv_variable<unsigned int> powr;

 class_b(crave::crv_object_name name = "class_b") {
   
 }
 void print(){
   std::cout<<" CLASS B POW "<<powr<<"\n";

 }
};


int main(int argc, char* argv[]) {
  crave::init("crave.cfg");
  crave::set_global_seed(123456789);

  class_a a("a");
  class_b b("b");

  crv_constraint legal_pow_class_{ b.powr() == (1<<a.num()) };

  CHECK(a.randomize());
  CHECK(b.randomize());
  a.print();
  b.print();
}

I get values of num and powr as zero when printed
CLASS A num 0
CLASS B POW 0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions