-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRockPaperScissorsTests.cpp
37 lines (29 loc) · 1.34 KB
/
RockPaperScissorsTests.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
//
// Created by Aidan Nagorcka-Smith on 30/12/2022.
//
#include <gtest/gtest.h>
#include <nanobench.h>
#include "RockPaperScissors.h"
namespace AdventOfCode::DayTwo::RockPaperScissors {
TEST(RockPaperScissors, roundCreation) {
const auto round = RockPaperScissors::Round(Selection::kPaper, Selection::kRock);
EXPECT_EQ(kPaper, round.playerOneSelection());
EXPECT_EQ(kRock, round.playerTwoSelection());
}
TEST(RockPaperScissors, resultCalculation) {
EXPECT_EQ(kPlayerOneWin, resultFromRound({kRock, kScissors}));
EXPECT_EQ(kPlayerOneWin, resultFromRound({kPaper, kRock}));
EXPECT_EQ(kPlayerOneWin, resultFromRound({kScissors, kPaper}));
EXPECT_EQ(kDraw, resultFromRound({kRock, kRock}));
EXPECT_EQ(kDraw, resultFromRound({kScissors, kScissors}));
EXPECT_EQ(kDraw, resultFromRound({kPaper, kPaper}));
EXPECT_EQ(kPlayerTwoWin, resultFromRound({kScissors, kRock}));
EXPECT_EQ(kPlayerTwoWin, resultFromRound({kRock, kPaper}));
EXPECT_EQ(kPlayerTwoWin, resultFromRound({kPaper, kScissors}));
}
TEST(RockPaperScissors, roundCreationBenchmark) {
ankerl::nanobench::Bench().run("Day 2 - Rock, Paper, Scissors round creation", [&]() {
ankerl::nanobench::doNotOptimizeAway(RockPaperScissors::Round(kRock, kPaper));
});
}
}