diff --git a/.github/workflows/cxx.yaml b/.github/workflows/cxx.yaml new file mode 100644 index 000000000..a33de2c74 --- /dev/null +++ b/.github/workflows/cxx.yaml @@ -0,0 +1,23 @@ +# Copyright (c) ONNX Project Contributors +# +# SPDX-License-Identifier: Apache-2.0 + +name: Build and Test + +on: + push: + branches: + - main + pull_request: + workflow_dispatch: + +jobs: + build_and_test: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - run: cmake -GNinja -DONNX_BUILD_TESTS=ON -B build -S . + - run: cmake --build build + - run: cmake --build build -t test diff --git a/CMakeLists.txt b/CMakeLists.txt index 988c9a3f3..b79cb37ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,3 +98,10 @@ install(TARGETS onnx_optimizer onnx_optimizer_c_api EXPORT ONNXOptimizerTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}) +if(ONNX_BUILD_TESTS) + enable_testing() + include(third_party/onnx/cmake/external/googletest.cmake) + add_executable(test_simple tests/test_simple.cc) + target_link_libraries(test_simple onnx_optimizer gtest gtest_main) + add_test(NAME test_simple COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test_simple) +endif() diff --git a/tests/test_simple.cc b/tests/test_simple.cc new file mode 100644 index 000000000..a6e7d02ee --- /dev/null +++ b/tests/test_simple.cc @@ -0,0 +1,25 @@ +#include +#include +#include + +TEST(OptimizerTest, NopReshape) { + const char* graph_str = R"( + < + ir_version: 7, + opset_import: [ "": 10] + > + agraph (float[5, 7] X) => (float[5, 7] Z) + { + Shape = Constant () + Y = Reshape (X, Shape) + Z = Identity(Y) + } + )"; + onnx::ModelProto model; + const onnx::Status status = onnx::OnnxParser::Parse(model, graph_str); + EXPECT_TRUE(status.IsOK()); + auto optimized_model = onnx::optimization::Optimize(model, {"eliminate_nop_reshape", "eliminate_deadend"}); + + ASSERT_EQ(optimized_model.graph().node().size(), 1); + ASSERT_EQ(optimized_model.graph().node()[0].op_type(), "Identity"); +}