blob: a6835e4eaf40dd4b4ce63eb3130fc7b19adad59b [file] [log] [blame]
// 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();
}
});
}
}