13a8b0f00e6d23ae57fee93f7f2c18fe8e6b45c3cChris Lattner/*
29769ab22265b313171d201b5928688524a01bd87Misha Brukman * Copyright (C) 2011 The Guava Authors
36fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell *
46fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner * in compliance with the License. You may obtain a copy of the License at
67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner *
79769ab22265b313171d201b5928688524a01bd87Misha Brukman * http://www.apache.org/licenses/LICENSE-2.0
86fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell *
9009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner * Unless required by applicable law or agreed to in writing, software distributed under the License
10009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11fab8c796f6754962f5732145248303e3a1f7b96bChris Lattner * or implied. See the License for the specific language governing permissions and limitations under
12009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner * the License.
13009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner */
14009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner
15009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattnerpackage com.google.common.collect;
16009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner
17009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattnerimport static com.google.common.collect.BstTesting.countAggregate;
18009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner
19fed90b6d097d50881afb45e4d79f430db66dd741Dan Gohmanimport com.google.common.annotations.GwtCompatible;
2061336ae001e07c6d68454b1494e45954d373fb51Chris Lattnerimport com.google.common.collect.BstTesting.SimpleNode;
217a73b80b9052136c8cd2234eb3433a07df7cf38eJohn Criswell
22d0fde30ce850b78371fd1386338350591f9ff494Brian Gaekeimport junit.framework.Test;
23d0fde30ce850b78371fd1386338350591f9ff494Brian Gaekeimport junit.framework.TestCase;
24125fc7fefd4a198dd210cb43f5d8f1ba2c1e2dcfMichael Ilsemanimport junit.framework.TestSuite;
2512ddd409535b52a7fa5157ded9a4cedd161fedb6Benjamin Kramer
263990b121cf4a0b280ed3e54cf13870cbf4259e78Chris Lattner/**
27333c40096561218bc3597cf153c0a3895274414cOwen Anderson * Tests for the policies exported by {@link BstCountBasedBalancePolicies}
2817fcdd5e1b78b829068ca657c97357a39d6e768bChris Lattner *
2917fcdd5e1b78b829068ca657c97357a39d6e768bChris Lattner * @author Louis Wasserman
30009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner */
31fed90b6d097d50881afb45e4d79f430db66dd741Dan Gohman@GwtCompatible
32f630e49efc7bf3f1716b6daab3c2cc11a908754aCraig Topperpublic class BstCountBasedBalancePoliciesTest extends TestCase {
33f630e49efc7bf3f1716b6daab3c2cc11a908754aCraig Topper  public static class NoRebalanceTest extends AbstractBstBalancePolicyTest {
34c5f24a2c2a16681f7816ac053c8f46a2692a3b7aJeff Cohen    @Override
35009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner    protected BstBalancePolicy<SimpleNode> getBalancePolicy() {
3684e679beea11ac55ed7871eec4deaccdf393de3eChris Lattner      return BstCountBasedBalancePolicies.noRebalancePolicy(countAggregate);
37407a6169b729c72c3a7ddb01b8454ab0b4f6897cMichael Ilseman    }
38b2406d9895314cbc61183c2fb712cd1a2ddfe7e0Chris Lattner  }
39b2406d9895314cbc61183c2fb712cd1a2ddfe7e0Chris Lattner
40b2406d9895314cbc61183c2fb712cd1a2ddfe7e0Chris Lattner  public static class SingleRebalanceTest extends AbstractBstBalancePolicyTest {
41b2406d9895314cbc61183c2fb712cd1a2ddfe7e0Chris Lattner    @Override
42b2406d9895314cbc61183c2fb712cd1a2ddfe7e0Chris Lattner    protected BstBalancePolicy<SimpleNode> getBalancePolicy() {
43009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner      return BstCountBasedBalancePolicies.<Character, SimpleNode>singleRebalancePolicy(
44afba8fe662d65b25b4baf46bb26cc18e1f9cc0a5Gordon Henriksen          countAggregate);
45afba8fe662d65b25b4baf46bb26cc18e1f9cc0a5Gordon Henriksen    }
46407a6169b729c72c3a7ddb01b8454ab0b4f6897cMichael Ilseman  }
47cb4f10b4d5e9ba2e37e70424b290dd1187ca6ea7Chris Lattner
48cb4f10b4d5e9ba2e37e70424b290dd1187ca6ea7Chris Lattner  public static class FullRebalanceTest extends AbstractBstBalancePolicyTest {
49cb4f10b4d5e9ba2e37e70424b290dd1187ca6ea7Chris Lattner    @Override
50cb4f10b4d5e9ba2e37e70424b290dd1187ca6ea7Chris Lattner    protected BstBalancePolicy<SimpleNode> getBalancePolicy() {
51407a6169b729c72c3a7ddb01b8454ab0b4f6897cMichael Ilseman      return BstCountBasedBalancePolicies.<Character, SimpleNode>fullRebalancePolicy(
52009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner          countAggregate);
53009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner    }
5418961504fc2b299578dba817900a0696cf3ccc4dChris Lattner  }
55b92f50fe6091a7a12f54f9884529b1127b1a14e5Chris Lattner
56b92f50fe6091a7a12f54f9884529b1127b1a14e5Chris Lattner  public static Test suite() {
57f0a93ed9c59d706494496c6fe4e8354864d24aa7Chris Lattner    TestSuite suite = new TestSuite();
58b92f50fe6091a7a12f54f9884529b1127b1a14e5Chris Lattner    suite.addTestSuite(NoRebalanceTest.class);
59b92f50fe6091a7a12f54f9884529b1127b1a14e5Chris Lattner    suite.addTestSuite(SingleRebalanceTest.class);
60b92f50fe6091a7a12f54f9884529b1127b1a14e5Chris Lattner    suite.addTestSuite(FullRebalanceTest.class);
61b92f50fe6091a7a12f54f9884529b1127b1a14e5Chris Lattner    return suite;
62b92f50fe6091a7a12f54f9884529b1127b1a14e5Chris Lattner  }
63b92f50fe6091a7a12f54f9884529b1127b1a14e5Chris Lattner}
64cfad5df977f257299063309fa34f3c24831093c4Chris Lattner