Docs

Unit Testing

πŸš€ Complete C++ Learning Path: Beginner to Advanced

Welcome to your comprehensive C++ learning journey! This structured curriculum will take you from absolute beginner to advanced C++ developer.

πŸ“š How to Use This Repository

  1. β€’Follow the modules in order - Each module builds upon previous concepts
  2. β€’Read the theory files - Understand the concepts before coding
  3. β€’Run the examples - Compile and execute each example to see how it works
  4. β€’Complete the exercises - Practice makes perfect
  5. β€’Build the projects - Apply what you've learned

πŸ”§ Compilation Commands

# Basic compilation
g++ filename.cpp -o output

# With C++17 standard (recommended)
g++ -std=c++17 filename.cpp -o output

# With C++20 standard (for modern features)
g++ -std=c++20 filename.cpp -o output

# With debugging symbols
g++ -std=c++17 -g filename.cpp -o output

# With warnings (always use this!)
g++ -std=c++17 -Wall -Wextra filename.cpp -o output

πŸ“‚ Course Structure

MODULE 1: FOUNDATIONS (Weeks 1-2)

01_Foundations/

TopicDescription
01_IntroductionWhat is C++, compilation process, first program
02_Syntax_And_StructureProgram structure, statements, blocks
03_Input_Outputcin/cout, formatting, file streams basics
04_Variables_And_Data_TypesPrimitives, constants, scope rules
05_OperatorsArithmetic, logical, bitwise, precedence
06_Control_Flowif/else, switch, loops (for, while, do-while)
07_Preprocessor_Namespaces#include, #define, macros, namespace usage

MODULE 2: WORKING WITH DATA (Week 3)

02_Working_With_Data/

TopicDescription
01_ArraysFixed-size arrays, multidimensional arrays
02_VectorsDynamic arrays, vector operations
03_StringsC-strings, std::string, manipulation
04_Enums_Structs_UnionsUser-defined types, enum class, POD structs
05_Type_Castingstatic_cast, dynamic_cast, const_cast, reinterpret_cast

MODULE 3: FUNCTIONS (Week 4)

03_Functions/

TopicDescription
01_Function_BasicsDeclaration, definition, calling conventions
02_ParametersPass by value, reference, pointer, default args
03_Function_OverloadingSame name, different signatures
04_RecursionSelf-calling functions, base cases
05_Inline_LambdaInline optimization, lambda expressions

MODULE 4: POINTERS & MEMORY (Weeks 5-6)

04_Pointers_Memory/

TopicDescription
01_PointersAddresses, dereferencing, pointer arithmetic
02_ReferencesAliases, reference vs pointer
03_Dynamic_Memorynew/delete, memory leaks, RAII intro
04_Smart_Pointersunique_ptr, shared_ptr, weak_ptr

MODULE 5: OOP BASICS (Weeks 7-9)

05_OOP_Basics/

TopicDescription
01_ClassesClass definition, objects, member functions
02_EncapsulationAccess specifiers, getters/setters
03_InheritanceBase/derived classes, protected members
04_PolymorphismVirtual functions, overriding, vtable
05_Operator_OverloadingCustom operators for user types
06_Rule_Of_Five_RAIIDestructor, copy/move semantics, resource management
07_Friends_FunctorsFriend functions/classes, callable objects

MODULE 6: ADVANCED OOP (Week 10)

06_Advanced_OOP/

TopicDescription
01_Abstract_ClassesPure virtual functions, interfaces
02_Virtual_InheritanceDiamond problem solution
03_Object_RelationshipsComposition, aggregation, association

MODULE 7: TEMPLATES (Weeks 11-12)

07_Templates/

TopicDescription
01_Function_TemplatesGeneric functions
02_Class_TemplatesGeneric classes
03_Advanced_TemplatesVariadic templates, SFINAE, concepts

MODULE 8: STL (Weeks 13-15)

08_STL/

TopicDescription
01_Containersvector, list, deque, map, set, unordered_*
02_IteratorsCategories, operations, custom iterators
03_Algorithmssort, find, transform, accumulate, etc.

MODULE 9: ADVANCED TOPICS (Week 16)

09_Advanced_Topics/

TopicDescription
01_File_HandlingFile streams, text/binary I/O
02_Exceptionstry/catch/throw, custom exceptions, RAII
03_Modern_CppC++11/14/17/20/23 features including:
β€’ Concepts, Ranges, Coroutines
β€’ std::format, std::span, std::expected
β€’ Three-way comparison (spaceship operator)
β€’ Modules, consteval, deducing this

MODULE 10: EXPERT TOPICS (Weeks 17-20)

10_Expert_Topics/

