go-vise

Constrained Size Output Virtual Machine
Info | Log | Files | Refs | README | LICENSE

page_test.go (2536B)


      1 package render
      2 
      3 import (
      4 	"context"
      5 	"fmt"
      6 	"testing"
      7 
      8 	"git.defalsify.org/vise.git/cache"
      9 	"git.defalsify.org/vise.git/internal/resourcetest"
     10 )
     11 
     12 func TestPageCurrentSize(t *testing.T) {
     13 	t.Skip("usage is not in use, and it is unclear how it should be calculated")
     14 	ca := cache.NewCache()
     15 	pg := NewPage(ca, nil)
     16 	err := ca.Push()
     17 	if err != nil {
     18 		t.Error(err)
     19 	}
     20 	err = ca.Add("foo", "inky", 0)
     21 	if err != nil {
     22 		t.Error(err)
     23 	}
     24 	err = ca.Push()
     25 	pg.Reset()
     26 	err = ca.Add("bar", "pinky", 10)
     27 	if err != nil {
     28 		t.Error(err)
     29 	}
     30 	err = ca.Add("baz", "tinkywinkydipsylalapoo", 51)
     31 	if err != nil {
     32 		t.Error(err)
     33 	}
     34 	err = pg.Map("foo")
     35 	if err != nil {
     36 		t.Error(err)
     37 	}
     38 	err = pg.Map("bar")
     39 	if err != nil {
     40 		t.Error(err)
     41 	}
     42 	err = pg.Map("baz")
     43 	if err != nil {
     44 		t.Error(err)
     45 	}
     46 	l, c, err := pg.Usage()
     47 	if err != nil {
     48 		t.Error(err)
     49 	}
     50 	if l != 27 {
     51 		t.Errorf("expected actual length 27, got %v", l)
     52 	}
     53 	if c != 34 {
     54 		t.Errorf("expected remaining length 34, got %v", c)
     55 	}
     56 
     57 	mn := NewMenu() //.WithOutputSize(32)
     58 	pg = pg.WithMenu(mn)
     59 	l, c, err = pg.Usage()
     60 	if err != nil {
     61 		t.Error(err)
     62 	}
     63 	if l != 59 {
     64 		t.Errorf("expected actual length 59, got %v", l)
     65 	}
     66 	if c != 2 {
     67 		t.Errorf("expected remaining length 2, got %v", c)
     68 	}
     69 }
     70 
     71 func TestStateMapSink(t *testing.T) {
     72 	ca := cache.NewCache()
     73 	pg := NewPage(ca, nil)
     74 	ca.Push()
     75 	err := ca.Add("foo", "bar", 0)
     76 	if err != nil {
     77 		t.Error(err)
     78 	}
     79 	ca.Push()
     80 	pg.Reset()
     81 	err = ca.Add("bar", "xyzzy", 6)
     82 	if err != nil {
     83 		t.Error(err)
     84 	}
     85 	err = ca.Add("baz", "bazbaz", 18)
     86 	if err != nil {
     87 		t.Error(err)
     88 	}
     89 	err = ca.Add("xyzzy", "plugh", 0)
     90 	if err != nil {
     91 		t.Error(err)
     92 	}
     93 	err = pg.Map("foo")
     94 	if err != nil {
     95 		t.Error(err)
     96 	}
     97 	err = pg.Map("xyzzy")
     98 	if err == nil {
     99 		t.Errorf("Expected fail on duplicate sink")
    100 	}
    101 	err = pg.Map("baz")
    102 	if err != nil {
    103 		t.Error(err)
    104 	}
    105 	ca.Push()
    106 	pg.Reset()
    107 	err = pg.Map("foo")
    108 	if err != nil {
    109 		t.Error(err)
    110 	}
    111 	ca.Pop()
    112 	pg.Reset()
    113 	err = pg.Map("foo")
    114 	if err != nil {
    115 		t.Error(err)
    116 	}
    117 }
    118 
    119 func TestWithError(t *testing.T) {
    120 	ctx := context.Background()
    121 	ca := cache.NewCache()
    122 	rs := resourcetest.NewTestResource()
    123 	rs.AddTemplate(ctx, "foo", "bar")
    124 	rs.Lock()
    125 	pg := NewPage(ca, rs)
    126 	ca.Push()
    127 
    128 	mn := NewMenu()
    129 	err := mn.Put("0", "aiee")
    130 	if err != nil {
    131 		t.Fatal(err)
    132 	}
    133 	err = fmt.Errorf("my humps")
    134 	pg = pg.WithMenu(mn).WithError(err)
    135 
    136 	r, err := pg.Render(ctx, "foo", 0)
    137 	if err != nil {
    138 		t.Fatal(err)
    139 	}
    140 	expect := `my humps
    141 bar
    142 0:aiee`
    143 	if r != expect {
    144 		t.Fatalf("expected:\n\t%s\ngot:\n\t%s", expect, r)
    145 	}
    146 }