-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDay06Tests.cs
124 lines (88 loc) · 2.53 KB
/
Day06Tests.cs
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
namespace advent_of_code_csharp_2024;
using advent_of_code_csharp_2024.Day06;
public class Day06Tests
{
public static readonly string InputFilename = @"../../../Day06_input.txt";
private static string _testInput = @"....#.....
.........#
..........
..#.......
.......#..
..........
.#..^.....
........#.
#.........
......#...
";
private static string _testInput2 = @"###
#.#
...
.^.";
// Start cell x : 4
// Start cell y : 6
[Fact]
public void LoadCellsTest()
{
var cells = Cells.FromText(_testInput);
Assert.Equal("....#.....".ToCharArray(), cells[0]);
}
[Fact]
public void GetStartPositionTest()
{
var cells = Cells.FromText(_testInput);
var startCellPosition = cells.GetStartPosition();
Assert.Equal(new Position(4, 6), startCellPosition);
}
[Fact]
public void GetCellAtPosition()
{
var cells = Cells.FromText(_testInput);
char cell = cells.GetCell(new Position(4, 6));
Assert.Equal('^', cell);
}
[Fact]
public void MoveAndTurnAFewTimeTest()
{
var cells = Cells.FromText(_testInput);
var startCellPosition = cells.GetStartPosition();
Guard guard = new Guard(startCellPosition, Direction.Up);
guard.Move(cells);
Assert.Equal(new Position(4, 5), guard.Position);
Assert.Equal(Direction.Up, guard.Direction);
guard.Move(cells);
guard.Move(cells);
guard.Move(cells);
guard.Move(cells);
Assert.Equal(new Position(4, 1), guard.Position);
guard.Move(cells);
Assert.Equal(Direction.Right, guard.Direction);
Assert.Equal(new Position(5, 1), guard.Position);
}
[Fact]
public void Example_partI()
{
var cells = Cells.FromText(_testInput);
var startCellPosition = cells.GetStartPosition();
Guard guard = new Guard(startCellPosition, Direction.Up);
guard.DoRun(cells);
Assert.Equal(41,cells.VisitCount());
}
[Fact]
public void Real_partI()
{
var cells = Cells.FromLines(File.ReadLines(InputFilename));
var startCellPosition = cells.GetStartPosition();
Guard guard = new Guard(startCellPosition, Direction.Up);
guard.DoRun(cells);
// To Low...
Assert.Equal(4559,cells.VisitCount());
}
[Fact]
public void Edge_case_1(){
var cells = Cells.FromText(_testInput2);
var startCellPosition = cells.GetStartPosition();
Guard guard = new Guard(startCellPosition, Direction.Up);
guard.DoRun(cells);
Assert.Equal(3,cells.VisitCount());
}
}