go-vise

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

resource_test.go (2269B)


      1 package resource
      2 
      3 import (
      4 	"context"
      5 	"errors"
      6 	"testing"
      7 )
      8 
      9 func codeGet(ctx context.Context, nodeSym string) ([]byte, error) {
     10 	switch nodeSym {
     11 	case "bar":
     12 		return []byte("deafbeef"), nil
     13 	}
     14 	return nil, errors.New("unknown code")
     15 }
     16 
     17 func menuGet(ctx context.Context, menuSym string) (string, error) {
     18 	switch menuSym {
     19 	case "baz":
     20 		return "xyzzy", nil
     21 	}
     22 	return "", errors.New("unknown code")
     23 
     24 }
     25 
     26 func templateGet(ctx context.Context, nodeSym string) (string, error) {
     27 	switch nodeSym {
     28 	case "tinkywinky":
     29 		return "inky pinky {{.foo}} blinky clyde", nil
     30 	}
     31 	return "", errors.New("unknown code")
     32 }
     33 
     34 func entryFunc(ctx context.Context, nodeSym string, input []byte) (Result, error) {
     35 	return Result{
     36 		Content: "42",
     37 	}, nil
     38 }
     39 
     40 func funcGet(ctx context.Context, loadSym string) (EntryFunc, error) {
     41 	switch loadSym {
     42 	case "dipsy":
     43 		return entryFunc, nil
     44 	}
     45 	return nil, errors.New("unknown code")
     46 }
     47 
     48 func TestMenuResourceSetters(t *testing.T) {
     49 	var err error
     50 	ctx := context.Background()
     51 	rs := NewMenuResource()
     52 	_, err = rs.GetCode(ctx, "foo")
     53 	if err == nil {
     54 		errors.New("expected error")
     55 	}
     56 
     57 	rs.WithCodeGetter(codeGet)
     58 	_, err = rs.GetCode(ctx, "foo")
     59 	if err == nil {
     60 		errors.New("expected error")
     61 	}
     62 
     63 	rs.WithCodeGetter(codeGet)
     64 	_, err = rs.GetCode(ctx, "bar")
     65 	if err != nil {
     66 		t.Fatal(err)
     67 	}
     68 
     69 	_, err = rs.GetMenu(ctx, "bar")
     70 	if err == nil {
     71 		errors.New("expected error")
     72 	}
     73 
     74 	rs.WithMenuGetter(menuGet)
     75 	_, err = rs.GetMenu(ctx, "bar")
     76 	if err == nil {
     77 		errors.New("expected error")
     78 	}
     79 
     80 	rs.WithMenuGetter(menuGet)
     81 	_, err = rs.GetMenu(ctx, "baz")
     82 	if err != nil {
     83 		t.Fatal(err)
     84 	}
     85 
     86 	_, err = rs.GetTemplate(ctx, "baz")
     87 	if err == nil {
     88 		errors.New("expected error")
     89 	}
     90 
     91 	rs.WithTemplateGetter(templateGet)
     92 	_, err = rs.GetTemplate(ctx, "baz")
     93 	if err == nil {
     94 		errors.New("expected error")
     95 	}
     96 
     97 	rs.WithTemplateGetter(templateGet)
     98 	_, err = rs.GetTemplate(ctx, "tinkywinky")
     99 	if err != nil {
    100 		t.Fatal(err)
    101 	}
    102 
    103 	_, err = rs.FuncFor(ctx, "tinkywinky")
    104 	if err == nil {
    105 		errors.New("expected error")
    106 	}
    107 
    108 	rs.WithEntryFuncGetter(funcGet)
    109 	_, err = rs.FuncFor(ctx, "tinkywinky")
    110 	if err == nil {
    111 		errors.New("expected error")
    112 	}
    113 
    114 	rs.WithEntryFuncGetter(funcGet)
    115 	_, err = rs.FuncFor(ctx, "dipsy")
    116 	if err != nil {
    117 		t.Fatal(err)
    118 	}
    119 }