1 /* 2 * Copyright 2016 The gRPC 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 io.grpc; 18 19 import static io.grpc.ConnectivityState.CONNECTING; 20 import static io.grpc.ConnectivityState.IDLE; 21 import static io.grpc.ConnectivityState.TRANSIENT_FAILURE; 22 import static org.junit.Assert.assertEquals; 23 import static org.junit.Assert.assertFalse; 24 import static org.junit.Assert.assertNotEquals; 25 import static org.junit.Assert.assertNotSame; 26 27 import org.junit.Test; 28 import org.junit.runner.RunWith; 29 import org.junit.runners.JUnit4; 30 31 /** Unit tests for {@link ConnectivityStateInfo}. */ 32 @RunWith(JUnit4.class) 33 public class ConnectivityStateInfoTest { 34 @Test forNonError()35 public void forNonError() { 36 ConnectivityStateInfo info = ConnectivityStateInfo.forNonError(IDLE); 37 assertEquals(IDLE, info.getState()); 38 assertEquals(Status.OK, info.getStatus()); 39 } 40 41 @Test(expected = IllegalArgumentException.class) forNonErrorInvalid()42 public void forNonErrorInvalid() { 43 ConnectivityStateInfo.forNonError(TRANSIENT_FAILURE); 44 } 45 46 @Test forTransientFailure()47 public void forTransientFailure() { 48 ConnectivityStateInfo info = ConnectivityStateInfo.forTransientFailure(Status.UNAVAILABLE); 49 assertEquals(TRANSIENT_FAILURE, info.getState()); 50 assertEquals(Status.UNAVAILABLE, info.getStatus()); 51 } 52 53 @Test(expected = IllegalArgumentException.class) forTransientFailureInvalid()54 public void forTransientFailureInvalid() { 55 ConnectivityStateInfo.forTransientFailure(Status.OK); 56 } 57 58 @Test equality()59 public void equality() { 60 ConnectivityStateInfo info1 = ConnectivityStateInfo.forNonError(IDLE); 61 ConnectivityStateInfo info2 = ConnectivityStateInfo.forNonError(CONNECTING); 62 ConnectivityStateInfo info3 = ConnectivityStateInfo.forNonError(IDLE); 63 ConnectivityStateInfo info4 = ConnectivityStateInfo.forTransientFailure(Status.UNAVAILABLE); 64 ConnectivityStateInfo info5 = ConnectivityStateInfo.forTransientFailure(Status.INTERNAL); 65 ConnectivityStateInfo info6 = ConnectivityStateInfo.forTransientFailure(Status.INTERNAL); 66 67 assertEquals(info1, info3); 68 assertNotSame(info1, info3); 69 assertEquals(info1.hashCode(), info3.hashCode()); 70 assertEquals(info5, info6); 71 assertEquals(info5.hashCode(), info6.hashCode()); 72 assertNotSame(info5, info6); 73 74 assertNotEquals(info1, info2); 75 assertNotEquals(info1, info4); 76 assertNotEquals(info4, info6); 77 78 assertFalse(info1.equals(null)); 79 // Extra cast to avoid ErrorProne EqualsIncompatibleType failure 80 assertFalse(((Object) info1).equals(this)); 81 } 82 } 83