Increasing script robustness and adding file nil checking

This commit is contained in:
Ceferino Patino 2024-12-08 13:24:02 -06:00
commit dea6910f07
Signed by: c4patino
SSH key fingerprint: SHA256:Wu+cU1t+7zVT9wzew/4meNmeulo66NzMqc22MdDBgXI
9 changed files with 179 additions and 14 deletions

View file

@ -23,3 +23,22 @@ func TestDay1(t *testing.T) {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}
func TestDay1Solutions(t *testing.T) {
filename := "input.txt"
if _, err := os.Stat(filename); os.IsNotExist(err) {
t.Fatalf("test file does not exist: %v", filename)
}
part1, part2 := Run(filename)
expectedPart1 := 1258579
if part1 != expectedPart1 {
t.Fatalf("unexpected part1:\nwant:\t%d\ngot:\t%d", expectedPart1, part1)
}
expectedPart2 := 23981443
if part2 != expectedPart2 {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}

View file

@ -23,3 +23,22 @@ func TestDay2(t *testing.T) {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}
func TestDay2Solution(t *testing.T) {
filename := "input.txt"
if _, err := os.Stat(filename); os.IsNotExist(err) {
t.Fatalf("test file does not exist: %v", filename)
}
part1, part2 := Run(filename)
expectedPart1 := 663
if part1 != expectedPart1 {
t.Fatalf("unexpected part1:\nwant:\t%d\ngot:\t%d", expectedPart1, part1)
}
expectedPart2 := 692
if part2 != expectedPart2 {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}

View file

@ -23,3 +23,22 @@ func TestDay3(t *testing.T) {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}
func TestDay3Solution(t *testing.T) {
filename := "input.txt"
if _, err := os.Stat(filename); os.IsNotExist(err) {
t.Fatalf("test file does not exist: %v", filename)
}
part1, part2 := Run(filename)
expectedPart1 := 187833789
if part1 != expectedPart1 {
t.Fatalf("unexpected part1:\nwant:\t%d\ngot:\t%d", expectedPart1, part1)
}
expectedPart2 := 94455185
if part2 != expectedPart2 {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}

View file

@ -23,3 +23,22 @@ func TestDay4(t *testing.T) {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}
func TestDay4Solution(t *testing.T) {
filename := "input.txt"
if _, err := os.Stat(filename); os.IsNotExist(err) {
t.Fatalf("test file does not exist: %v", filename)
}
part1, part2 := Run(filename)
expectedPart1 := 2603
if part1 != expectedPart1 {
t.Fatalf("unexpected part1:\nwant:\t%d\ngot:\t%d", expectedPart1, part1)
}
expectedPart2 := 1965
if part2 != expectedPart2 {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}

View file

@ -23,3 +23,22 @@ func TestDay5(t *testing.T) {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}
func TestDay5Solution(t *testing.T) {
filename := "input.txt"
if _, err := os.Stat(filename); os.IsNotExist(err) {
t.Fatalf("test file does not exist: %v", filename)
}
part1, part2 := Run(filename)
expectedPart1 := 6498
if part1 != expectedPart1 {
t.Fatalf("unexpected part1:\nwant:\t%d\ngot:\t%d", expectedPart1, part1)
}
expectedPart2 := 5017
if part2 != expectedPart2 {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}

View file

@ -23,3 +23,22 @@ func TestDay6(t *testing.T) {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}
func TestDay6Solution(t *testing.T) {
filename := "input.txt"
if _, err := os.Stat(filename); os.IsNotExist(err) {
t.Fatalf("test file does not exist: %v", filename)
}
part1, part2 := Run(filename)
expectedPart1 := 5101
if part1 != expectedPart1 {
t.Fatalf("unexpected part1:\nwant:\t%d\ngot:\t%d", expectedPart1, part1)
}
expectedPart2 := 1951
if part2 != expectedPart2 {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}

View file

@ -23,3 +23,22 @@ func TestDay7(t *testing.T) {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}
func TestDay7Solution(t *testing.T) {
filename := "input.txt"
if _, err := os.Stat(filename); os.IsNotExist(err) {
t.Fatalf("test file does not exist: %v", filename)
}
part1, part2 := Run(filename)
expectedPart1 := 303876485655
if part1 != expectedPart1 {
t.Fatalf("unexpected part1:\nwant:\t%d\ngot:\t%d", expectedPart1, part1)
}
expectedPart2 := 146111650210682
if part2 != expectedPart2 {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}

View file

@ -23,3 +23,22 @@ func TestDay8(t *testing.T) {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}
func TestDay8Solution(t *testing.T) {
filename := "input.txt"
if _, err := os.Stat(filename); os.IsNotExist(err) {
t.Fatalf("test file does not exist: %v", filename)
}
part1, part2 := Run(filename)
expectedPart1 := 327
if part1 != expectedPart1 {
t.Fatalf("unexpected part1:\nwant:\t%d\ngot:\t%d", expectedPart1, part1)
}
expectedPart2 := 1233
if part2 != expectedPart2 {
t.Fatalf("unexpected part2:\nwant:\t%d\ngot:\t%d", expectedPart2, part2)
}
}

View file

@ -3,6 +3,7 @@ package main
import (
"flag"
"fmt"
"os"
"strconv"
"cpatino.com/advent-of-code/2024/day1"
@ -16,37 +17,49 @@ import (
)
func main() {
var fileArg = flag.String("file", "", "input filename")
flag.Parse()
if len(flag.Args()) != 2 {
panic("Usage: go run . <day> <input file>")
args := flag.Args()
if len(flag.Args()) == 0 {
fmt.Println("Usage: go run . [OPTIONS] <day>")
os.Exit(1)
}
day, inputFile := flag.Args()[0], flag.Args()[1]
if _, err := strconv.Atoi(day); err != nil {
panic("Please provide a valid numeric day")
day, err := strconv.Atoi(args[0])
if err != nil {
panic(err)
}
fmt.Printf("Day: %s, Input File: %s\n", day, inputFile)
var inputFile = fmt.Sprintf("day%d/input.txt", day)
if *fileArg != "" {
inputFile = *fileArg
}
if _, err := os.Stat(inputFile); os.IsNotExist(err) {
fmt.Println("test file does not exist: %v", inputFile)
os.Exit(1)
}
fmt.Printf("Day: %d, Input File: %s\n", day, inputFile)
var part1, part2 int
switch day {
case "1":
case 1:
part1, part2 = day1.Run(inputFile)
case "2":
case 2:
part1, part2 = day2.Run(inputFile)
case "3":
case 3:
part1, part2 = day3.Run(inputFile)
case "4":
case 4:
part1, part2 = day4.Run(inputFile)
case "5":
case 5:
part1, part2 = day5.Run(inputFile)
case "6":
case 6:
part1, part2 = day6.Run(inputFile)
case "7":
case 7:
part1, part2 = day7.Run(inputFile)
case "8":
case 8:
part1, part2 = day8.Run(inputFile)
}