/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.brooklyn.util.collections;
import org.apache.brooklyn.util.collections.QuorumCheck;
import org.apache.brooklyn.util.collections.QuorumCheck.QuorumChecks;
import org.testng.Assert;
import org.testng.annotations.Test;
public class QuorumChecksTest {
@Test
public void testAll() {
QuorumCheck q = QuorumChecks.all();
Assert.assertTrue(q.isQuorate(2, 2));
Assert.assertFalse(q.isQuorate(1, 2));
Assert.assertTrue(q.isQuorate(0, 0));
}
@Test
public void testAlwaysTrue() {
QuorumCheck q = QuorumChecks.alwaysTrue();
Assert.assertTrue(q.isQuorate(0, 2));
Assert.assertTrue(q.isQuorate(1, 2));
Assert.assertTrue(q.isQuorate(0, 0));
}
@Test
public void testAtLeastOne() {
QuorumCheck q = QuorumChecks.atLeastOne();
Assert.assertTrue(q.isQuorate(2, 2));
Assert.assertTrue(q.isQuorate(1, 2));
Assert.assertFalse(q.isQuorate(0, 0));
}
@Test
public void testAllAndAtLeastOne() {
QuorumCheck q = QuorumChecks.atLeastOne();
Assert.assertFalse(q.isQuorate(0, 2));
Assert.assertTrue(q.isQuorate(1, 2));
Assert.assertFalse(q.isQuorate(0, 0));
}
@Test
public void testAtLeastOneUnlessEmpty() {
QuorumCheck q = QuorumChecks.atLeastOneUnlessEmpty();
Assert.assertFalse(q.isQuorate(0, 2));
Assert.assertTrue(q.isQuorate(1, 2));
Assert.assertTrue(q.isQuorate(0, 0));
}
@Test
public void testAtLeastOneUnlessEmptyString() {
QuorumCheck q = QuorumChecks.of("atLeastOneUnlessEmpty");
Assert.assertFalse(q.isQuorate(0, 2));
Assert.assertTrue(q.isQuorate(1, 2));
Assert.assertTrue(q.isQuorate(0, 0));
}
@Test
public void testLinearTwoPointsNeedMinTwo() {
QuorumCheck q = QuorumChecks.of("[ [0,2], [1,2] ]");
Assert.assertTrue(q.isQuorate(2, 2));
Assert.assertTrue(q.isQuorate(2, 10));
Assert.assertFalse(q.isQuorate(1, 1));
}
@Test
public void testLinearNeedHalfToTenAndTenPercentAtHundred() {
QuorumCheck q = QuorumChecks.of("[ [0,0], [10,5], [100,10], [200, 20] ]");
Assert.assertTrue(q.isQuorate(2, 2));
Assert.assertTrue(q.isQuorate(1, 2));
Assert.assertTrue(q.isQuorate(0, 0));
Assert.assertFalse(q.isQuorate(1, 10));
Assert.assertTrue(q.isQuorate(6, 10));
Assert.assertFalse(q.isQuorate(7, 50));
Assert.assertTrue(q.isQuorate(8, 50));
Assert.assertFalse(q.isQuorate(9, 100));
Assert.assertTrue(q.isQuorate(11, 100));
Assert.assertFalse(q.isQuorate(19, 200));
Assert.assertTrue(q.isQuorate(21, 200));
Assert.assertFalse(q.isQuorate(29, 300));
Assert.assertTrue(q.isQuorate(31, 300));
}
}