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.