1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 package org.chromium.sync.notifier;
7 import android.test.InstrumentationTestCase;
8 import android.test.suitebuilder.annotation.SmallTest;
10 import org.chromium.base.test.util.Feature;
12 import java.util.Arrays;
14 /** Tests for the {@link InvalidationClientNameProvider} */
15 public class InvalidationClientNameProviderTest extends InstrumentationTestCase {
16 private InvalidationClientNameProvider mProvider;
19 protected void setUp() {
20 mProvider = new InvalidationClientNameProvider();
25 public void testFallbackClientId() {
26 // Test that the InvalidationController consistently returns the same ID even when it has to
27 // resort to its "fallback" ID generation code.
28 byte[] id1 = mProvider.getInvalidatorClientName();
29 byte[] id2 = mProvider.getInvalidatorClientName();
31 // We expect the returned IDs to be consistent in every call.
32 assertTrue("Expected returned IDs to be consistent", Arrays.equals(id1, id2));
34 // Even if initialize the generator late, the ID will remain consistent.
35 registerHardCodedGenerator(mProvider);
37 // IDs should still be consistent, even if we change the generator.
38 // (In the real program, the generator should be set before anyone invokes the
39 // getInvalidatorClientName() and never change afterwards. We test this anyway to make sure
40 // nothing will blow up if someone accidentally violates that constraint.)
41 byte[] id3 = mProvider.getInvalidatorClientName();
42 assertTrue("Changing generators should not affect returned ID consistency",
43 Arrays.equals(id2, id3));
48 public void testPreRegisteredGenerator() {
49 registerHardCodedGenerator(mProvider);
51 byte[] id = mProvider.getInvalidatorClientName();
52 byte[] id2 = mProvider.getInvalidatorClientName();
54 // Expect that consistent IDs are maintained when using a custom generator, too.
55 assertTrue("Custom generators should return consistent IDs", Arrays.equals(id, id2));
58 private static void registerHardCodedGenerator(InvalidationClientNameProvider provider) {
59 provider.setPreferredClientNameGenerator(new InvalidationClientNameGenerator() {
61 public byte[] generateInvalidatorClientName() {
62 return "Testable ID".getBytes();