Teeme väikse proovi. Kõigepealt mõtleme välja midagi sellist, mis on omane justnimelt C++11 ja C++14 jaoks. See funktsioon ei arvuta midagi asjalikku, aga siiski võimaldab demonstreerida mõningasi modernse C++ võimalusi. Lisan C:\git-gtest\cmake-gtest\src kausta faili:

modern.cpp 

#include "modern.h"


auto sq(int n);

auto sq(int n)
{
	return n * n;
}

int Modern::Execute(int n)
{
	int aval = 7;
	int bval = 8;
	auto c = aval + bval;
	int arr[] = {6, 1, 2, 3, 4};
	for (auto i : arr)
	{
		c += sq(i + n);
	}
	return c;
}

Kausta C:\git-gtest\cmake-gtest\include lisan faili:

modern.h

#ifndef modern_H
#define modern_H

class Modern
{
public:
	int Execute(int n);
};


#endif // modern_H

Õige oleks muidugi alustada testist ja siis alles sellele vastava koodi kirjutamisest, kuid meie eesmärk ei ole praegu õpetada TDD-d, vaid üritada moderne C++ tööle saada. TDD ja C++ jaoks sobivad raamatud on näiteks Modern C++ Programming with Test-Driven Development ja Test Driven Development for Embedded C.

Niisiis lisame kausta C:\git-gtest\cmake-gtest\test:

modern_test.cpp

#include "add.h"
#include "modern.h"
#include "gtest/gtest.h"

TEST(modernTest, Modern10)
{
	Modern m;
	int actual = m.Execute(10);
	EXPECT_EQ(901, actual);
}

TEST(modernTest, Modern11)
{
	Modern m;
	int actual = m.Execute(11);
	EXPECT_EQ(1038, actual);
}

Visual Studio 2015 jaoks polegi rohkemat vaja. See on uue standardiga kohe rahul. Käsureal asukohas C:\git-gtest\cmake-gtest\build käivitan:

cmake ..
cmake --build .
Debug\cmake-gtest_test.exe

Tulemuseks on:

 

Järgmistes osades proovime siis sama koodi ka teiste kompilaatoritega ja teistsugustel platvormidel tööle saada.

viited:

https://en.wikipedia.org/wiki/C%2B%2B11

http://www.stroustrup.com/C++11FAQ/

https://en.wikipedia.org/wiki/C%2B%2B14

https://isocpp.org/wiki/faq/cpp14-language

https://youtu.be/iWvcoIKSaoc