AoC code coverage
Current view: top level - puzzles - Puzzle.h (source / functions) Coverage Total Hit
Test: master Lines: 47.1 % 17 8
Test Date: 2025-12-11 19:43:23 Functions: 72.7 % 11 8

            Line data    Source code
       1              : #pragma once
       2              : 
       3              : #include <chrono>
       4              : #include <string>
       5              : #include <string_view>
       6              : #include <vector>
       7              : 
       8              : class Puzzle {
       9              : public:
      10              :   using Day = std::chrono::day;
      11              :   using Year = std::chrono::year;
      12              : 
      13              :   Puzzle(Year const year_, Day const day_);
      14              : 
      15        11628 :   virtual ~Puzzle() = default;
      16              : 
      17        11628 :   [[nodiscard]] Year year() const { return _year; }
      18        11628 :   [[nodiscard]] Day day() const { return _day; }
      19              :   [[nodiscard]] std::string const name() const;
      20              : 
      21          152 :   [[nodiscard]] std::string_view input() const { return _input; }
      22           76 :   [[nodiscard]] std::string_view solutionPart1() const { return _solutionPart1; }
      23           76 :   [[nodiscard]] std::string_view solutionPart2() const { return _solutionPart2; }
      24              : 
      25              :   virtual std::string runPart1(std::string_view const input) const = 0; // NOLINT
      26              :   virtual std::string runPart2(std::string_view const input) const = 0; // NOLINT
      27              : 
      28           76 :   [[nodiscard]] std::string runPart1() const { return runPart1(input()); }
      29           76 :   [[nodiscard]] std::string runPart2() const { return runPart2(input()); }
      30              : 
      31              :   [[nodiscard]] static Year latestYear();
      32              :   [[nodiscard]] static Day latestDay(Year const year);
      33              :   [[nodiscard]] static std::unique_ptr<Puzzle> create(Year const year, Day const day);
      34            0 :   [[nodiscard]] static std::unique_ptr<Puzzle> create(Day const day) {
      35            0 :     return create(latestYear(), day);
      36            0 :   };
      37            0 :   [[nodiscard]] static std::unique_ptr<Puzzle> createLatest() {
      38            0 :     return create(latestDay(latestYear()));
      39            0 :   };
      40              :   [[nodiscard]] static std::vector<std::unique_ptr<Puzzle>> createAll();
      41              :   [[nodiscard]] static std::vector<std::unique_ptr<Puzzle>> createAll(Year const year);
      42            0 :   [[nodiscard]] static std::vector<std::unique_ptr<Puzzle>> createAllLatestYear() {
      43            0 :     return createAll(latestYear());
      44            0 :   };
      45              : 
      46              : private:
      47              :   Year _year;
      48              :   Day _day;
      49              :   std::string _input;
      50              :   std::string _solutionPart1;
      51              :   std::string _solutionPart2;
      52              : };
        

Generated by: LCOV version 2.0-1