test main
parent
215625a482
commit
683bd62b87
26
main.go
26
main.go
|
|
@ -2,6 +2,7 @@ package main
|
|||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"errors"
|
||||
"flag"
|
||||
"io"
|
||||
|
|
@ -9,6 +10,8 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
stdin io.Reader = os.Stdin
|
||||
stdout io.Writer = os.Stdout
|
||||
columnDelimiter string
|
||||
pageDelimiter string
|
||||
minimumInstances int
|
||||
|
|
@ -19,20 +22,26 @@ func main() {
|
|||
flag.StringVar(&columnDelimiter, "d", " ", "column delimiter character")
|
||||
flag.IntVar(&minimumInstances, "m", 2, "minimum non-leading instances of delimiter to break a column")
|
||||
flag.Parse()
|
||||
if err := _main(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
r := bufio.NewReader(os.Stdin)
|
||||
func _main() error {
|
||||
r := bufio.NewReader(stdin)
|
||||
for {
|
||||
b, err := readPage(r)
|
||||
if err != nil && err != io.EOF {
|
||||
panic(err)
|
||||
return err
|
||||
}
|
||||
if err := putPage(b); err != nil {
|
||||
panic(err)
|
||||
return err
|
||||
}
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func readPage(r *bufio.Reader) ([]byte, error) {
|
||||
|
|
@ -48,5 +57,16 @@ func _readPage(d byte, r *bufio.Reader) ([]byte, error) {
|
|||
}
|
||||
|
||||
func putPage(b []byte) error {
|
||||
return _putPage(stdout, b)
|
||||
}
|
||||
|
||||
func _putPage(w io.Writer, b []byte) error {
|
||||
for _, line := range lines(b) {
|
||||
_ = line
|
||||
}
|
||||
return errors.New("not impl")
|
||||
}
|
||||
|
||||
func lines(b []byte) [][]byte {
|
||||
return bytes.Split(b, []byte{'\n'})
|
||||
}
|
||||
|
|
|
|||
13
main_test.go
13
main_test.go
|
|
@ -2,12 +2,25 @@ package main
|
|||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test_Main(t *testing.T) {
|
||||
stdin = strings.NewReader("\ta a a\t\tb b b\na a\t\tb b\fc c\td d\nc c\td.")
|
||||
stdout = bytes.NewBuffer(nil)
|
||||
columnDelimiter = "\t"
|
||||
pageDelimiter = "\f"
|
||||
minimumInstances = 1
|
||||
if err := _main(); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
t.Errorf("%s", stdout.(*bytes.Buffer).Bytes())
|
||||
}
|
||||
|
||||
func TestReadPage(t *testing.T) {
|
||||
cases := map[string]struct {
|
||||
input string
|
||||
|
|
|
|||
Loading…
Reference in New Issue