| /* | |
| * 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; | |
| } | |
| } |