TopicDescription
01_Multithreadingthreads, mutex, condition_variable, async/future
02_NetworkingSockets, TCP/UDP, client-server
03_Design_PatternsCreational, structural, behavioral patterns
04_GraphicsSFML basics, game loop, sprites

MODULE 11: BUILD TOOLS & TESTING (Week 21)

11_Build_Tools_Testing/

TopicDescription
01_CMakeCross-platform build system, CMakeLists.txt
02_DebuggingGDB commands, breakpoints, memory inspection
03_Unit_TestingGoogle Test framework, assertions, fixtures

πŸ“‹ Each Topic Contains

FilePurpose
README.mdTheory, concepts, ASCII diagrams, reference guide
examples.cppWorking code demonstrations
exercises.cppPractice problems with answer keys

🎯 Learning Tips

  1. β€’Type the code yourself - Don't copy-paste, muscle memory matters
  2. β€’Experiment - Modify examples and see what happens
  3. β€’Debug actively - Learn to read error messages
  4. β€’Build projects - Apply concepts in real scenarios
  5. β€’Review regularly - Spaced repetition helps retention

πŸ› οΈ Prerequisites

  • β€’A C++ compiler (g++, clang++, or MSVC)
  • β€’A text editor or IDE (VS Code recommended)
  • β€’Basic computer literacy

πŸ“¦ Special Compilation Flags

# For Multithreading (Module 10)
g++ -std=c++17 -pthread file.cpp -o file

# For Graphics/SFML (Module 10)
sudo apt install libsfml-dev
g++ -std=c++17 file.cpp -lsfml-graphics -lsfml-window -lsfml-system -o file

# For Unit Testing with Google Test (Module 11)
g++ -std=c++17 file.cpp -lgtest -lgtest_main -pthread -o test

# For C++20/23 features (Module 9)
g++ -std=c++20 file.cpp -o file
g++ -std=c++23 file.cpp -o file  # Requires GCC 13+ or Clang 17+

πŸ“Š Progress Tracker

  • β€’ Module 1: Foundations (7 topics)
  • β€’ Module 2: Working With Data (5 topics)
  • β€’ Module 3: Functions (5 topics)
  • β€’ Module 4: Pointers & Memory (4 topics)
  • β€’ Module 5: OOP Basics (7 topics)
  • β€’ Module 6: Advanced OOP (3 topics)
  • β€’ Module 7: Templates (3 topics)
  • β€’ Module 8: STL (3 topics)
  • β€’ Module 9: Advanced Topics (3 topics)
  • β€’ Module 10: Expert Topics (4 topics)
  • β€’ Module 11: Build Tools & Testing (3 topics)

Total: 11 Modules, 47 Topics


πŸ—ΊοΈ Visual Learning Path

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        C++ LEARNING ROADMAP                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                          β”‚
β”‚   BEGINNER                 INTERMEDIATE              ADVANCED            β”‚
β”‚   ────────                 ────────────              ────────            β”‚
β”‚                                                                          β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚
β”‚   β”‚Module 1  β”‚            β”‚Module 5  β”‚            β”‚Module 9  β”‚          β”‚
β”‚   β”‚Foundationsβ”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚OOP Basicsβ”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚Modern C++β”‚          β”‚
β”‚   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜          β”‚
β”‚        β”‚                       β”‚                       β”‚                 β”‚
β”‚        β–Ό                       β–Ό                       β–Ό                 β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚
β”‚   β”‚Module 2  β”‚            β”‚Module 6  β”‚            β”‚Module 10 β”‚          β”‚
β”‚   β”‚Data Typesβ”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚Adv. OOP  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚Expert    β”‚          β”‚
β”‚   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜          β”‚
β”‚        β”‚                       β”‚                       β”‚                 β”‚
β”‚        β–Ό                       β–Ό                       β–Ό                 β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚
β”‚   β”‚Module 3  β”‚            β”‚Module 7  β”‚            β”‚Module 11 β”‚          β”‚
β”‚   β”‚Functions β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚Templates β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚Build/Testβ”‚          β”‚
β”‚   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β”‚
β”‚        β”‚                       β”‚                                         β”‚
β”‚        β–Ό                       β–Ό                                         β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                  β”‚
β”‚   β”‚Module 4  β”‚            β”‚Module 8  β”‚                                  β”‚
β”‚   β”‚Pointers  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚STL       β”‚                                  β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                  β”‚
β”‚                                                                          β”‚
β”‚   Estimated Time: 20-24 weeks (part-time study)                         β”‚
β”‚                                                                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Let's begin your C++ journey! Start with 01_Foundations/01_Introduction/

Happy Coding! πŸŽ‰

Unit Testing - C++ Tutorial | DeepML