Thursday, 23 June 2022

how to write a unit test using googletest in ubuntu?

(base) ninja@luke:~/workspace/google_test$ cat main_test.cpp
// main_test.cpp
#include "whattotest.cpp"
#include <gtest/gtest.h>
 
TEST(SquareRootTest, PositiveNos) {
    ASSERT_EQ(6, squareRoot(36.0));
    ASSERT_EQ(18.0, squareRoot(324.0));
    ASSERT_EQ(25.4, squareRoot(645.16));
    ASSERT_EQ(0, squareRoot(0.0));
}
 
TEST(SquareRootTest, NegativeNos) {
    ASSERT_EQ(-1.0, squareRoot(-15.0));
    ASSERT_EQ(-1.0, squareRoot(-0.2));
}
 
int main(int argc, char **argv) {
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

---

(base) ninja@luke:~/workspace/google_test$ cat whattotest.cpp
// whattotest.cpp
#include <math.h>
 
double squareRoot(const double a) {
    double b = sqrt(a);
    if(b != b) { // nan check
        return -1.0;
    }else{
        return sqrt(a);
    }
}

---

(base) ninja@luke:~/workspace/google_test$ cat CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(test)

################################
# GTest
################################
project(googletest-git NONE)
include(FetchContent)
FetchContent_Declare(
  googletest
  GIT_REPOSITORY https://github.com/google/googletest.git
  GIT_TAG        release-1.8.0
)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
set(BUILD_GMOCK OFF CACHE BOOL "" FORCE)
set(BUILD_GTEST ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)

################################
# main test program
################################
# Add test cpp file
add_executable(test main_test.cpp)
# Link test executable against gtest & gtest_main
target_link_libraries(test gtest gtest_main)
 

commands:-

cd ~/workspace/google_test

mkdir build

cd build

cmake ..

make test

 




How to include all *.h or *.cpp in CMakeLists.txt?

 

file(GLOB_RECURSE SOURCES LIST_DIRECTORIES true *.h *.cpp)


How to create multiple folders in one go using terminal?

 mkdir -p test/{build,lib,src,tst}

Tuesday, 14 June 2022

How to convert onnx to TRT without any precision loss?

 https://docs.nvidia.com/deeplearning/tensorrt/polygraphy/docs/index.html

Wednesday, 8 June 2022

Monday, 30 May 2022

CMakeLists.txt of OpenCV in GStreamer Docker 3090

apt install cmake

apt install qt5-default python-dev python3-dev -y

cd /data/opencv-4.4.0/build

cmake ..

make -j32

make install 


CMakeLists.txt:-

cmake -DCMAKE_BUILD_TYPE=RELEASE \
        -DCMAKE_INSTALL_PREFIX=/data/opencv-4.4.0/distribute \
        -DINSTALL_C_EXAMPLES=ON \
        -DOPENCV_GENERATE_PKGCONFIG=ON \
        -DINSTALL_PYTHON_EXAMPLES=ON \
        -DBUILD_SHARED_LIBS=ON \
        -DWITH_TBB=ON \
        -DWITH_V4L=ON \
        -DBUILD_opencv_world=OFF \
        -DOPENCV_PYTHON3_INSTALL_PATH=/data/opencv-4.4.0/distribute/python3 \
        -DWITH_QT=ON \
        -DWITH_OPENGL=ON \
        -DWITH_FFMPEG=ON \
        -DHAVE_FFMPEG=OFF \
        -DWITH_CUDA=ON \
        -DHAVE_CUDNN=ON \
        -DCUDNN_INCLUDE_DIRS=/data/cuda/include \
        -DCUDNN_LIBRARY=/usr/lib/x86_64-linux-gnu/libcudnn.so.8.0.4 \
        -DWITH_CUFFT=ON \
        -DWITH_CUBLAS=ON \
        -DWITH_NVCUVID=OFF \
        -DHAVE_NVCUVID=OFF\
        -DWITH_NVCUVENC=ON \
        -DHAVE_NVCUVENC=ON \
        -DBUILD_CUDA_STUBS=ON \
        -DBUILD_opencv_cudalegacy=ON \
        -DBUILD_opencv_cudacodec=ON \
        -DCUDA_FAST_MATH=ON \
        -DCUDA_ARCH_BIN="8.6" \
        -DCUDA_TOOLKIT_ROOT_DIR="/usr/local/cuda-11.1" \
        -DOPENCV_EXTRA_MODULES_PATH="/data/opencv_contrib-4.4.0/modules" \
        -DBUILD_NEW_PYTHON_SUPPORT=ON \
        -DBUILD_opencv_python3=ON \
        -DHAVE_opencv_python3=ON \
        -DPYTHON3_EXECUTABLE=/usr/bin/python3 \
        -DPYTHON3_DEFAULT_EXECUTABLE=/usr/bin/python3 \
        -DPYTHON3_INCLUDE_PATH=/usr/include/python3.6 \
        -DPYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/x86_64-linux-gnu/python3.6/site-packages/numpy/core/include \
        -DPYTHON3_PACKAGES_PATH=/usr/lib/x86_64-linux-gnu/python3.6/site-packages \
        -DPYTHON3_LIBRARIES=/usr/lib/x86_64-linux-gnu/libpython3.6.so \
        -DPYTHON3_LIBRARIES_PATH=/usr/lib/x86_64-linux-gnu \
    -D OpenGL_GL_PREFERENCE=GLVND \
    -D BUILD_opencv_rgbd=OFF \
        -D WITH_QT=ON \
        -D WITH_OPENGL=ON \
        -D WITH_GTK_2_X=ON \
        -DBUILD_EXAMPLES=OFF ..