Coverage Summary for Class: MultisetSetCountConditionallyTester (com.google.common.collect.testing.google)

Class Class, % Method, % Line, %
MultisetSetCountConditionallyTester 0% (0/1) 0% (0/10) 0% (0/31)


1 /* 2  * Copyright (C) 2009 The Guava Authors 3  * 4  * Licensed under the Apache License, Version 2.0 (the "License"); 5  * you may not use this file except in compliance with the License. 6  * You may obtain a copy of the License at 7  * 8  * http://www.apache.org/licenses/LICENSE-2.0 9  * 10  * Unless required by applicable law or agreed to in writing, software 11  * distributed under the License is distributed on an "AS IS" BASIS, 12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13  * See the License for the specific language governing permissions and 14  * limitations under the License. 15  */ 16  17 package com.google.common.collect.testing.google; 18  19 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD; 20 import static com.google.common.collect.testing.features.CollectionSize.SEVERAL; 21 import static com.google.common.collect.testing.features.CollectionSize.ZERO; 22 import static java.util.Collections.nCopies; 23  24 import com.google.common.annotations.GwtCompatible; 25 import com.google.common.collect.testing.features.CollectionFeature; 26 import com.google.common.collect.testing.features.CollectionSize; 27 import org.junit.Ignore; 28  29 /** 30  * A generic JUnit test which tests conditional {@code setCount()} operations on a multiset. Can't 31  * be invoked directly; please see {@link MultisetTestSuiteBuilder}. 32  * 33  * @author Chris Povirk 34  */ 35 @GwtCompatible 36 @Ignore // Affects only Android test runner, which respects JUnit 4 annotations on JUnit 3 tests. 37 public class MultisetSetCountConditionallyTester<E> extends AbstractMultisetSetCountTester<E> { 38  @Override 39  void setCountCheckReturnValue(E element, int count) { 40  assertTrue( 41  "setCount() with the correct expected present count should return true", 42  setCount(element, count)); 43  } 44  45  @Override 46  void setCountNoCheckReturnValue(E element, int count) { 47  setCount(element, count); 48  } 49  50  private boolean setCount(E element, int count) { 51  return getMultiset().setCount(element, getMultiset().count(element), count); 52  } 53  54  private void assertSetCountNegativeOldCount() { 55  try { 56  getMultiset().setCount(e3(), -1, 1); 57  fail("calling setCount() with a negative oldCount should throw IllegalArgumentException"); 58  } catch (IllegalArgumentException expected) { 59  } 60  } 61  62  // Negative oldCount. 63  64  @CollectionFeature.Require(SUPPORTS_ADD) 65  public void testSetCountConditional_negativeOldCount_addSupported() { 66  assertSetCountNegativeOldCount(); 67  } 68  69  @CollectionFeature.Require(absent = SUPPORTS_ADD) 70  public void testSetCountConditional_negativeOldCount_addUnsupported() { 71  try { 72  assertSetCountNegativeOldCount(); 73  } catch (UnsupportedOperationException tolerated) { 74  } 75  } 76  77  // Incorrect expected present count. 78  79  @CollectionFeature.Require(SUPPORTS_ADD) 80  public void testSetCountConditional_oldCountTooLarge() { 81  assertFalse( 82  "setCount() with a too-large oldCount should return false", 83  getMultiset().setCount(e0(), 2, 3)); 84  expectUnchanged(); 85  } 86  87  @CollectionSize.Require(absent = ZERO) 88  @CollectionFeature.Require(SUPPORTS_ADD) 89  public void testSetCountConditional_oldCountTooSmallZero() { 90  assertFalse( 91  "setCount() with a too-small oldCount should return false", 92  getMultiset().setCount(e0(), 0, 2)); 93  expectUnchanged(); 94  } 95  96  @CollectionSize.Require(SEVERAL) 97  @CollectionFeature.Require(SUPPORTS_ADD) 98  public void testSetCountConditional_oldCountTooSmallNonzero() { 99  initThreeCopies(); 100  assertFalse( 101  "setCount() with a too-small oldCount should return false", 102  getMultiset().setCount(e0(), 1, 5)); 103  expectContents(nCopies(3, e0())); 104  } 105  106  /* 107  * TODO: test that unmodifiable multisets either throw UOE or return false 108  * when both are valid options. Currently we test the UOE cases and the 109  * return-false cases but not their intersection 110  */ 111 }