diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index 4f24010..f9a943c 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -44,7 +44,7 @@ func (c *Cache) Get(title string) (p *core.Page) { *p = *cp.Page return } - return nil + return } func (c *Cache) Delete(title string) { diff --git a/pkg/index/index.go b/pkg/index/index.go index 66e5e1f..9491bf4 100644 --- a/pkg/index/index.go +++ b/pkg/index/index.go @@ -104,6 +104,7 @@ func (i *Index) Search(search string) (results []core.Result, err error) { } r := core.Result{StoreTitle: hit.ID} r.Section, r.Title = render.SplitStoreTitle(hit.ID) + r.Title = render.Untitle(r.Title) d, err := i.i.Document(hit.ID) if d == nil || err != nil { continue diff --git a/pkg/otp/otp_test.go b/pkg/otp/otp_test.go new file mode 100644 index 0000000..96dfbbf --- /dev/null +++ b/pkg/otp/otp_test.go @@ -0,0 +1,25 @@ +// Copyright (C) 2019 Marius Schellenberger + +package otp + +import ( + "testing" +) + +func TestNew(t *testing.T) { + _, err := New("admin") + if err != nil { + t.Error(err) + } +} + +func TestImageSecretFromURL(t *testing.T) { + r, _ := New("admin") + _, secret, err := ImageSecretFromURL(r.URL) + if err != nil { + t.Error(err) + } + if secret != r.Secret { + t.Error("secret is not equal") + } +} diff --git a/pkg/render/render.go b/pkg/render/render.go index d958b22..12b715a 100644 --- a/pkg/render/render.go +++ b/pkg/render/render.go @@ -13,6 +13,8 @@ import ( "strings" ) +const delim = "+" + var filter = makeFilter() func makeFilter() analysis.CharFilter { @@ -40,7 +42,11 @@ func Render(p *core.Page) string { } func Title(title string) string { - return whiteSpace.ReplaceAllString(titleRe.ReplaceAllString(title, ""), "+") + return whiteSpace.ReplaceAllString(titleRe.ReplaceAllString(title, ""), delim) +} + +func Untitle(title string) string { + return strings.ReplaceAll(title, delim, " ") } func StoreTitle(section, title string) string { diff --git a/pkg/store/gob.go b/pkg/store/gob.go new file mode 100644 index 0000000..9dfdff6 --- /dev/null +++ b/pkg/store/gob.go @@ -0,0 +1,25 @@ +// Copyright (C) 2019 Marius Schellenberger + +package store + +import ( + "bytes" + "encoding/gob" +) + +type gobMarshaler struct{} + +func NewGOB() Marshaler { + return gobMarshaler{} +} + +func (gobMarshaler) Marshal(v interface{}) (b []byte, err error) { + buf := new(bytes.Buffer) + err = gob.NewEncoder(buf).Encode(v) + b = buf.Bytes() + return +} + +func (gobMarshaler) Unmarshal(data []byte, v interface{}) error { + return gob.NewDecoder(bytes.NewBuffer(data)).Decode(v) +} diff --git a/pkg/store/gob_test.go b/pkg/store/gob_test.go new file mode 100644 index 0000000..133a176 --- /dev/null +++ b/pkg/store/gob_test.go @@ -0,0 +1,39 @@ +// Copyright (C) 2019 Marius Schellenberger + +package store + +import "testing" + +var g = NewGOB() + +func BenchmarkGOBMarshalPage(b *testing.B) { + b.ReportAllocs() + for i := 0; i < b.N; i++ { + g.Marshal(p) + } +} + +func BenchmarkGOBUnmarshalPage(b *testing.B) { + bytes, _ := g.Marshal(p) + var pp Page + b.ReportAllocs() + for i := 0; i < b.N; i++ { + g.Unmarshal(bytes, &pp) + } +} + +func BenchmarkGOBMarshalUser(b *testing.B) { + b.ReportAllocs() + for i := 0; i < b.N; i++ { + g.Marshal(u) + } +} + +func BenchmarkGOBUnmarshalUser(b *testing.B) { + bytes, _ := g.Marshal(u) + var uu User + b.ReportAllocs() + for i := 0; i < b.N; i++ { + g.Unmarshal(bytes, &uu) + } +} diff --git a/pkg/store/marshal.go b/pkg/store/marshal.go index b9b56cd..ce68115 100644 --- a/pkg/store/marshal.go +++ b/pkg/store/marshal.go @@ -2,29 +2,7 @@ package store -import ( - "bytes" - "encoding/gob" -) - type Marshaler interface { Marshal(v interface{}) ([]byte, error) Unmarshal(data []byte, v interface{}) error } - -type gobMarshaler struct{} - -func NewGOB() Marshaler { - return gobMarshaler{} -} - -func (gobMarshaler) Marshal(v interface{}) (b []byte, err error) { - buf := new(bytes.Buffer) - err = gob.NewEncoder(buf).Encode(v) - b = buf.Bytes() - return -} - -func (gobMarshaler) Unmarshal(data []byte, v interface{}) error { - return gob.NewDecoder(bytes.NewBuffer(data)).Decode(v) -} diff --git a/pkg/store/marshal_test.go b/pkg/store/marshal_test.go new file mode 100644 index 0000000..04f8443 --- /dev/null +++ b/pkg/store/marshal_test.go @@ -0,0 +1,34 @@ +// Copyright (C) 2019 Marius Schellenberger + +package store + +import "time" + +type Page struct { + Text string + Date time.Time + Number int + Test bool +} + +type User struct { + Username string + Password string + Number int + Test bool + Today time.Time +} + +var p = &Page{ + "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", + time.Now(), + 34534534, + true, +} +var u = &User{ + "svdfnvdnfvon", + "func BenchmarkNew(b *testing.B) {", + 8794355, + false, + time.Now(), +}