50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
const test = `1 package main
|
|
2
|
|
3 import (
|
|
4 "fmt"
|
|
5 )
|
|
6
|
|
7 func main() {
|
|
8 fmt.Println("Hello World")
|
|
9 }`
|
|
|
|
func TestCut(t *testing.T) {
|
|
tests := []struct {
|
|
input string
|
|
lines []int
|
|
expected string
|
|
}{
|
|
{"", []int{0, 0}, ""},
|
|
{"Hello World", []int{0, 0}, "Hello World"},
|
|
{"Hello World", []int{0, 1}, "Hello World"},
|
|
{"Hello World", []int{0, 10}, "Hello World"},
|
|
{"Hello World", []int{10, 10}, ""},
|
|
{test, []int{0, 10}, test},
|
|
{test, []int{0, 1}, "1 package main\n2 "},
|
|
{test, []int{1, 2}, "2 \n3 import ("},
|
|
{test, []int{2, 4}, "3 import (\n4 \"fmt\"\n5 )"},
|
|
{test, []int{6}, "7 func main() {\n8 fmt.Println(\"Hello World\")\n9 }"},
|
|
{test, []int{-3}, "7 func main() {\n8 fmt.Println(\"Hello World\")\n9 }"},
|
|
{test, []int{-2}, "8 fmt.Println(\"Hello World\")\n9 }"},
|
|
{test, []int{-1}, "9 }"},
|
|
{test, []int{0, 9}, test},
|
|
{test, []int{6, 6}, "7 func main() {"},
|
|
{test, []int{7, 7}, "8 fmt.Println(\"Hello World\")"},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
actual := cut(test.input, test.lines)
|
|
if actual != test.expected {
|
|
t.Log(actual)
|
|
t.Log(test.expected)
|
|
t.Errorf("cut(%s, %v)", test.input, test.lines)
|
|
}
|
|
}
|
|
}
|