// Copyright 2014 The Go 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 colltab // testWeighter is a simple Weighter that returns weights from a user-defined map. type testWeighter map[string][]Elem func (t testWeighter) Start(int, []byte) int { return 0 } func (t testWeighter) StartString(int, string) int { return 0 } func (t testWeighter) Domain() []string { return nil } func (t testWeighter) Top() uint32 { return 0 } // maxContractBytes is the maximum length of any key in the map. const maxContractBytes = 10 func (t testWeighter) AppendNext(buf []Elem, s []byte) ([]Elem, int) { n := len(s) if n > maxContractBytes { n = maxContractBytes } for i := n; i > 0; i-- { if e, ok := t[string(s[:i])]; ok { return append(buf, e...), i } } panic("incomplete testWeighter: could not find " + string(s)) } func (t testWeighter) AppendNextString(buf []Elem, s string) ([]Elem, int) { n := len(s) if n > maxContractBytes { n = maxContractBytes } for i := n; i > 0; i-- { if e, ok := t[s[:i]]; ok { return append(buf, e...), i } } panic("incomplete testWeighter: could not find " + s) }