1#ifndef ROSE_BinaryAnalysis_Concolic_TestCase_H 
    2#define ROSE_BinaryAnalysis_Concolic_TestCase_H 
    3#include <featureTests.h> 
    4#ifdef ROSE_ENABLE_CONCOLIC_TESTING 
    5#include <Rose/BinaryAnalysis/Concolic/BasicTypes.h> 
    7#include <Rose/BinaryAnalysis/SymbolicExpression.h> 
    9#include <Sawyer/Optional.h> 
   10#include <Sawyer/SharedObject.h> 
   11#include <Sawyer/SharedPointer.h> 
   17namespace BinaryAnalysis {
 
   21typedef std::pair<std::string , std::string > EnvValue;
 
   32    mutable SAWYER_THREAD_TRAITS::Mutex mutex_;         
 
   34    std::string timestamp_;                             
 
   35    std::string executor_;                              
 
   36    SpecimenPtr specimen_;                              
 
   37    std::vector<std::string> args_;                     
 
   38    std::vector<EnvValue> env_;                         
 
   41    bool concreteIsInteresting_;                        
 
   43    std::vector<SymbolicExpression::Ptr> assertions_;   
 
   52    static Ptr instance() {
 
   53        return Ptr(
new TestCase);
 
   57    static Ptr instance(
const SpecimenPtr &specimen);
 
   64    TestCaseId parent() 
const;
 
   65    void parent(TestCaseId);
 
   76    std::string name() 
const;                           
 
   77    void name(
const std::string&);
 
   85    std::string printableName(
const DatabasePtr &db = DatabasePtr());
 
   88    void toYaml(std::ostream&, 
const DatabasePtr&, std::string prefix, ShowEvents, ShowAssertions);
 
  100    std::string timestamp() 
const;
 
  101    void timestamp(
const std::string&);
 
  111    SpecimenPtr specimen() 
const;
 
  112    void specimen(
const SpecimenPtr&);
 
  120    std::vector<std::string> args() 
const;
 
  121    void args(std::vector<std::string> arguments);
 
  126    std::vector<EnvValue> env() 
const;
 
  127    void env(std::vector<EnvValue> envvars);
 
  136        return concolicResult_;
 
  144    bool hasConcolicTest() 
const;
 
  163    bool concreteIsInteresting() 
const;
 
  164    void concreteIsInteresting(
bool);
 
  170    bool hasConcreteTest() 
const;
 
  175    const std::string& executor()
 const {
 
  178    void executor(
const std::string &x) {
 
  186    const std::vector<SymbolicExpression::Ptr>& assertions()
 const {
 
  189    std::vector<SymbolicExpression::Ptr>& assertions() {
 
  192    void assertions(
const std::vector<SymbolicExpression::Ptr> &v) {
 
Holds a value or nothing.
 
Creates SharedPointer from this.
 
Base class for reference counted objects.
 
Reference-counting intrusive smart pointer.
 
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.