Skip to content
Snippets Groups Projects
Commit c30950f8 authored by Luka Stanisic's avatar Luka Stanisic
Browse files

adding first version of testing code example

parent 964ed43a
Branches
No related tags found
No related merge requests found
*~
\ No newline at end of file
Makefile 0 → 100644
SRC=src/main.cpp
TESTS=tests
COV=coverage
OUT_T=test_output
OUT_E=expected_output
APP=program
CXX=g++
BROWSER=google-chrome
# Default
all: distclean compile test
# Compiling section
compile:
$(CXX) -o $(APP) $(SRC)
compile_coverage:
$(CXX) -o $(APP) --coverage $(SRC)
# Testing section
test: simple_tests regression_test unit_tests
simple_tests:
./$(APP) 1 4 2
./$(APP) 2 4 2
./$(APP) 4 4 2
regression_test:
./$(APP) 1 4 2 | tail -n 1 > $(OUT_T)
echo "c=6" > $(OUT_E)
diff $(OUT_T) $(OUT_E)
unit_tests:
cd $(TESTS) && cmake CMakeLists.txt && make
./$(TESTS)/runTests
# Coverage section
coverage: clean clean_coverage compile_coverage simple_tests
lcov -t "result" -o $(APP).info -c -d .
genhtml -o $(COV) $(APP).info
show_cov: coverage
$(BROWSER) $(COV)/index.html
# Cleaning section
distclean: clean clean_tests clean_coverage
.PHONY: clean
clean:
rm -f $(APP)
clean_tests:
rm -rf $(TESTS)/CMakeFiles $(TESTS)/CMakeCache.txt $(TESTS)/cmake_install.cmake $(TESTS)/CMakeFiles $(TESTS)/runTests $(OUT_E) $(OUT_T)
clean_coverage:
rm -rf *.gcno *.gcda $(APP).info $(COV)
#include<iostream>
using namespace std;
int add(int a,int b){return a+b;}
int sub(int a,int b){return a-b;}
int mul(int a,int b){return a*b;}
int dv(int a,int b){
if (b!=0) return a/b;
else return 0;}
#include "funcs.cpp"
using namespace std;
int main(int argc, char *argv[])
{
int op=atoi(argv[1]);
int a= atoi(argv[2]);
int b= atoi(argv[3]);
printf("op=%d; a=%d; b=%d\n", op, a, b);
int c;
switch(op)
{
case 1: c=add(a,b); break;
case 2: c=sub(a,b); break;
case 3: c=mul(a,b); break;
case 4: c= dv(a,b); break;
default: c=0;
}
printf("c=%d\n", c);
return 0;
}
cmake_minimum_required(VERSION 2.6)
# Locate GTest
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
# Link runTests with what we want to test and the GTest and pthread library
add_executable(runTests test_funcs.cpp)
target_link_libraries(runTests ${GTEST_LIBRARIES} pthread)
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.12
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Remove some rules from gmake that .SUFFIXES does not remove.
SUFFIXES =
.SUFFIXES: .hpux_make_needs_suffix_list
# Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E remove -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/sluka/Work/testing_example/tests
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/sluka/Work/testing_example/tests
#=============================================================================
# Targets provided globally by CMake.
# Special rule for the target rebuild_cache
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
# Special rule for the target edit_cache
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
/usr/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
# The main all target
all: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/sluka/Work/testing_example/tests/CMakeFiles /home/sluka/Work/testing_example/tests/CMakeFiles/progress.marks
$(MAKE) -f CMakeFiles/Makefile2 all
$(CMAKE_COMMAND) -E cmake_progress_start /home/sluka/Work/testing_example/tests/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
$(MAKE) -f CMakeFiles/Makefile2 clean
.PHONY : clean
# The main clean target
clean/fast: clean
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all
$(MAKE) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
$(MAKE) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall/fast
# clear depends
depend:
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
#=============================================================================
# Target rules for targets named runTests
# Build rule for target.
runTests: cmake_check_build_system
$(MAKE) -f CMakeFiles/Makefile2 runTests
.PHONY : runTests
# fast build rule for target.
runTests/fast:
$(MAKE) -f CMakeFiles/runTests.dir/build.make CMakeFiles/runTests.dir/build
.PHONY : runTests/fast
test_funcs.o: test_funcs.cpp.o
.PHONY : test_funcs.o
# target to build an object file
test_funcs.cpp.o:
$(MAKE) -f CMakeFiles/runTests.dir/build.make CMakeFiles/runTests.dir/test_funcs.cpp.o
.PHONY : test_funcs.cpp.o
test_funcs.i: test_funcs.cpp.i
.PHONY : test_funcs.i
# target to preprocess a source file
test_funcs.cpp.i:
$(MAKE) -f CMakeFiles/runTests.dir/build.make CMakeFiles/runTests.dir/test_funcs.cpp.i
.PHONY : test_funcs.cpp.i
test_funcs.s: test_funcs.cpp.s
.PHONY : test_funcs.s
# target to generate assembly for a file
test_funcs.cpp.s:
$(MAKE) -f CMakeFiles/runTests.dir/build.make CMakeFiles/runTests.dir/test_funcs.cpp.s
.PHONY : test_funcs.cpp.s
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... rebuild_cache"
@echo "... runTests"
@echo "... edit_cache"
@echo "... test_funcs.o"
@echo "... test_funcs.i"
@echo "... test_funcs.s"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system
#include "gtest/gtest.h"
#include "../src/funcs.cpp"
TEST(FuncsTest,Add){
EXPECT_EQ(6,add(4,2));
};
TEST(FuncsTest,Sub){
EXPECT_EQ(2,sub(4,2));
};
TEST(FuncsTest,Mul){
EXPECT_EQ(8,mul(4,2));
};
TEST(FuncsTest,Div){
EXPECT_EQ(2,dv(4,2));
};
int main(int argc,char**argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment