View Javadoc
1   /*
2    * Copyright (C) 2007-2012 Argeo GmbH
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *         http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.argeo.slc.core.test;
17  
18  import org.argeo.slc.UnsupportedException;
19  import org.argeo.slc.test.TestData;
20  import org.argeo.slc.test.TestDataProvider;
21  
22  /** Utilities for dealing with test datas. */
23  public class TestDataUtils {
24  	/** Extracts the test data from the given provider. */
25  	public static <T extends TestData> T getFromProvider(Object obj,
26  			Class<T> clss, String key) {
27  		if (obj instanceof TestDataProvider) {
28  			TestDataProvider testDataProvider = (TestDataProvider) obj;
29  			return testDataProvider.getTestData(clss, key);
30  		} else {
31  			throw new UnsupportedException("test data provider", obj);
32  		}
33  	}
34  
35  	/**
36  	 * Extracts the test data from the given provider using <code>null</code>
37  	 * as key.
38  	 */
39  	public static <T extends TestData> T getFromProvider(Object obj,
40  			Class<T> clss) {
41  		return getFromProvider(obj, clss, null);
42  	}
43  
44  	/**
45  	 * Returns it self after making the proper checks. Used for test data being
46  	 * their own data providers.
47  	 */
48  	@SuppressWarnings("unchecked")
49  	public static <T extends TestData> T getItSelf(Class<T> clss,
50  			TestData testDataObject) {
51  		if (clss.isAssignableFrom(testDataObject.getClass())) {
52  			return (T) testDataObject;
53  		} else {
54  			throw new UnsupportedException("test data", testDataObject);
55  		}
56  
57  	}
58  
59  	/** Makes sure this is an utility class. */
60  	private TestDataUtils() {
61  
62  	}
63  }