diff options
Diffstat (limited to 'document/src/tests')
3 files changed, 39 insertions, 42 deletions
diff --git a/document/src/tests/documentupdatetestcase.cpp b/document/src/tests/documentupdatetestcase.cpp index 9d2567e93ed..ca519a2f7d0 100644 --- a/document/src/tests/documentupdatetestcase.cpp +++ b/document/src/tests/documentupdatetestcase.cpp @@ -21,8 +21,9 @@ #include <vespa/document/update/tensor_remove_update.h> #include <vespa/document/update/valueupdate.h> #include <vespa/document/util/bytebuffer.h> -#include <vespa/eval/tensor/default_tensor_engine.h> -#include <vespa/eval/tensor/tensor.h> +#include <vespa/eval/eval/engine_or_factory.h> +#include <vespa/eval/eval/value.h> +#include <vespa/eval/eval/test/value_compare.h> #include <vespa/vespalib/objects/nbostream.h> #include <vespa/vespalib/util/exception.h> #include <vespa/vespalib/util/exceptions.h> @@ -33,10 +34,10 @@ #include <unistd.h> using namespace document::config_builder; + using vespalib::eval::TensorSpec; using vespalib::eval::ValueType; -using vespalib::tensor::DefaultTensorEngine; -using vespalib::tensor::Tensor; +using vespalib::eval::EngineOrFactory; using vespalib::nbostream; namespace document { @@ -771,11 +772,12 @@ TEST(DocumentUpdateTest, testMapValueUpdate) EXPECT_EQ(fv4->find(StringFieldValue("apple")), fv4->end()); } -std::unique_ptr<Tensor> +std::unique_ptr<vespalib::eval::Value> makeTensor(const TensorSpec &spec) { - auto result = DefaultTensorEngine::ref().from_spec(spec); - return std::unique_ptr<Tensor>(dynamic_cast<Tensor*>(result.release())); + auto result = EngineOrFactory::get().from_spec(spec); + EXPECT_TRUE(result->is_tensor()); + return result; } std::unique_ptr<TensorFieldValue> @@ -787,7 +789,7 @@ makeTensorFieldValue(const TensorSpec &spec, const TensorDataType &dataType) return result; } -const Tensor &asTensor(const FieldValue &fieldValue) { +const vespalib::eval::Value &asTensor(const FieldValue &fieldValue) { auto &tensorFieldValue = dynamic_cast<const TensorFieldValue &>(fieldValue); auto tensor = tensorFieldValue.getAsTensorPtr(); assert(tensor); diff --git a/document/src/tests/serialization/vespadocumentserializer_test.cpp b/document/src/tests/serialization/vespadocumentserializer_test.cpp index 02f170cd5f1..13d5e7d8405 100644 --- a/document/src/tests/serialization/vespadocumentserializer_test.cpp +++ b/document/src/tests/serialization/vespadocumentserializer_test.cpp @@ -36,8 +36,9 @@ #include <vespa/document/serialization/vespadocumentdeserializer.h> #include <vespa/document/serialization/vespadocumentserializer.h> #include <vespa/document/serialization/annotationserializer.h> -#include <vespa/eval/tensor/tensor.h> -#include <vespa/eval/tensor/default_tensor_engine.h> +#include <vespa/eval/eval/engine_or_factory.h> +#include <vespa/eval/eval/value.h> +#include <vespa/eval/eval/test/value_compare.h> #include <vespa/vespalib/io/fileutil.h> #include <vespa/vespalib/objects/nbostream.h> #include <vespa/vespalib/testkit/testapp.h> @@ -50,8 +51,7 @@ using vespalib::nbostream; using vespalib::nbostream_longlivedbuf; using vespalib::slime::Cursor; using vespalib::eval::TensorSpec; -using vespalib::tensor::Tensor; -using vespalib::tensor::DefaultTensorEngine; +using vespalib::eval::EngineOrFactory; using vespalib::compression::CompressionConfig; using namespace document; using std::string; @@ -771,12 +771,10 @@ TEST("Require that predicate deserialization matches Java") { namespace { -Tensor::UP createTensor(const TensorSpec &spec) { - auto value = DefaultTensorEngine::ref().from_spec(spec); - Tensor *tensor = dynamic_cast<Tensor*>(value.get()); - ASSERT_TRUE(tensor != nullptr); - value.release(); - return Tensor::UP(tensor); +vespalib::eval::Value::UP createTensor(const TensorSpec &spec) { + auto value = EngineOrFactory::get().from_spec(spec); + ASSERT_TRUE(value->is_tensor()); + return value; } } @@ -836,13 +834,13 @@ void deserializeAndCheck(const string &file_name, TensorFieldValue &value) { deserializeAndCheck(file_name, value, tensor_repo, tensor_field_name); } -void checkDeserialization(const string &name, std::unique_ptr<Tensor> tensor) { +void checkDeserialization(const string &name, std::unique_ptr<vespalib::eval::Value> tensor) { const string data_dir = TEST_PATH("../../test/resources/tensor/"); TensorDataType valueType(tensor ? tensor->type() : vespalib::eval::ValueType::error_type()); TensorFieldValue value(valueType); if (tensor) { - value = tensor->clone(); + value = EngineOrFactory::get().copy(*tensor); } serializeToFile(value, data_dir + name + "__cpp"); deserializeAndCheck(data_dir + name + "__cpp", value); @@ -851,7 +849,7 @@ void checkDeserialization(const string &name, std::unique_ptr<Tensor> tensor) { TEST("Require that tensor deserialization matches Java") { - checkDeserialization("non_existing_tensor", std::unique_ptr<Tensor>()); + checkDeserialization("non_existing_tensor", std::unique_ptr<vespalib::eval::Value>()); checkDeserialization("empty_tensor", createTensor(TensorSpec("tensor(dimX{},dimY{})"))); checkDeserialization("multi_cell_tensor", createTensor(TensorSpec("tensor(dimX{},dimY{})") @@ -863,17 +861,17 @@ TEST("Require that tensor deserialization matches Java") { struct TensorDocFixture { const DocumentTypeRepo &_docTypeRepo; const DocumentType *_docType; - std::unique_ptr<Tensor> _tensor; + std::unique_ptr<vespalib::eval::Value> _tensor; Document _doc; vespalib::nbostream _blob; TensorDocFixture(const DocumentTypeRepo &docTypeRepo, - std::unique_ptr<Tensor> tensor); + std::unique_ptr<vespalib::eval::Value> tensor); ~TensorDocFixture(); }; TensorDocFixture::TensorDocFixture(const DocumentTypeRepo &docTypeRepo, - std::unique_ptr<Tensor> tensor) + std::unique_ptr<vespalib::eval::Value> tensor) : _docTypeRepo(docTypeRepo), _docType(_docTypeRepo.getDocumentType(tensor_doc_type_id)), _tensor(std::move(tensor)), @@ -881,7 +879,7 @@ TensorDocFixture::TensorDocFixture(const DocumentTypeRepo &docTypeRepo, _blob() { auto fv = _doc.getField(tensor_field_name).createValue(); - dynamic_cast<TensorFieldValue &>(*fv) = _tensor->clone(); + dynamic_cast<TensorFieldValue &>(*fv) = EngineOrFactory::get().copy(*_tensor); _doc.setValue(tensor_field_name, *fv); _doc.serialize(_blob); } @@ -897,7 +895,7 @@ struct DeserializedTensorDoc ~DeserializedTensorDoc(); void setup(const DocumentTypeRepo &docTypeRepo, const vespalib::nbostream &blob); - const Tensor *getTensor() const; + const vespalib::eval::Value *getTensor() const; }; DeserializedTensorDoc::DeserializedTensorDoc() @@ -916,7 +914,7 @@ DeserializedTensorDoc::setup(const DocumentTypeRepo &docTypeRepo, const vespalib _fieldValue = _doc->getValue(tensor_field_name); } -const Tensor * +const vespalib::eval::Value * DeserializedTensorDoc::getTensor() const { return dynamic_cast<const TensorFieldValue &>(*_fieldValue).getAsTensorPtr(); @@ -936,14 +934,14 @@ TEST("Require that wrong tensor type hides tensor") DeserializedTensorDoc doc; doc.setup(tensor_doc_repo, f._blob); EXPECT_TRUE(doc.getTensor() != nullptr); - EXPECT_TRUE(doc.getTensor()->equals(*f._tensor)); + EXPECT_TRUE((*doc.getTensor()) == (*f._tensor)); doc.setup(tensor_doc_repo, f1._blob); EXPECT_TRUE(doc.getTensor() == nullptr); doc.setup(tensor_doc_repo1, f._blob); EXPECT_TRUE(doc.getTensor() == nullptr); doc.setup(tensor_doc_repo1, f1._blob); EXPECT_TRUE(doc.getTensor() != nullptr); - EXPECT_TRUE(doc.getTensor()->equals(*f1._tensor)); + EXPECT_TRUE((*doc.getTensor()) == (*f1._tensor)); } struct RefFixture { diff --git a/document/src/tests/tensor_fieldvalue/tensor_fieldvalue_test.cpp b/document/src/tests/tensor_fieldvalue/tensor_fieldvalue_test.cpp index 9d2da9c983a..18afdb15bb8 100644 --- a/document/src/tests/tensor_fieldvalue/tensor_fieldvalue_test.cpp +++ b/document/src/tests/tensor_fieldvalue/tensor_fieldvalue_test.cpp @@ -7,9 +7,8 @@ LOG_SETUP("fieldvalue_test"); #include <vespa/document/base/exceptions.h> #include <vespa/document/datatype/tensor_data_type.h> #include <vespa/document/fieldvalue/tensorfieldvalue.h> -#include <vespa/eval/tensor/tensor.h> -#include <vespa/eval/tensor/types.h> -#include <vespa/eval/tensor/default_tensor_engine.h> +#include <vespa/eval/eval/engine_or_factory.h> +#include <vespa/eval/eval/value.h> #include <vespa/eval/tensor/test/test_utils.h> #include <vespa/vespalib/testkit/testapp.h> @@ -18,7 +17,7 @@ using namespace document; using namespace vespalib::tensor; using vespalib::eval::TensorSpec; using vespalib::eval::ValueType; -using vespalib::tensor::DefaultTensorEngine; +using vespalib::eval::EngineOrFactory; using vespalib::tensor::test::makeTensor; namespace @@ -27,19 +26,17 @@ namespace TensorDataType xSparseTensorDataType(ValueType::from_spec("tensor(x{})")); TensorDataType xySparseTensorDataType(ValueType::from_spec("tensor(x{},y{})")); -Tensor::UP createTensor(const TensorSpec &spec) { - auto value = DefaultTensorEngine::ref().from_spec(spec); - Tensor *tensor = dynamic_cast<Tensor*>(value.get()); - ASSERT_TRUE(tensor != nullptr); - value.release(); - return Tensor::UP(tensor); +vespalib::eval::Value::UP createTensor(const TensorSpec &spec) { + auto value = EngineOrFactory::get().from_spec(spec); + ASSERT_TRUE(value->is_tensor()); + return value; } -std::unique_ptr<Tensor> +std::unique_ptr<vespalib::eval::Value> makeSimpleTensor() { - return makeTensor<Tensor>(TensorSpec("tensor(x{},y{})"). - add({{"x", "4"}, {"y", "5"}}, 7)); + return makeTensor<vespalib::eval::Value>(TensorSpec("tensor(x{},y{})"). + add({{"x", "4"}, {"y", "5"}}, 7)); } FieldValue::UP clone(FieldValue &fv) { |