1 /* 2 * Copyright (C) 2011 The Guava Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 * in compliance with the License. You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software distributed under the License 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 * or implied. See the License for the specific language governing permissions and limitations under 12 * the License. 13 */ 14 15 package com.google.common.cache; 16 17 /** 18 * Utility {@link Weigher} implementations intended for use in testing. 19 * 20 * @author Charles Fry 21 */ 22 public class TestingWeighers { 23 24 /** 25 * Returns a {@link Weigher} that returns the given {@code constant} for every request. 26 */ constantWeigher(int constant)27 static Weigher<Object, Object> constantWeigher(int constant) { 28 return new ConstantWeigher(constant); 29 } 30 31 /** 32 * Returns a {@link Weigher} that uses the integer key as the weight. 33 */ intKeyWeigher()34 static Weigher<Integer, Object> intKeyWeigher() { 35 return new IntKeyWeigher(); 36 } 37 38 /** 39 * Returns a {@link Weigher} that uses the integer value as the weight. 40 */ intValueWeigher()41 static Weigher<Object, Integer> intValueWeigher() { 42 return new IntValueWeigher(); 43 } 44 45 static final class ConstantWeigher implements Weigher<Object, Object> { 46 private final int constant; 47 ConstantWeigher(int constant)48 ConstantWeigher(int constant) { 49 this.constant = constant; 50 } 51 52 @Override weigh(Object key, Object value)53 public int weigh(Object key, Object value) { 54 return constant; 55 } 56 } 57 58 static final class IntKeyWeigher implements Weigher<Integer, Object> { 59 @Override weigh(Integer key, Object value)60 public int weigh(Integer key, Object value) { 61 return key; 62 } 63 } 64 65 static final class IntValueWeigher implements Weigher<Object, Integer> { 66 @Override weigh(Object key, Integer value)67 public int weigh(Object key, Integer value) { 68 return value; 69 } 70 } 71 72 } 73