libgtest_main_no_exception.so libgtest_main.so libgtest_no_exception.so
#ifndef FUNC_C
#define FUNC_C
#ifdef __cplusplus
extern "C"
{
#endif
int fac(int nInput);
#ifdef __cplusplus
}
#endif
#endif // FUNC_C
#include "func.h"
int fac(int nInput)
{
if(nInput < 0) {
return -1;
}
int nRev = 1;
for(int i = 1; i <= nInput; ++i){
nRev *= i;
}
return nRev;
}
#include <limits>
#include "func.h"
#include "gtest/gtest.h"
TEST(Fac_test, input_negative){
EXPECT_EQ(-1, fac(-1));
EXPECT_EQ(-1, fac(-2));
EXPECT_EQ(-1, fac(-5));
}
TEST(Fac_test, input_zero){
EXPECT_EQ(1, fac(0));
}
TEST(Fac_test, input_positive){
EXPECT_EQ(1, fac(1));
EXPECT_EQ(2, fac(2));
EXPECT_EQ(6, fac(3));
}
CC = gcc
CPP = g++
LINK = g++
CFLAGS = -g -Wall -Werror -Wextra -std=gnu99
CPPFLAGS = -g -Wall -Werror -Wextra
LIBS = -L/usr/lib/gtest -lgtest -lgtest_main
C__SOURCES = $(wildcard *.c)
CPPSOURCES = $(wildcard *.cpp)
OBJECTS = $(patsubst %.c, %.o, $(C__SOURCES)) $(patsubst %.cpp, %.o, $(CPPSOURCES))
TARGET = sample_unittest
first: all
%.o: %.c
$(CC) -c $(CFLAGS) -o $@ $<
%.o: %.cpp
$(CPP) -c $(CPPFLAGS) -o $@ $<
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(LINK) $(CPPFLAGS) $(LIBS) -o $(TARGET) $(OBJECTS)
.PHONY: clean
clean:
rm -f $(TARGET) $(OBJECTS)