diff --git a/exercise/01/app/app.cpp b/exercise/01/app/app.cpp new file mode 100644 index 0000000..28ff663 Binary files /dev/null and b/exercise/01/app/app.cpp differ diff --git a/exercise/01/app/app.vcxproj b/exercise/01/app/app.vcxproj new file mode 100644 index 0000000..14774c9 --- /dev/null +++ b/exercise/01/app/app.vcxproj @@ -0,0 +1,200 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {E9C4227A-E42C-44DB-B52B-A29CC9E11111} + Win32Proj + app + 10.0.17134.0 + + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + Create + Level3 + Disabled + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + pch.h + + + Console + true + static_library.lib;dynamic_library_with_implib.lib;%(AdditionalDependencies) + ..\lib\$(Platform)\$(Configuration)\;..\dll2\$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) + + + copy "..\dll1\$(Platform)\$(Configuration)\dynamic_library.dll" "$(Platform)\$(Configuration)\" +copy "..\dll2\$(Platform)\$(Configuration)\dynamic_library_with_implib.dll" "$(Platform)\$(Configuration)\" + + + + + Create + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + pch.h + + + Console + true + static_library.lib;dynamic_library_with_implib.lib;%(AdditionalDependencies) + ..\lib\$(Platform)\$(Configuration)\;..\dll2\$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) + + + copy "..\dll1\$(Platform)\$(Configuration)\dynamic_library.dll" "$(Platform)\$(Configuration)\" +copy "..\dll2\$(Platform)\$(Configuration)\dynamic_library_with_implib.dll" "$(Platform)\$(Configuration)\" + + + + + Create + Level3 + MaxSpeed + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + pch.h + + + Console + true + true + true + static_library.lib;dynamic_library_with_implib.lib;%(AdditionalDependencies) + ..\lib\$(Platform)\$(Configuration)\;..\dll2\$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) + + + copy "..\dll1\$(Platform)\$(Configuration)\dynamic_library.dll" "$(Platform)\$(Configuration)\" +copy "..\dll2\$(Platform)\$(Configuration)\dynamic_library_with_implib.dll" "$(Platform)\$(Configuration)\" + + + + + Create + Level3 + MaxSpeed + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + pch.h + + + Console + true + true + true + static_library.lib;dynamic_library_with_implib.lib;%(AdditionalDependencies) + ..\lib\$(Platform)\$(Configuration)\;..\dll2\$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories) + + + copy "..\dll1\$(Platform)\$(Configuration)\dynamic_library.dll" "$(Platform)\$(Configuration)\" +copy "..\dll2\$(Platform)\$(Configuration)\dynamic_library_with_implib.dll" "$(Platform)\$(Configuration)\" + + + + + Use + Use + Use + Use + + + + + + + + + + \ No newline at end of file diff --git a/exercise/01/app/app.vcxproj.filters b/exercise/01/app/app.vcxproj.filters new file mode 100644 index 0000000..95c9b51 --- /dev/null +++ b/exercise/01/app/app.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/exercise/01/app/pch.cpp b/exercise/01/app/pch.cpp new file mode 100644 index 0000000..a38f8a3 Binary files /dev/null and b/exercise/01/app/pch.cpp differ diff --git a/exercise/01/app/pch.h b/exercise/01/app/pch.h new file mode 100644 index 0000000..d87432d Binary files /dev/null and b/exercise/01/app/pch.h differ diff --git a/exercise/01/e01.sln b/exercise/01/e01.sln index fb6ce37..fea5e2c 100644 --- a/exercise/01/e01.sln +++ b/exercise/01/e01.sln @@ -5,17 +5,17 @@ VisualStudioVersion = 15.0.28010.2036 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "static_library", "lib\static_library.vcxproj", "{990D865F-0DF2-40ED-8622-8DD0DB4A2128}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "app", "app\app.vcxproj", "{843D77A9-6E04-4515-91D5-A010A5CDF8E0}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dynamic_library", "dll1\dynamic_library.vcxproj", "{92DBD108-3D52-419D-BC33-217327A4AD9D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dynamic_library_with_implib", "dll2\dynamic_library_with_implib.vcxproj", "{4EA09877-C87B-489E-9F80-A921D8E66E46}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "app", "app\app.vcxproj", "{E9C4227A-E42C-44DB-B52B-A29CC9E11111}" ProjectSection(ProjectDependencies) = postProject {92DBD108-3D52-419D-BC33-217327A4AD9D} = {92DBD108-3D52-419D-BC33-217327A4AD9D} {990D865F-0DF2-40ED-8622-8DD0DB4A2128} = {990D865F-0DF2-40ED-8622-8DD0DB4A2128} {4EA09877-C87B-489E-9F80-A921D8E66E46} = {4EA09877-C87B-489E-9F80-A921D8E66E46} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dynamic_library", "dll1\dynamic_library.vcxproj", "{92DBD108-3D52-419D-BC33-217327A4AD9D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dynamic_library_with_implib", "dll2\dynamic_library_with_implib.vcxproj", "{4EA09877-C87B-489E-9F80-A921D8E66E46}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -26,36 +26,36 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Debug|x64.ActiveCfg = Debug|x64 {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Debug|x64.Build.0 = Debug|x64 - {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Debug|x86.ActiveCfg = Debug|Win32 - {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Debug|x86.Build.0 = Debug|Win32 - {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Release|x64.ActiveCfg = Release|x64 - {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Release|x64.Build.0 = Release|x64 - {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Release|x86.ActiveCfg = Release|Win32 - {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Release|x86.Build.0 = Release|Win32 - {843D77A9-6E04-4515-91D5-A010A5CDF8E0}.Debug|x64.ActiveCfg = Debug|x64 - {843D77A9-6E04-4515-91D5-A010A5CDF8E0}.Debug|x64.Build.0 = Debug|x64 - {843D77A9-6E04-4515-91D5-A010A5CDF8E0}.Debug|x86.ActiveCfg = Debug|Win32 - {843D77A9-6E04-4515-91D5-A010A5CDF8E0}.Debug|x86.Build.0 = Debug|Win32 - {843D77A9-6E04-4515-91D5-A010A5CDF8E0}.Release|x64.ActiveCfg = Release|x64 - {843D77A9-6E04-4515-91D5-A010A5CDF8E0}.Release|x64.Build.0 = Release|x64 - {843D77A9-6E04-4515-91D5-A010A5CDF8E0}.Release|x86.ActiveCfg = Release|Win32 - {843D77A9-6E04-4515-91D5-A010A5CDF8E0}.Release|x86.Build.0 = Release|Win32 + {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Debug|x86.ActiveCfg = Debug|x64 + {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Debug|x86.Build.0 = Debug|x64 + {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Release|x64.ActiveCfg = Debug|x64 + {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Release|x64.Build.0 = Debug|x64 + {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Release|x86.ActiveCfg = Debug|x64 + {990D865F-0DF2-40ED-8622-8DD0DB4A2128}.Release|x86.Build.0 = Debug|x64 {92DBD108-3D52-419D-BC33-217327A4AD9D}.Debug|x64.ActiveCfg = Debug|x64 {92DBD108-3D52-419D-BC33-217327A4AD9D}.Debug|x64.Build.0 = Debug|x64 - {92DBD108-3D52-419D-BC33-217327A4AD9D}.Debug|x86.ActiveCfg = Debug|Win32 - {92DBD108-3D52-419D-BC33-217327A4AD9D}.Debug|x86.Build.0 = Debug|Win32 - {92DBD108-3D52-419D-BC33-217327A4AD9D}.Release|x64.ActiveCfg = Release|x64 - {92DBD108-3D52-419D-BC33-217327A4AD9D}.Release|x64.Build.0 = Release|x64 - {92DBD108-3D52-419D-BC33-217327A4AD9D}.Release|x86.ActiveCfg = Release|Win32 - {92DBD108-3D52-419D-BC33-217327A4AD9D}.Release|x86.Build.0 = Release|Win32 + {92DBD108-3D52-419D-BC33-217327A4AD9D}.Debug|x86.ActiveCfg = Debug|x64 + {92DBD108-3D52-419D-BC33-217327A4AD9D}.Debug|x86.Build.0 = Debug|x64 + {92DBD108-3D52-419D-BC33-217327A4AD9D}.Release|x64.ActiveCfg = Debug|x64 + {92DBD108-3D52-419D-BC33-217327A4AD9D}.Release|x64.Build.0 = Debug|x64 + {92DBD108-3D52-419D-BC33-217327A4AD9D}.Release|x86.ActiveCfg = Debug|x64 + {92DBD108-3D52-419D-BC33-217327A4AD9D}.Release|x86.Build.0 = Debug|x64 {4EA09877-C87B-489E-9F80-A921D8E66E46}.Debug|x64.ActiveCfg = Debug|x64 {4EA09877-C87B-489E-9F80-A921D8E66E46}.Debug|x64.Build.0 = Debug|x64 - {4EA09877-C87B-489E-9F80-A921D8E66E46}.Debug|x86.ActiveCfg = Debug|Win32 - {4EA09877-C87B-489E-9F80-A921D8E66E46}.Debug|x86.Build.0 = Debug|Win32 - {4EA09877-C87B-489E-9F80-A921D8E66E46}.Release|x64.ActiveCfg = Release|x64 - {4EA09877-C87B-489E-9F80-A921D8E66E46}.Release|x64.Build.0 = Release|x64 - {4EA09877-C87B-489E-9F80-A921D8E66E46}.Release|x86.ActiveCfg = Release|Win32 - {4EA09877-C87B-489E-9F80-A921D8E66E46}.Release|x86.Build.0 = Release|Win32 + {4EA09877-C87B-489E-9F80-A921D8E66E46}.Debug|x86.ActiveCfg = Debug|x64 + {4EA09877-C87B-489E-9F80-A921D8E66E46}.Debug|x86.Build.0 = Debug|x64 + {4EA09877-C87B-489E-9F80-A921D8E66E46}.Release|x64.ActiveCfg = Debug|x64 + {4EA09877-C87B-489E-9F80-A921D8E66E46}.Release|x64.Build.0 = Debug|x64 + {4EA09877-C87B-489E-9F80-A921D8E66E46}.Release|x86.ActiveCfg = Debug|x64 + {4EA09877-C87B-489E-9F80-A921D8E66E46}.Release|x86.Build.0 = Debug|x64 + {E9C4227A-E42C-44DB-B52B-A29CC9E11111}.Debug|x64.ActiveCfg = Debug|x64 + {E9C4227A-E42C-44DB-B52B-A29CC9E11111}.Debug|x64.Build.0 = Debug|x64 + {E9C4227A-E42C-44DB-B52B-A29CC9E11111}.Debug|x86.ActiveCfg = Debug|x64 + {E9C4227A-E42C-44DB-B52B-A29CC9E11111}.Debug|x86.Build.0 = Debug|x64 + {E9C4227A-E42C-44DB-B52B-A29CC9E11111}.Release|x64.ActiveCfg = Debug|x64 + {E9C4227A-E42C-44DB-B52B-A29CC9E11111}.Release|x64.Build.0 = Debug|x64 + {E9C4227A-E42C-44DB-B52B-A29CC9E11111}.Release|x86.ActiveCfg = Debug|x64 + {E9C4227A-E42C-44DB-B52B-A29CC9E11111}.Release|x86.Build.0 = Debug|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/exercise/02/code.cpp b/exercise/02/code.cpp index 85e778c..1d59eba 100644 --- a/exercise/02/code.cpp +++ b/exercise/02/code.cpp @@ -1,2 +1,14 @@ #include "stdafx.h" #include "code.h" +#include + +void f1(int& a, int& b) +{ + std::swap(a, b); +} + +void f2(int* begin, int* end) +{ + if (begin > end) return; + std::transform(begin, end, begin, [](int n) {return n + 1; }); +} \ No newline at end of file diff --git a/exercise/02/code.h b/exercise/02/code.h index e69de29..716db83 100644 --- a/exercise/02/code.h +++ b/exercise/02/code.h @@ -0,0 +1,5 @@ + + +void f1(int& a, int& b); + +void f2(int* begin, int* end); \ No newline at end of file diff --git a/exercise/02/test1.cpp b/exercise/02/test1.cpp index 33dfab7..b8ca411 100644 --- a/exercise/02/test1.cpp +++ b/exercise/02/test1.cpp @@ -14,14 +14,14 @@ namespace simple_test TEST_METHOD(f1_changes_values) { int a=1, b=2; - //f1(a, b); + f1(a, b); Assert::AreEqual(2, a); Assert::AreEqual(1, b); } TEST_METHOD(f2_increases_all_values_by_one) { int arr[] = { 1, 2, 3 }; - //f2(arr, arr+3); + f2(arr, arr+3); Assert::AreEqual(2, arr[0]); Assert::AreEqual(3, arr[1]); Assert::AreEqual(4, arr[2]); @@ -29,12 +29,41 @@ namespace simple_test TEST_METHOD(f2_works_for_different_number_of_values) { int arr[] = { 2, 4, 6, 8, 10 }; - //f2(arr, arr+5); + f2(arr, arr+5); Assert::AreEqual(3, arr[0]); Assert::AreEqual(5, arr[1]); Assert::AreEqual(7, arr[2]); Assert::AreEqual(9, arr[3]); Assert::AreEqual(11, arr[4]); } + + TEST_METHOD(f2_custom_interval) + { + int arr[] = { 2, 4, 6, 8, 10 }; + f2(arr + 1, arr + 4); + Assert::AreEqual(2, arr[0]); + Assert::AreEqual(5, arr[1]); + Assert::AreEqual(7, arr[2]); + Assert::AreEqual(9, arr[3]); + Assert::AreEqual(10, arr[4]); + } + + TEST_METHOD(f2_wrong_size_too_small) + { + int arr[] = { 2, 4, 6 }; // OK + f2(arr, arr + 2); + Assert::AreEqual(3, arr[0]); + Assert::AreEqual(5, arr[1]); + Assert::AreEqual(6, arr[2]); + } + + TEST_METHOD(f2_end_to_begin) + { + int arr[] = { 2, 4, 6 }; + f2(arr + 2, arr); + Assert::AreEqual(2, arr[0]); + Assert::AreEqual(4, arr[1]); + Assert::AreEqual(6, arr[2]); + } }; }