-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDayThreeParserTests.cpp
39 lines (31 loc) · 1.47 KB
/
DayThreeParserTests.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//
// Created by Aidan Nagorcka-Smith on 30/12/2022.
//
#include <gtest/gtest.h>
#include <nanobench.h>
#include "DayThreeParser.h"
namespace AdventOfCode::DayThree::Parser {
constexpr int kDayThreeInputNumberOfRounds = 300;
constexpr int kRucksackOneCompartmentOneItemOnePriority = 17;
constexpr int kRucksackOneCompartmentTwoItemOnePriority = 10;
TEST(DayThreeParser, Parses) {
auto rucksacks = parseFilePuzzleOne(kDayThreeInputFilePath);
EXPECT_EQ(kDayThreeInputNumberOfRounds, rucksacks.size());
EXPECT_EQ(kRucksackOneCompartmentOneItemOnePriority, rucksacks.at(0).compartmentOne().items().at(0).priority());
EXPECT_EQ(kRucksackOneCompartmentTwoItemOnePriority, rucksacks.at(0).compartmentTwo().items().at(0).priority());
}
TEST(DayThreeParser, benchmarkParseComplete) {
ankerl::nanobench::Bench().run("Day 3 Parse - Batch", [&]() {
ankerl::nanobench::doNotOptimizeAway(Parser::parseFilePuzzleOne(Parser::kDayThreeInputFilePath));
});
}
TEST(DayThreeParser, benchmarkParseWithCallback) {
ankerl::nanobench::Bench().run("Day 3 Parse - Callback", [&]() {
std::vector<Rucksack> rucksacks;
Parser::parseFile(Parser::kDayThreeInputFilePath, [&](auto &&rucksack) {
rucksacks.push_back(std::forward<decltype(rucksack)>(rucksack));
});
ankerl::nanobench::doNotOptimizeAway(rucksacks);
});
}
} // AdventOfCode::DayTwo::Parser