// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.base.shared_preferences;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import androidx.test.filters.SmallTest;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.base.test.BaseRobolectricTestRunner;
/** Unit tests for {@link KeyPrefix}. */
@RunWith(BaseRobolectricTestRunner.class)
public class KeyPrefixTest {
@Test
@SmallTest
public void testSuccess_validPattern() {
KeyPrefix prefix = new KeyPrefix("Chrome.Feature.KP.*");
assertEquals(prefix.pattern(), "Chrome.Feature.KP.*");
assertEquals(prefix.createKey("DynamicKey"), "Chrome.Feature.KP.DynamicKey");
assertEquals(prefix.createKey("Level.DynamicKey"), "Chrome.Feature.KP.Level.DynamicKey");
assertEquals(prefix.createKey(42), "Chrome.Feature.KP.42");
assertTrue(prefix.hasGenerated("Chrome.Feature.KP.DynamicKey"));
assertTrue(prefix.hasGenerated("Chrome.Feature.KP.Level.DynamicKey"));
assertTrue(prefix.hasGenerated("Chrome.Feature.KP.42"));
assertFalse(prefix.hasGenerated("OtherKey"));
}
@Test
@SmallTest
public void testSuccess_validLegacyPattern() {
KeyPrefix prefix = new KeyPrefix("legacy_pattern_*");
assertEquals(prefix.pattern(), "legacy_pattern_*");
assertEquals(prefix.createKey("DynamicKey"), "legacy_pattern_DynamicKey");
assertTrue(prefix.hasGenerated("legacy_pattern_DynamicKey"));
assertFalse(prefix.hasGenerated("OtherKey"));
}
@Test(expected = AssertionError.class)
@SmallTest
public void testError_missingPeriod() {
new KeyPrefix("Chrome.Feature.KP");
}
@Test(expected = AssertionError.class)
@SmallTest
public void testError_missingStar() {
new KeyPrefix("Chrome.Feature.KP.");
}
}