go-vise

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

util.go (1892B)


      1 package resourcetest
      2 
      3 import (
      4 	"context"
      5 
      6 	"git.defalsify.org/vise.git/resource"
      7 	"git.defalsify.org/vise.git/db/mem"
      8 	"git.defalsify.org/vise.git/db"
      9 )
     10 
     11 type TestResource struct {
     12 	*resource.DbResource
     13 	db db.Db
     14 	ctx context.Context
     15 }
     16 
     17 func NewTestResource() *TestResource {
     18 	return newTestResource("")
     19 }
     20 
     21 func NewTestFsResource(path string) *TestResource {
     22 	if path == "" {
     23 		panic("empty path")
     24 	}
     25 	return newTestResource(path)
     26 }
     27 
     28 func newTestResource(path string) *TestResource {
     29 	var store db.Db
     30 	ctx := context.Background()
     31 
     32 	if path == "" {
     33 		mem := mem.NewMemDb()
     34 		mem.SetLock(db.DATATYPE_TEMPLATE, false)
     35 		mem.SetLock(db.DATATYPE_BIN, false)
     36 		mem.SetLock(db.DATATYPE_MENU, false)
     37 		store = mem
     38 	} else {
     39 		fs := mem.NewMemDb()
     40 		fs.SetLock(db.DATATYPE_TEMPLATE, false)
     41 		fs.SetLock(db.DATATYPE_BIN, false)
     42 		fs.SetLock(db.DATATYPE_MENU, false)
     43 		store = fs
     44 	}
     45 
     46 	store.Connect(ctx, path)
     47 	rsd := resource.NewDbResource(store)
     48 	rs := &TestResource{
     49 		DbResource: rsd,
     50 		ctx: ctx,
     51 		db: store,
     52 	}
     53 	return rs
     54 }
     55 
     56 func(tr *TestResource) AddTemplate(ctx context.Context, key string, val string) error {
     57 	tr.db.SetPrefix(db.DATATYPE_TEMPLATE)
     58 	return tr.db.Put(ctx, []byte(key), []byte(val))
     59 }
     60 
     61 func(tr *TestResource) AddBytecode(ctx context.Context, key string, val []byte) error {
     62 	tr.db.SetPrefix(db.DATATYPE_BIN)
     63 	return tr.db.Put(ctx, []byte(key), val)
     64 }
     65 
     66 func(tr *TestResource) AddMenu(ctx context.Context, key string, val string) error {
     67 	tr.db.SetPrefix(db.DATATYPE_MENU)
     68 	return tr.db.Put(ctx, []byte(key), []byte(val))
     69 }
     70 
     71 func(tr *TestResource) AddFunc(ctx context.Context, key string, fn resource.EntryFunc) {
     72 	tr.AddLocalFunc(key, fn)
     73 }
     74 
     75 func(tr *TestResource) AddStatic(ctx context.Context, key string, val string) error {
     76 	tr.db.SetPrefix(db.DATATYPE_STATICLOAD)
     77 	return tr.db.Put(ctx, []byte(key), []byte(val))
     78 }
     79 
     80 func(tr *TestResource) Lock() {
     81 	tr.db.SetLock(0, true)
     82 }