// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.sync.notifier; import android.test.InstrumentationTestCase; import android.test.suitebuilder.annotation.SmallTest; import org.chromium.base.test.util.Feature; import java.util.Arrays; /** Tests for the {@link InvalidationClientNameProvider} */ public class InvalidationClientNameProviderTest extends InstrumentationTestCase { private InvalidationClientNameProvider mProvider; @Override protected void setUp() { mProvider = new InvalidationClientNameProvider(); } @SmallTest @Feature({"Sync"}) public void testFallbackClientId() { // Test that the InvalidationController consistently returns the same ID even when it has to // resort to its "fallback" ID generation code. byte[] id1 = mProvider.getInvalidatorClientName(); byte[] id2 = mProvider.getInvalidatorClientName(); // We expect the returned IDs to be consistent in every call. assertTrue("Expected returned IDs to be consistent", Arrays.equals(id1, id2)); // Even if initialize the generator late, the ID will remain consistent. registerHardCodedGenerator(mProvider); // IDs should still be consistent, even if we change the generator. // (In the real program, the generator should be set before anyone invokes the // getInvalidatorClientName() and never change afterwards. We test this anyway to make sure // nothing will blow up if someone accidentally violates that constraint.) byte[] id3 = mProvider.getInvalidatorClientName(); assertTrue("Changing generators should not affect returned ID consistency", Arrays.equals(id2, id3)); } @SmallTest @Feature({"Sync"}) public void testPreRegisteredGenerator() { registerHardCodedGenerator(mProvider); byte[] id = mProvider.getInvalidatorClientName(); byte[] id2 = mProvider.getInvalidatorClientName(); // Expect that consistent IDs are maintained when using a custom generator, too. assertTrue("Custom generators should return consistent IDs", Arrays.equals(id, id2)); } private static void registerHardCodedGenerator(InvalidationClientNameProvider provider) { provider.setPreferredClientNameGenerator( new InvalidationClientNameGenerator() { public byte[] generateInvalidatorClientName() { return "Testable ID".getBytes(); } }); } }