11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/* 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2006 The Guava Authors 31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License"); 51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * you may not use this file except in compliance with the License. 61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * You may obtain a copy of the License at 71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0 91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unless required by applicable law or agreed to in writing, software 111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS, 121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * See the License for the specific language governing permissions and 141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * limitations under the License. 151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage com.google.common.base; 181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtCompatible; 201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtIncompatible; 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.NullPointerTester; 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 230888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport junit.framework.AssertionFailedError; 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.TestCase; 251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/** 271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unit test for {@link Preconditions}. 281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Kevin Bourrillion 301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Jared Levy 311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@GwtCompatible(emulated = true) 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class PreconditionsTest extends TestCase { 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckArgument_simple_success() { 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkArgument(true); 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckArgument_simple_failure() { 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkArgument(false); 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("no exception thrown"); 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalArgumentException expected) { 431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckArgument_simpleMessage_success() { 471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkArgument(true, IGNORE_ME); 481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckArgument_simpleMessage_failure() { 511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkArgument(false, new Message()); 531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("no exception thrown"); 541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalArgumentException expected) { 551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert verifySimpleMessage(expected); 561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckArgument_nullMessage_failure() { 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkArgument(false, null); 621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("no exception thrown"); 631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalArgumentException expected) { 641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("null", expected.getMessage()); 651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckArgument_complexMessage_success() { 691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkArgument(true, "%s", IGNORE_ME); 701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckArgument_complexMessage_failure() { 731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkArgument(false, FORMAT, 5); 751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("no exception thrown"); 761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalArgumentException expected) { 771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert verifyComplexMessage(expected); 781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckState_simple_success() { 821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkState(true); 831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckState_simple_failure() { 861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkState(false); 881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("no exception thrown"); 891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalStateException expected) { 901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckState_simpleMessage_success() { 941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkState(true, IGNORE_ME); 951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckState_simpleMessage_failure() { 981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkState(false, new Message()); 1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("no exception thrown"); 1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalStateException expected) { 1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert verifySimpleMessage(expected); 1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckState_nullMessage_failure() { 1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkState(false, null); 1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("no exception thrown"); 1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalStateException expected) { 1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("null", expected.getMessage()); 1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckState_complexMessage_success() { 1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkState(true, "%s", IGNORE_ME); 1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckState_complexMessage_failure() { 1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkState(false, FORMAT, 5); 1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("no exception thrown"); 1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalStateException expected) { 1241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert verifyComplexMessage(expected); 1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final String NON_NULL_STRING = "foo"; 1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckNotNull_simple_success() { 1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert String result = Preconditions.checkNotNull(NON_NULL_STRING); 1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertSame(NON_NULL_STRING, result); 1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckNotNull_simple_failure() { 1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkNotNull(null); 1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("no exception thrown"); 1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) { 1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckNotNull_simpleMessage_success() { 1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert String result = Preconditions.checkNotNull(NON_NULL_STRING, IGNORE_ME); 1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertSame(NON_NULL_STRING, result); 1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckNotNull_simpleMessage_failure() { 1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkNotNull(null, new Message()); 1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("no exception thrown"); 1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) { 1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert verifySimpleMessage(expected); 1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckNotNull_complexMessage_success() { 1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert String result = Preconditions.checkNotNull( 1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert NON_NULL_STRING, "%s", IGNORE_ME); 1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertSame(NON_NULL_STRING, result); 1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckNotNull_complexMessage_failure() { 1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkNotNull(null, FORMAT, 5); 1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("no exception thrown"); 1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) { 1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert verifyComplexMessage(expected); 1691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckElementIndex_ok() { 1731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(0, Preconditions.checkElementIndex(0, 1)); 1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(0, Preconditions.checkElementIndex(0, 2)); 1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(1, Preconditions.checkElementIndex(1, 2)); 1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckElementIndex_badSize() { 1791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkElementIndex(1, -1); 1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 1821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalArgumentException expected) { 1831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // don't care what the message text is, as this is an invalid usage of 1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // the Preconditions class, unlike all the other exceptions it throws 1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckElementIndex_negative() { 1891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkElementIndex(-1, 1); 1911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 1921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IndexOutOfBoundsException expected) { 1931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("index (-1) must not be negative", expected.getMessage()); 1941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckElementIndex_tooHigh() { 1981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkElementIndex(1, 1); 2001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IndexOutOfBoundsException expected) { 2021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("index (1) must be less than size (1)", 2031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert expected.getMessage()); 2041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckElementIndex_withDesc_negative() { 2081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 2091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkElementIndex(-1, 1, "foo"); 2101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IndexOutOfBoundsException expected) { 2121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("foo (-1) must not be negative", expected.getMessage()); 2131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckElementIndex_withDesc_tooHigh() { 2171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 2181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkElementIndex(1, 1, "foo"); 2191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IndexOutOfBoundsException expected) { 2211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("foo (1) must be less than size (1)", 2221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert expected.getMessage()); 2231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckPositionIndex_ok() { 2271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(0, Preconditions.checkPositionIndex(0, 0)); 2281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(0, Preconditions.checkPositionIndex(0, 1)); 2291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(1, Preconditions.checkPositionIndex(1, 1)); 2301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckPositionIndex_badSize() { 2331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 2341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndex(1, -1); 2351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalArgumentException expected) { 2371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // don't care what the message text is, as this is an invalid usage of 2381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // the Preconditions class, unlike all the other exceptions it throws 2391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckPositionIndex_negative() { 2431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 2441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndex(-1, 1); 2451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IndexOutOfBoundsException expected) { 2471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("index (-1) must not be negative", expected.getMessage()); 2481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckPositionIndex_tooHigh() { 2521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 2531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndex(2, 1); 2541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IndexOutOfBoundsException expected) { 2561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("index (2) must not be greater than size (1)", 2571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert expected.getMessage()); 2581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckPositionIndex_withDesc_negative() { 2621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 2631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndex(-1, 1, "foo"); 2641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IndexOutOfBoundsException expected) { 2661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("foo (-1) must not be negative", expected.getMessage()); 2671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckPositionIndex_withDesc_tooHigh() { 2711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 2721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndex(2, 1, "foo"); 2731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IndexOutOfBoundsException expected) { 2751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("foo (2) must not be greater than size (1)", 2761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert expected.getMessage()); 2771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckPositionIndexes_ok() { 2811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndexes(0, 0, 0); 2821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndexes(0, 0, 1); 2831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndexes(0, 1, 1); 2841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndexes(1, 1, 1); 2851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckPositionIndexes_badSize() { 2881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 2891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndexes(1, 1, -1); 2901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalArgumentException expected) { 2921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckPositionIndex_startNegative() { 2961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 2971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndexes(-1, 1, 1); 2981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IndexOutOfBoundsException expected) { 3001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("start index (-1) must not be negative", 3011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert expected.getMessage()); 3021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckPositionIndexes_endTooHigh() { 3061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 3071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndexes(0, 2, 1); 3081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 3091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IndexOutOfBoundsException expected) { 3101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("end index (2) must not be greater than size (1)", 3111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert expected.getMessage()); 3121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCheckPositionIndexes_reversed() { 3161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 3171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.checkPositionIndexes(1, 0, 1); 3181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 3191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IndexOutOfBoundsException expected) { 3201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("end index (0) must not be less than start index (1)", 3211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert expected.getMessage()); 3221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testFormat() { 3261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("%s", Preconditions.format("%s")); 3271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("5", Preconditions.format("%s", 5)); 3281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("foo [5]", Preconditions.format("foo", 5)); 3291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("foo [5, 6, 7]", Preconditions.format("foo", 5, 6, 7)); 3301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("%s 1 2", Preconditions.format("%s %s %s", "%s", 1, 2)); 3311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(" [5, 6]", Preconditions.format("", 5, 6)); 3321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("123", Preconditions.format("%s%s%s", 1, 2, 3)); 3331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("1%s%s", Preconditions.format("%s%s%s", 1)); 3341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("5 + 6 = 11", Preconditions.format("%s + 6 = 11", 5)); 3351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("5 + 6 = 11", Preconditions.format("5 + %s = 11", 6)); 3361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("5 + 6 = 11", Preconditions.format("5 + 6 = %s", 11)); 3371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("5 + 6 = 11", Preconditions.format("%s + %s = %s", 5, 6, 11)); 3381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("null [null, null]", 3391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Preconditions.format("%s", null, null, null)); 3401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("null [5, 6]", Preconditions.format(null, 5, 6)); 3411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("NullPointerTester") 3447dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testNullPointers() { 3451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert NullPointerTester tester = new NullPointerTester(); 3461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.testAllPublicStaticMethods(Preconditions.class); 3471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final Object IGNORE_ME = new Object() { 3501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public String toString() { 3510888a09821a98ac0680fad765217302858e70fa4Paul Duffin throw new AssertionFailedError(); 3521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }; 3541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static class Message { 3561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert boolean invoked; 3571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public String toString() { 3581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertFalse(invoked); 3591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert invoked = true; 3601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return "A message"; 3611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final String FORMAT = "I ate %s pies."; 3651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static void verifySimpleMessage(Exception e) { 3671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("A message", e.getMessage()); 3681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static void verifyComplexMessage(Exception e) { 3711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("I ate 5 pies.", e.getMessage()); 3721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 374