Increasing script robustness and adding file nil checking
This commit is contained in:
parent
bd331a2068
commit
dea6910f07
9 changed files with 179 additions and 14 deletions
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
43
2024/main.go
43
2024/main.go
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue