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