-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDay05Tests.cs
81 lines (70 loc) · 1.7 KB
/
Day05Tests.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
namespace advent_of_code_csharp_2024;
public class Day05Tests
{
private static string _testInput = @"47|53
97|13
97|61
97|47
75|29
61|13
75|53
29|13
97|29
53|29
61|53
97|53
61|29
47|13
75|47
97|75
47|61
75|61
47|29
75|13
53|13
75,47,61,53,29
97,61,53,29,13
75,29,13
75,97,47,61,53
61,13,29
97,13,75,29,47";
public static readonly string InputFilename = @"../../../Day05_input.txt";
[Fact]
public void ToUpdateValueTests()
{
var lines = _testInput.Split(Environment.NewLine);
var (pageOrderingRules, pageNumbersUpdates) = Day05.SplitInput(lines);
var rules = Day05.ParseRules(pageOrderingRules);
var updates = Day05.ParseUpdate(pageNumbersUpdates).ToList();
Assert.Equal(61, Day05.ToUpdateValue(updates[0], rules));
Assert.Equal(0, Day05.ToUpdateValue(updates[4], rules));
}
[Fact]
public void Example_Part1()
{
var lines = _testInput.Split(Environment.NewLine);
Assert.Equal(143, Day05.Solver(lines));
}
[Fact]
public void RealData_Part1()
{
var lines = File.ReadAllLines(InputFilename);
Assert.Equal(5651, Day05.Solver(lines));
}
[Fact]
public void ParseRulesTest()
{
var lines = _testInput.Split(Environment.NewLine);
var (pageOrderingRules, _) = Day05.SplitInput(lines);
var rules = Day05.ParseRules(pageOrderingRules);
Assert.Equal(rules[97], [13, 61, 47, 29, 53, 75]);
}
[Fact]
public void ParseUpdatesTest()
{
var lines = _testInput.Split(Environment.NewLine);
var (_, pageNumbersUpdates) = Day05.SplitInput(lines);
var updates = Day05.ParseUpdate(pageNumbersUpdates);
Assert.Equal(updates.First(), [75, 47, 61, 53, 29]);
}
}