diff --git a/test/integration/cmake/cmake_test.go b/test/integration/cmake/cmake_test.go index df22365..6080b6f 100644 --- a/test/integration/cmake/cmake_test.go +++ b/test/integration/cmake/cmake_test.go @@ -143,9 +143,31 @@ func TestCMakeProjects(t *testing.T) { } } } + // Test updating for just "cpp-flat" using content from "update-cpp-flat" folder. + if project == "cpp-flat" { + t.Logf("**** Update project cpp-flat (task.fbs and main.cpp) ****") + cmake.CopyDir(wd, filepath.Join("update-cpp-flat", "."), filepath.Join(confDir)) + if multiConfigBuild { + configs := []string{"Release", "Debug"} + for _, config := range configs { + if stdOut, stdErr, err := conf.BuildDefaultsWithConfig(config); err != nil { + t.Fatalf("cmake build after update (configuration %s) failed: \n%s\n%s\n%s", config, stdOut, stdErr, err) + } else { + t.Logf("build after update (configuration %s) output:\n%s", config, string(stdOut)) + } + } + } else { + if stdOut, stdErr, err := conf.BuildDefaults(); err != nil { + t.Fatalf("cmake build after update failed: \n%s\n%s\n%s", stdOut, stdErr, err) + } else { + t.Logf("build after update output:\n%s", string(stdOut)) + } + } + } } } } + } for _, singleGenerator := range singleGenerators { @@ -155,3 +177,6 @@ func TestCMakeProjects(t *testing.T) { run(multiGenerator, true) } } + +func TestCMakeProjectModify(t *testing.T) { +} diff --git a/test/integration/cmake/update-cpp-flat/CMakeLists.txt b/test/integration/cmake/update-cpp-flat/CMakeLists.txt new file mode 100644 index 0000000..0168825 --- /dev/null +++ b/test/integration/cmake/update-cpp-flat/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 3.14) + +project(objectbox-generator-cmake-cpp-flat CXX) + +include(../common.cmake) + +add_executable(objectbox-test main.cpp) +target_link_libraries(objectbox-test objectbox) + +set_target_properties(objectbox-test PROPERTIES + CXX_STANDARD 14 + CXX_STANDARD_REQUIRED YES +) + +# Variants: +# - multiple add_obx_schema calls on same target +# - single add_obx_schema call adding two schemas +# - use OUTPUT_DIR_HEADERS (without OUTPUT_DIR) +if (DO_INSOURCE) + add_obx_schema( + TARGET + objectbox-test + SCHEMA_FILES + task.fbs + monster.fbs + person.fbs + INSOURCE + OUTPUT_DIR_MODEL_JSON model + OUTPUT_DIR_HEADERS + include2 + ) + target_include_directories(objectbox-test PRIVATE include2) +else() + add_obx_schema( + TARGET + objectbox-test + SCHEMA_FILES + task.fbs + monster.fbs + person.fbs + ) +endif() diff --git a/test/integration/cmake/update-cpp-flat/main.cpp b/test/integration/cmake/update-cpp-flat/main.cpp new file mode 100644 index 0000000..be73dd9 --- /dev/null +++ b/test/integration/cmake/update-cpp-flat/main.cpp @@ -0,0 +1,43 @@ + +#define OBX_CPP_FILE + + +#include "objectbox.hpp" + +#include "objectbox-model.h" +#include "task.obx.hpp" +#include "monster.obx.hpp" +#include "person.obx.hpp" + +#include + +int main(int argc, char* args[]) +{ + // create_obx_model() provided by objectbox-model.h + // obx interface contents provided by objectbox.hpp + obx::Store store(create_obx_model()); + obx::Box box(store); + + Task my_task{}; + my_task.text = "Buy milk"; + obx_id id = box.put(my_task); // Create + + std::unique_ptr task = box.get(id); // Read + if (task) { + task->text += " & some bread"; + box.put(*task); // Update + } + + printf("Your task has ID=%" PRIu64 ", text=%s\n, text2=%s\n", + id, + box.get(id)->text.c_str(), + box.get(id)->text2.c_str()); + + obx::Box person_box(store); + Person my_person{}; + obx_id person_id = person_box.put(my_person); // Create + + printf("Your person has ID=%" PRIu64, person_id); + + return 0; +} diff --git a/test/integration/cmake/update-cpp-flat/person.fbs b/test/integration/cmake/update-cpp-flat/person.fbs new file mode 100644 index 0000000..07a6c45 --- /dev/null +++ b/test/integration/cmake/update-cpp-flat/person.fbs @@ -0,0 +1,5 @@ +table Person { + id: ulong; + name: string; + age: int; +} diff --git a/test/integration/cmake/update-cpp-flat/task.fbs b/test/integration/cmake/update-cpp-flat/task.fbs new file mode 100644 index 0000000..df18380 --- /dev/null +++ b/test/integration/cmake/update-cpp-flat/task.fbs @@ -0,0 +1,7 @@ +table Task { + id: ulong; + text: string; + text2: string; + date_created: ulong; + date_finished: ulong; +}