summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2021-03-19 11:06:56 +0000
committerArne Juul <arnej@verizonmedia.com>2021-03-19 11:26:10 +0000
commite238515848ef8151cb31d0339fa377272a6376e6 (patch)
tree95de0eec6e79906acd164e2b8a2d8b499a2fe9f1
parent2b9af119333af4e907115a8157d0a0ea8494a1a1 (diff)
expose more in verify
-rw-r--r--eval/src/vespa/eval/eval/test/eval_fixture.cpp3
-rw-r--r--eval/src/vespa/eval/eval/test/eval_fixture.h22
2 files changed, 22 insertions, 3 deletions
diff --git a/eval/src/vespa/eval/eval/test/eval_fixture.cpp b/eval/src/vespa/eval/eval/test/eval_fixture.cpp
index 75626307bfd..701600dc093 100644
--- a/eval/src/vespa/eval/eval/test/eval_fixture.cpp
+++ b/eval/src/vespa/eval/eval/test/eval_fixture.cpp
@@ -191,7 +191,8 @@ EvalFixture::EvalFixture(const ValueBuilderFactory &factory,
_ictx(_ifun),
_param_values(make_params(_factory, *_function, param_repo)),
_params(get_refs(_param_values)),
- _result(spec_from_value(_ifun.eval(_ictx, _params)))
+ _result_value(_ifun.eval(_ictx, _params)),
+ _result(spec_from_value(_result_value))
{
auto result_type = ValueType::from_spec(_result.type());
ASSERT_TRUE(!result_type.is_error());
diff --git a/eval/src/vespa/eval/eval/test/eval_fixture.h b/eval/src/vespa/eval/eval/test/eval_fixture.h
index dba26f2b270..8d19184fc02 100644
--- a/eval/src/vespa/eval/eval/test/eval_fixture.h
+++ b/eval/src/vespa/eval/eval/test/eval_fixture.h
@@ -75,6 +75,7 @@ private:
InterpretedFunction::Context _ictx;
std::vector<Value::UP> _param_values;
SimpleObjectParams _params;
+ const Value &_result_value;
TensorSpec _result;
template <typename T>
@@ -91,6 +92,21 @@ private:
void detect_param_tampering(const ParamRepo &param_repo, bool allow_mutable) const;
+ template <typename FunInfo>
+ auto verify_callback(const FunInfo &verificator,
+ const typename FunInfo::LookFor &what) const
+ -> decltype(verificator.verify(what))
+ {
+ return verificator.verify(what);
+ }
+ template <typename FunInfo>
+ auto verify_callback(const FunInfo &verificator,
+ const typename FunInfo::LookFor &what) const
+ -> decltype(verificator.verify(*this, what))
+ {
+ return verificator.verify(*this, what);
+ }
+
public:
EvalFixture(const ValueBuilderFactory &factory, const vespalib::string &expr, const ParamRepo &param_repo,
bool optimized = true, bool allow_mutable = false);
@@ -101,6 +117,8 @@ public:
find_all(_tensor_function, list);
return list;
}
+ const Value &result_value() const { return _result_value; }
+ const Value &param_value(size_t idx) const { return *(_param_values[idx]); }
const TensorSpec &result() const { return _result; }
const TensorSpec get_param(size_t idx) const;
size_t num_params() const;
@@ -120,7 +138,7 @@ public:
// trailer starting with '$' ('a5b3$2') to allow multiple
// parameters with the same description as well as scalars
// ('$this_is_a_scalar').
-
+
template <typename FunInfo>
static void verify(const vespalib::string &expr, const std::vector<FunInfo> &fun_info, CellTypeSpace cell_type_space) {
auto fun = Function::parse(expr);
@@ -140,7 +158,7 @@ public:
auto info = fixture.find_all<typename FunInfo::LookFor>();
ASSERT_EQUAL(info.size(), fun_info.size());
for (size_t i = 0; i < fun_info.size(); ++i) {
- fun_info[i].verify(*info[i]);
+ fixture.verify_callback<FunInfo>(fun_info[i], *info[i]);
}
}
}