/* * Copyright 2012 Google Inc. * * Licensed 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 com.google.android.gcm.server; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import java.util.Arrays; import java.util.List; @RunWith(MockitoJUnitRunner.class) public class MulticastResultTest { @Test public void testRequiredParameters_noResults() { MulticastResult multicastResult = new MulticastResult.Builder(4, 8, 15, 16) .build(); assertEquals(4, multicastResult.getSuccess()); assertEquals(8, multicastResult.getFailure()); assertEquals(12, multicastResult.getTotal()); assertEquals(16, multicastResult.getMulticastId()); assertTrue(multicastResult.getResults().isEmpty()); assertTrue(multicastResult.getRetryMulticastIds().isEmpty()); } @Test public void testRequiredParameters_withResults() { MulticastResult multicastResult = new MulticastResult.Builder(4, 8, 15, 16) .addResult(new Result.Builder().messageId("23").build()) .addResult(new Result.Builder().messageId("42").build()) .build(); assertEquals(4, multicastResult.getSuccess()); assertEquals(8, multicastResult.getFailure()); assertEquals(12, multicastResult.getTotal()); assertEquals(16, multicastResult.getMulticastId()); List<Result> results = multicastResult.getResults(); assertEquals(2, results.size()); assertEquals("23", results.get(0).getMessageId()); assertEquals("42", results.get(1).getMessageId()); String toString = multicastResult.toString(); assertTrue(toString.contains("multicast_id=16")); assertTrue(toString.contains("total=12")); assertTrue(toString.contains("success=4")); assertTrue(toString.contains("failure=8")); assertTrue(toString.contains("canonical_ids=15")); assertTrue(toString.contains("results")); } @Test public void testOptionalParameters() { MulticastResult multicastResult = new MulticastResult.Builder(4, 8, 15, 16) .retryMulticastIds(Arrays.asList(23L, 42L)) .build(); assertEquals(4, multicastResult.getSuccess()); assertEquals(8, multicastResult.getFailure()); assertEquals(12, multicastResult.getTotal()); assertEquals(16, multicastResult.getMulticastId()); assertTrue(multicastResult.getResults().isEmpty()); List<Long> retryMulticastIds = multicastResult.getRetryMulticastIds(); assertEquals(2, retryMulticastIds.size()); assertEquals(23L, retryMulticastIds.get(0).longValue()); assertEquals(42L, retryMulticastIds.get(1).longValue()); } @Test(expected = UnsupportedOperationException.class) public void testResultsIsImmutable() { MulticastResult result = new MulticastResult.Builder(1, 2, 3, 4).build(); result.getResults().clear(); } @Test(expected = UnsupportedOperationException.class) public void testRetryMulticastIdsIsImmutable() { MulticastResult result = new MulticastResult.Builder(1, 2, 3, 4).build(); result.getRetryMulticastIds().clear(); } }