Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Side by Side Diff: memory/testing_utils_test.go

Issue 1243323002: Refactor a bit. (Closed) Base URL: https://github.com/luci/gae.git@master
Patch Set: fix golint Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « memory/taskqueue_test.go ('k') | prod/context.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package memory
6
7 import (
8 "bytes"
9 "fmt"
10 "time"
11
12 "github.com/luci/gae"
13 "github.com/luci/gae/helper"
14 "github.com/luci/luci-go/common/cmpbin"
15 )
16
17 type kv struct{ k, v []byte }
18
19 func indx(kind string, orders ...string) *qIndex {
20 ancestor := false
21 if kind[len(kind)-1] == '!' {
22 ancestor = true
23 kind = kind[:len(kind)-1]
24 }
25 ret := &qIndex{kind, ancestor, nil}
26 for _, o := range orders {
27 dir := qASC
28 if o[0] == '-' {
29 dir = qDEC
30 o = o[1:]
31 }
32 ret.sortby = append(ret.sortby, qSortBy{o, dir})
33 }
34 return ret
35 }
36
37 var (
38 prop = gae.MkDSProperty
39 propNI = gae.MkDSPropertyNI
40 )
41
42 func key(kind string, id interface{}, parent ...gae.DSKey) gae.DSKey {
43 p := gae.DSKey(nil)
44 if len(parent) > 0 {
45 p = parent[0]
46 }
47 switch x := id.(type) {
48 case string:
49 return helper.NewDSKey(globalAppID, "ns", kind, x, 0, p)
50 case int:
51 return helper.NewDSKey(globalAppID, "ns", kind, "", int64(x), p)
52 default:
53 panic(fmt.Errorf("what the %T: %v", id, id))
54 }
55 }
56
57 // cat is a convenience method for concatenating anything with an underlying
58 // byte representation into a single []byte.
59 func cat(bytethings ...interface{}) []byte {
60 buf := &bytes.Buffer{}
61 for _, thing := range bytethings {
62 switch x := thing.(type) {
63 case int64:
64 cmpbin.WriteInt(buf, x)
65 case int:
66 cmpbin.WriteInt(buf, int64(x))
67 case uint64:
68 cmpbin.WriteUint(buf, x)
69 case uint:
70 cmpbin.WriteUint(buf, uint64(x))
71 case float64:
72 cmpbin.WriteFloat64(buf, x)
73 case byte:
74 buf.WriteByte(x)
75 case gae.DSPropertyType:
76 buf.WriteByte(byte(x))
77 case string:
78 cmpbin.WriteString(buf, x)
79 case []byte:
80 buf.Write(x)
81 case time.Time:
82 helper.WriteTime(buf, x)
83 case gae.DSKey:
84 helper.WriteDSKey(buf, helper.WithoutContext, x)
85 case *qIndex:
86 x.WriteBinary(buf)
87 default:
88 panic(fmt.Errorf("I don't know how to deal with %T: %#v" , thing, thing))
89 }
90 }
91 ret := buf.Bytes()
92 if ret == nil {
93 ret = []byte{}
94 }
95 return ret
96 }
97
98 func icat(bytethings ...interface{}) []byte {
99 ret := cat(bytethings...)
100 for i := range ret {
101 ret[i] ^= 0xFF
102 }
103 return ret
104 }
105
106 func sat(bytethings ...interface{}) string {
107 return string(cat(bytethings...))
108 }
OLDNEW
« no previous file with comments | « memory/taskqueue_test.go ('k') | prod/context.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698