// Path: rtran-api/src/main/java/com/ebay/rtran/api/IRule.java
// public interface IRule<Model extends IModel> {
// 
//   Model transform(Model model);
// 
//   default boolean isEligibleFor(IProjectCtx projectType) {
//     return true;
//   }
// 
//   default Class<Model> rutimeModelClass() {
//     Optional<Class<Model>> clazz = GenericsUtil.getClassForGenericType(getClass(), IRule.class, 0);
//     return clazz.orElse(null);
//   }
// 
//   default String id() {
//     return getClass().getName();
//   }
// }


import com.ebay.rtran.api.IModelProvider;
import com.ebay.rtran.api.IRule;
import org.junit.Test;
import com.ebay.rtran.mock.MockModel;
import com.ebay.rtran.mock.MockProject;
/*
 * Copyright (c) 2016 eBay Software Foundation.
 *
 * 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.ebay.rtran;


public class DefaultMethodsTest {

  @Test
  public void testRuntimeModelClassForRule()
      throws IllegalAccessException, ClassNotFoundException, InstantiationException {
// Path: rtran-api/src/main/java/com/ebay/rtran/api/IRule.java
// public interface IRule<Model extends IModel> {
// 
//   Model transform(Model model);
// 
//   default boolean isEligibleFor(IProjectCtx projectType) {
//     return true;
//   }
// 
//   default Class<Model> rutimeModelClass() {
//     Optional<Class<Model>> clazz = GenericsUtil.getClassForGenericType(getClass(), IRule.class, 0);
//     return clazz.orElse(null);
//   }
// 
//   default String id() {
//     return getClass().getName();
//   }
// }


// Path: rtran-api/src/test/java/com/ebay/rtran/DefaultMethodsTest.java
import com.ebay.rtran.api.IModelProvider;
import com.ebay.rtran.api.IRule;
import org.junit.Test;
import com.ebay.rtran.mock.MockModel;
import com.ebay.rtran.mock.MockProject;

/*
 * Copyright (c) 2016 eBay Software Foundation.
 *
 * 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.ebay.rtran;


public class DefaultMethodsTest {

  @Test
  public void testRuntimeModelClassForRule()
      throws IllegalAccessException, ClassNotFoundException, InstantiationException {
    IRule<?> rule = Class.forName("com.ebay.rtran.mock.MockRule").asSubclass(IRule.class).newInstance();