84 lines
1.7 KiB
Go
84 lines
1.7 KiB
Go
package file_test
|
|
|
|
import (
|
|
"slices"
|
|
"testing"
|
|
|
|
"github.com/StevanFreeborn/advent-of-code-2025/internal/file"
|
|
)
|
|
|
|
func TestAllReadLines(t *testing.T) {
|
|
expectedLines := []string{
|
|
"hello",
|
|
"world",
|
|
}
|
|
|
|
result := file.ReadAllLines("test.txt")
|
|
|
|
if slices.Equal(result, expectedLines) == false {
|
|
t.Errorf("got %s but expected %s", result, expectedLines)
|
|
}
|
|
}
|
|
|
|
func TestReadAllText(t *testing.T) {
|
|
expectedText := "hello\r\nworld\r\n"
|
|
|
|
result := file.ReadAllText("test.txt")
|
|
|
|
if result != expectedText {
|
|
t.Errorf("got %q but expected %q", result, expectedText)
|
|
}
|
|
}
|
|
|
|
func TestReadLines(t *testing.T) {
|
|
t.Run("it should return an empty line if the file does not exist", func(t *testing.T) {
|
|
expectedLines := []string{""}
|
|
lines := []string{}
|
|
|
|
for line := range file.ReadLines("non-existent-file.txt") {
|
|
lines = append(lines, line)
|
|
}
|
|
|
|
if slices.Equal(lines, expectedLines) == false {
|
|
t.Errorf("got %s but expected %s", lines, expectedLines)
|
|
}
|
|
})
|
|
|
|
t.Run("it should read all lines from the file", func(t *testing.T) {
|
|
expectedLines := []string{
|
|
"hello",
|
|
"world",
|
|
}
|
|
|
|
lines := []string{}
|
|
|
|
for line := range file.ReadLines("test.txt") {
|
|
lines = append(lines, line)
|
|
}
|
|
|
|
if slices.Equal(lines, expectedLines) == false {
|
|
t.Errorf("got %s but expected %s", lines, expectedLines)
|
|
}
|
|
})
|
|
|
|
t.Run("it should stop reading lines when iteration is stopped", func(t *testing.T) {
|
|
expectedLines := []string{
|
|
"hello",
|
|
}
|
|
|
|
lines := []string{}
|
|
|
|
for line := range file.ReadLines("test.txt") {
|
|
if len(lines) >= 1 {
|
|
break
|
|
}
|
|
|
|
lines = append(lines, line)
|
|
}
|
|
|
|
if slices.Equal(lines, expectedLines) == false {
|
|
t.Errorf("got %s but expected %s", lines, expectedLines)
|
|
}
|
|
})
|
|
}
|