diff options
author | Arne Juul <arnej@verizonmedia.com> | 2021-03-19 11:06:56 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2021-03-19 11:26:10 +0000 |
commit | e238515848ef8151cb31d0339fa377272a6376e6 (patch) | |
tree | 95de0eec6e79906acd164e2b8a2d8b499a2fe9f1 | |
parent | 2b9af119333af4e907115a8157d0a0ea8494a1a1 (diff) |
expose more in verify
-rw-r--r-- | eval/src/vespa/eval/eval/test/eval_fixture.cpp | 3 | ||||
-rw-r--r-- | eval/src/vespa/eval/eval/test/eval_fixture.h | 22 |
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 ¶m_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 ¶m_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 ¶m_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]); } } } |