67 lines
1.1 KiB
Go
67 lines
1.1 KiB
Go
package bbutil
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestAddLinesToSortedFile(t *testing.T) {
|
|
|
|
var tests = []struct {
|
|
start string
|
|
add []string
|
|
expected string
|
|
}{
|
|
{
|
|
"",
|
|
[]string{"one"},
|
|
"one\n",
|
|
},
|
|
{
|
|
"begin\ntwo\n",
|
|
[]string{"at top"},
|
|
"at top\nbegin\ntwo\n",
|
|
},
|
|
{
|
|
"begin\ntwo\n",
|
|
[]string{"zbottom"},
|
|
"begin\ntwo\nzbottom\n",
|
|
},
|
|
{
|
|
"begin\ntwo\n",
|
|
[]string{"middle"},
|
|
"begin\nmiddle\ntwo\n",
|
|
},
|
|
}
|
|
|
|
for i, test := range tests {
|
|
content := []byte(test.start)
|
|
tmpfile, err := ioutil.TempFile("", "example")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
tmpfilename := tmpfile.Name()
|
|
defer os.Remove(tmpfilename)
|
|
|
|
if _, err := tmpfile.Write(content); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := tmpfile.Close(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
AddLinesToSortedFile(tmpfilename, test.add...)
|
|
expected := test.expected
|
|
|
|
got, err := ioutil.ReadFile(tmpfilename)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if expected != string(got) {
|
|
t.Errorf("test %v: contents wrong:\nexpected: %q\n got: %q", i, expected, got)
|
|
}
|
|
os.Remove(tmpfilename)
|
|
}
|
|
|
|
}
|