no this isn't about alexandria ocasio-cortez
at main 96 lines 2.0 kB view raw
1package main 2 3import ( 4 "os" 5 "testing" 6 7 "tangled.org/evan.jarrett.net/aoc2025/internal" 8) 9 10const testInput = `11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124` 11 12func TestPart1(t *testing.T) { 13 d := &DayTwo{} 14 if err := d.ParseInput(testInput); err != nil { 15 t.Fatalf("ParseInput failed: %v", err) 16 } 17 18 got, err := d.Part1() 19 if err != nil { 20 t.Fatalf("Part1 failed: %v", err) 21 } 22 23 want := 1227775554 24 if got != want { 25 t.Errorf("Part1() = %d, want %d", got, want) 26 } 27} 28 29func TestPart2(t *testing.T) { 30 d := &DayTwo{} 31 if err := d.ParseInput(testInput); err != nil { 32 t.Fatalf("ParseInput failed: %v", err) 33 } 34 35 got, err := d.Part2() 36 if err != nil { 37 t.Fatalf("Part2 failed: %v", err) 38 } 39 40 want := 4174379265 41 if got != want { 42 t.Errorf("Part2() = %d, want %d", got, want) 43 } 44} 45 46// getRealInput loads the real puzzle input, caching it to a file to avoid 47// repeated network calls during benchmarks. 48func getRealInput(b *testing.B) string { 49 b.Helper() 50 const cacheFile = "testdata/input.txt" 51 52 // Try to read from cache first 53 if data, err := os.ReadFile(cacheFile); err == nil { 54 return string(data) 55 } 56 57 // Fetch from AOC and cache it 58 input, err := internal.GetInput(2) 59 if err != nil { 60 b.Skipf("Could not fetch real input: %v", err) 61 } 62 63 // Cache for future runs 64 _ = os.MkdirAll("testdata", 0755) 65 _ = os.WriteFile(cacheFile, []byte(input), 0644) 66 67 return input 68} 69 70func BenchmarkPart1(b *testing.B) { 71 input := getRealInput(b) 72 73 d := &DayTwo{} 74 if err := d.ParseInput(input); err != nil { 75 b.Fatalf("ParseInput failed: %v", err) 76 } 77 78 b.ResetTimer() 79 for i := 0; i < b.N; i++ { 80 d.Part1() 81 } 82} 83 84func BenchmarkPart2(b *testing.B) { 85 input := getRealInput(b) 86 87 d := &DayTwo{} 88 if err := d.ParseInput(input); err != nil { 89 b.Fatalf("ParseInput failed: %v", err) 90 } 91 92 b.ResetTimer() 93 for i := 0; i < b.N; i++ { 94 d.Part2() 95 } 96}