| Index: go/src/infra/gae/libs/wrapper/memory/testing_utils_test.go
 | 
| diff --git a/go/src/infra/gae/libs/wrapper/memory/testing_utils_test.go b/go/src/infra/gae/libs/wrapper/memory/testing_utils_test.go
 | 
| deleted file mode 100644
 | 
| index 59fc990dbf2174e07c9447c6be1615fbbe7071fe..0000000000000000000000000000000000000000
 | 
| --- a/go/src/infra/gae/libs/wrapper/memory/testing_utils_test.go
 | 
| +++ /dev/null
 | 
| @@ -1,122 +0,0 @@
 | 
| -// Copyright 2015 The Chromium Authors. All rights reserved.
 | 
| -// Use of this source code is governed by a BSD-style license that can be
 | 
| -// found in the LICENSE file.
 | 
| -
 | 
| -package memory
 | 
| -
 | 
| -import (
 | 
| -	"bytes"
 | 
| -	"fmt"
 | 
| -	"reflect"
 | 
| -	"time"
 | 
| -
 | 
| -	"appengine/datastore"
 | 
| -
 | 
| -	"github.com/luci/luci-go/common/cmpbin"
 | 
| -)
 | 
| -
 | 
| -type kv struct{ k, v []byte }
 | 
| -
 | 
| -func indx(kind string, orders ...string) *qIndex {
 | 
| -	ancestor := false
 | 
| -	if kind[len(kind)-1] == '!' {
 | 
| -		ancestor = true
 | 
| -		kind = kind[:len(kind)-1]
 | 
| -	}
 | 
| -	ret := &qIndex{kind, ancestor, nil}
 | 
| -	for _, o := range orders {
 | 
| -		dir := qASC
 | 
| -		if o[0] == '-' {
 | 
| -			dir = qDEC
 | 
| -			o = o[1:]
 | 
| -		}
 | 
| -		ret.sortby = append(ret.sortby, qSortBy{o, dir})
 | 
| -	}
 | 
| -	return ret
 | 
| -}
 | 
| -
 | 
| -func pl(props ...datastore.Property) *propertyList {
 | 
| -	return (*propertyList)(&props)
 | 
| -}
 | 
| -
 | 
| -func prop(name string, val interface{}, noIndex ...bool) (ret datastore.Property) {
 | 
| -	ret.Name = name
 | 
| -	ret.Value = val
 | 
| -	if len(noIndex) > 0 {
 | 
| -		ret.NoIndex = noIndex[0]
 | 
| -	}
 | 
| -	return
 | 
| -}
 | 
| -
 | 
| -func key(kind string, id interface{}, parent ...*datastore.Key) *datastore.Key {
 | 
| -	stringID := ""
 | 
| -	intID := int64(0)
 | 
| -	switch x := id.(type) {
 | 
| -	case string:
 | 
| -		stringID = x
 | 
| -	case int:
 | 
| -		intID = int64(x)
 | 
| -	default:
 | 
| -		panic(fmt.Errorf("what the %T: %v", id, id))
 | 
| -	}
 | 
| -	par := (*datastore.Key)(nil)
 | 
| -	if len(parent) > 0 {
 | 
| -		par = parent[0]
 | 
| -	}
 | 
| -	return newKey("ns", kind, stringID, intID, par)
 | 
| -}
 | 
| -
 | 
| -func mustLoadLocation(loc string) *time.Location {
 | 
| -	if z, err := time.LoadLocation(loc); err != nil {
 | 
| -		panic(err)
 | 
| -	} else {
 | 
| -		return z
 | 
| -	}
 | 
| -}
 | 
| -
 | 
| -// cat is a convenience method for concatenating anything with an underlying
 | 
| -// byte representation into a single []byte.
 | 
| -func cat(bytethings ...interface{}) []byte {
 | 
| -	buf := &bytes.Buffer{}
 | 
| -	for _, thing := range bytethings {
 | 
| -		switch x := thing.(type) {
 | 
| -		case int, int64:
 | 
| -			cmpbin.WriteInt(buf, reflect.ValueOf(x).Int())
 | 
| -		case uint, uint64:
 | 
| -			cmpbin.WriteUint(buf, reflect.ValueOf(x).Uint())
 | 
| -		case float64:
 | 
| -			writeFloat64(buf, x)
 | 
| -		case byte, propValType:
 | 
| -			buf.WriteByte(byte(reflect.ValueOf(x).Uint()))
 | 
| -		case []byte, serializedPval:
 | 
| -			buf.Write(reflect.ValueOf(x).Convert(byteSliceType).Interface().([]byte))
 | 
| -		case string:
 | 
| -			writeString(buf, x)
 | 
| -		case time.Time:
 | 
| -			writeTime(buf, x)
 | 
| -		case *datastore.Key:
 | 
| -			writeKey(buf, noNS, x)
 | 
| -		case *qIndex:
 | 
| -			x.WriteBinary(buf)
 | 
| -		default:
 | 
| -			panic(fmt.Errorf("I don't know how to deal with %T: %#v", thing, thing))
 | 
| -		}
 | 
| -	}
 | 
| -	ret := buf.Bytes()
 | 
| -	if ret == nil {
 | 
| -		ret = []byte{}
 | 
| -	}
 | 
| -	return ret
 | 
| -}
 | 
| -
 | 
| -func icat(bytethings ...interface{}) []byte {
 | 
| -	ret := cat(bytethings...)
 | 
| -	for i := range ret {
 | 
| -		ret[i] ^= 0xFF
 | 
| -	}
 | 
| -	return ret
 | 
| -}
 | 
| -
 | 
| -func sat(bytethings ...interface{}) string {
 | 
| -	return string(cat(bytethings...))
 | 
| -}
 | 
| 
 |