/* * Copyright 2008 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.user; import com.google.gwt.junit.GWTMockUtilities; import junit.framework.TestCase; import java.io.File; /** * Tests that every class in com.google.gwt.user.client.ui and * com.google.gwt.user.datepicker.client can be init'd by the real Java * runtime. By ensuring this, we ensure that these classes all may be referenced * mocked out by pure Java unit tests, e.g. with EasyMock Class Extension */ public class ClassInitTest extends TestCase { private static final String DOT_CLASS = ".class"; @Override public void setUp() throws Exception { super.setUp(); GWTMockUtilities.disarm(); } @Override public void tearDown() { GWTMockUtilities.restore(); } public void testUi() throws ClassNotFoundException { doPackage("com.google.gwt.user.client.ui"); } public void testDatePicker() throws ClassNotFoundException { doPackage("com.google.gwt.user.datepicker.client"); } private void doPackage(String packageName) throws ClassNotFoundException { String path = packageNameToPath(packageName); File directory = pathToResourceDirectory(path); if (directory.exists()) { String[] files = directory.list(); for (String file : files) { if (file.endsWith(DOT_CLASS)) { String classname = classFileToClassName(file); Class.forName(packageName + "." + classname); } } } } private String classFileToClassName(String file) { return file.substring(0, file.length() - DOT_CLASS.length()); } private File pathToResourceDirectory(String name) { File directory = new File(getClass().getResource(name).getFile()); return directory; } private String packageNameToPath(String name) { name = "/" + name.replace('.', '/'); return name; } }