markdown-bullet-journal/mdbj-summary/summary_test.go

65 lines
1.5 KiB
Go

package main
import (
"testing"
"os"
"github.com/dballard/markdown-bullet-journal/process"
"strings"
"math"
"bytes"
)
const EXPECTED = `
2018-05-07-TEST.md
# Work
Write tests / summary
# Test Data
nesting1 / nesting 2 / nesting 3 / nesting 4 / nesting 5
not nested
# Nested Header
## With something done
a partly done thing / the one done thing
# Repetition
25 things
20 category / nested rep
# Pomodoros
completed
7 / 19 - 5 Pomodoros
`
func TestSummary(t *testing.T) {
ph := new(processHandler)
r, w, err := os.Pipe()
if err != nil {
t.Fatal(err)
}
ph.File = w
files := process.GetFiles()
for _, file := range files {
ph.Writeln("")
ph.Writeln(file)
process.ProcessFile(ph, file)
}
w.Close()
var result = make([]byte, 1000)
n, _ := r.Read(result)
//fmt.Printf("n:%v len(res):%v len(EXP):%v\n", n, len(result), len(EXPECTED))
if ! bytes.Equal(result[:n], []byte(EXPECTED)) {
var diffLoc = 0
for i, ch := range EXPECTED {
//fmt.Printf("%v/%v: %v %v\n", i, n, ch, result[i])
if i > n-1 || result[i] != byte(ch) {
diffLoc = i
break
}
}
//fmt.Println(diffLoc)
line := strings.Count(string(result[:diffLoc]), "\n")
errorStr := string(result[int(math.Max(0, float64(diffLoc - 10))) : int(math.Min(float64(len(result)), float64(diffLoc + 10))) ])
t.Errorf("Summary results do not match expected:\nfirst difference at line %v\nexpected char: '%c'\nactual char: '%v'\nline: '%v'\nACTUAL:\n%v<---->\nEXPECTED:\n%v\n", line, EXPECTED[diffLoc], string(result[diffLoc]), errorStr, string(result), EXPECTED)
}
}