Write root menu to writer (not stdout) in engine loop

This commit is contained in:
lash 2023-04-12 14:20:09 +01:00
parent 12d2b577f0
commit 91ee0568ca
Signed by untrusted user who does not match committer: lash
GPG Key ID: 21D2E7BB88C2A746
3 changed files with 41 additions and 7 deletions

View File

@ -2,7 +2,7 @@ package engine
import (
"bufio"
"bytes"
// "bytes"
"context"
"fmt"
"io"
@ -16,9 +16,11 @@ func Loop(en *Engine, startSym string, ctx context.Context, reader io.Reader, wr
return fmt.Errorf("cannot init: %v\n", err)
}
b := bytes.NewBuffer(nil)
en.WriteResult(b, ctx)
fmt.Println(b.String())
//b := bytes.NewBuffer(nil)
//en.WriteResult(b, ctx)
en.WriteResult(writer, ctx)
writer.Write([]byte{0x0a})
//fmt.Println(b.String())
running := true
bufReader := bufio.NewReader(reader)
@ -36,12 +38,12 @@ func Loop(en *Engine, startSym string, ctx context.Context, reader io.Reader, wr
if err != nil {
return fmt.Errorf("unexpected termination: %v\n", err)
}
//b := bytes.NewBuffer(nil)
err = en.WriteResult(writer, ctx)
if err != nil {
return err
}
writer.Write([]byte{0x0a})
}
return nil
}

View File

@ -13,6 +13,39 @@ import (
"git.defalsify.org/festive/state"
)
func TestLoopTop(t *testing.T) {
generateTestData(t)
ctx := context.TODO()
st := state.NewState(0)
rs := resource.NewFsResource(dataDir)
ca := cache.NewCache().WithCacheSize(1024)
en := NewEngine(Config{}, &st, &rs, ca)
err := en.Init("root", ctx)
if err != nil {
t.Fatal(err)
}
input := []string{
"2",
"j",
"1",
}
inputStr := strings.Join(input, "\n")
inputBuf := bytes.NewBuffer(append([]byte(inputStr), 0x0a))
outputBuf := bytes.NewBuffer(nil)
log.Printf("running with input: %s", inputBuf.Bytes())
err = Loop(&en, "root", ctx, inputBuf, outputBuf)
if err != nil {
t.Fatal(err)
}
location, _ := st.Where()
if location != "foo" {
fmt.Errorf("expected location 'foo', got %s", location)
}
}
func TestLoopBackForth(t *testing.T) {
generateTestData(t)
ctx := context.TODO()

View File

@ -60,11 +60,9 @@ func(pg *Page) Usage() (uint32, uint32, error) {
}
r := uint32(l)
rsv := uint32(c)-r
log.Printf("size before %v %v", r, c)
if pg.menu != nil {
r += uint32(pg.menu.ReservedSize())
}
log.Printf("size after %v %v", r, c)
return r, rsv, nil
}
@ -149,6 +147,7 @@ func(pg *Page) RenderTemplate(sym string, values map[string]string, idx uint16)
return "", err
}
b := bytes.NewBuffer([]byte{})
err = tp.Execute(b, values)
if err != nil {