blob: f179ae262011e5a51e033668d529d451fd4f3dc4 [file] [log] [blame]
/*
* Copyright 2010 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.gwt.resources.rg;
import junit.framework.TestCase;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
/**
* Tests CssResourceGenerator's generation of unique CSS class names.
*/
public class CssClassNamesTestCase extends TestCase {
static class ConstantCounter extends Counter {
@Override
int next() {
return 16;
}
}
private static final SortedSet<String> EMPTY_SET = new TreeSet<String>();
private static final int NUM_CYCLES = 1000;
public void testPrefix() {
assertEquals("p-A", CssResourceGenerator.computeObfuscatedClassName("p-",
new Counter(), EMPTY_SET));
}
public void testReservedPrefixes() {
Counter counter = new ConstantCounter();
SortedSet<String> hateful = new TreeSet<String>(Arrays.asList("a"));
// Value with no prefixes
assertEquals("AB", CssResourceGenerator.computeObfuscatedClassName("",
counter, EMPTY_SET));
assertEquals("CZB", CssResourceGenerator.computeObfuscatedClassName("",
counter, hateful));
hateful.add("c");
assertEquals("EZZB", CssResourceGenerator.computeObfuscatedClassName("",
counter, hateful));
hateful.add("ezz");
assertEquals("KVAZB", CssResourceGenerator.computeObfuscatedClassName("",
counter, hateful));
}
/**
* Quick sanity check to ensure that the initial sequence of idents is unique
* and stable.
*/
public void testSimple() {
Counter counter = new Counter();
Counter counter2 = new Counter();
Set<String> seen = new HashSet<String>();
for (int i = 0; i < NUM_CYCLES; i++) {
String ident = CssResourceGenerator.computeObfuscatedClassName("",
counter, EMPTY_SET);
assertTrue(seen.add(ident));
assertEquals(ident, CssResourceGenerator.computeObfuscatedClassName("",
counter2, EMPTY_SET));
}
assertEquals(1000, counter.next());
}
}