//
//  Generated by the J2ObjC translator.  DO NOT EDIT!
//  source: /Users/antoniocortes/j2objcprj/relases/j2objc/junit/build_result/java/org/junit/runners/Parameterized.java
//

#include "J2ObjC_header.h"

#pragma push_macro("INCLUDE_ALL_OrgJunitRunnersParameterized")
#ifdef RESTRICT_OrgJunitRunnersParameterized
#define INCLUDE_ALL_OrgJunitRunnersParameterized 0
#else
#define INCLUDE_ALL_OrgJunitRunnersParameterized 1
#endif
#undef RESTRICT_OrgJunitRunnersParameterized

#pragma clang diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"

#if __has_feature(nullability)
#pragma clang diagnostic push
#pragma GCC diagnostic ignored "-Wnullability"
#pragma GCC diagnostic ignored "-Wnullability-completeness"
#endif

#if !defined (OrgJunitRunnersParameterized_) && (INCLUDE_ALL_OrgJunitRunnersParameterized || defined(INCLUDE_OrgJunitRunnersParameterized))
#define OrgJunitRunnersParameterized_

#define RESTRICT_OrgJunitRunnersSuite 1
#define INCLUDE_OrgJunitRunnersSuite 1
#include "org/junit/runners/Suite.h"

@class IOSClass;
@class IOSObjectArray;
@class OrgJunitRunnersModelRunnerBuilder;
@protocol JavaUtilList;

/*!
 @brief <p>
  The custom runner <code>Parameterized</code> implements parameterized tests.
 When running a parameterized test class, instances are created for the
  cross-product of the test methods and the test data elements. 
 </p>
  For example, to test a Fibonacci function, write: 
 @code

   &#064;RunWith(Parameterized.class)
  public class FibonacciTest {
  		&#064;Parameters(name= &quot;{index}: fib({0})={1}&quot;)
  	public static Iterable&lt;Object[]&gt; data() {
  		return Arrays.asList(new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 },
                  { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } });
      }
  	private int fInput;
  	private int fExpected;
  	public FibonacciTest(int input, int expected) {
  		fInput= input;
  		fExpected= expected;
      }
  		&#064;Test
  	public void test() {
  		assertEquals(fExpected, Fibonacci.compute(fInput));
      }    }    
  
@endcode
  
 <p>
  Each instance of <code>FibonacciTest</code> will be constructed using the
  two-argument constructor and the data values in the 
 <code>&#064;Parameters</code> method. 
 <p>
  In order that you can easily identify the individual tests, you may provide a
  name for the <code>&#064;Parameters</code> annotation. This name is allowed
  to contain placeholders, which are replaced at runtime. The placeholders are 
 <dl>
  <dt>{index}</dt>
  <dd>the current parameter index</dd>
  <dt>{0}</dt>
  <dd>the first parameter value</dd>
  <dt>{1}</dt>
  <dd>the second parameter value</dd>
  <dt>...</dt>
  <dd></dd>
  </dl>
  In the example given above, the <code>Parameterized</code> runner creates
  names like <code>[1: fib(3)=2]</code>. If you don't use the name parameter,
  then the current parameter index is used as name. 
 </p>
  You can also write: 
 @code

   &#064;RunWith(Parameterized.class)
  public class FibonacciTest {
    &#064;Parameters
   public static Iterable&lt;Object[]&gt; data() {
       return Arrays.asList(new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 },
                  { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } });
      }  
  &#064;Parameter(0)
   public int fInput;  
  &#064;Parameter(1)
   public int fExpected;  
  &#064;Test
   public void test() {
       assertEquals(fExpected, Fibonacci.compute(fInput));
      }    }    
  
@endcode
  
 <p>
  Each instance of <code>FibonacciTest</code> will be constructed with the default constructor
  and fields annotated by <code>&#064;Parameter</code>  will be initialized
  with the data values in the <code>&#064;Parameters</code> method. 
 </p>
 @since 4.0
 */
@interface OrgJunitRunnersParameterized : OrgJunitRunnersSuite

#pragma mark Public

/*!
 @brief Only called reflectively.Do not use programmatically.
 */
- (instancetype __nonnull)initWithIOSClass:(IOSClass *)klass;

#pragma mark Protected

- (id<JavaUtilList>)getChildren;

// Disallowed inherited constructors, do not use.

- (instancetype __nonnull)initWithIOSClass:(IOSClass *)arg0
                         withIOSClassArray:(IOSObjectArray *)arg1 NS_UNAVAILABLE;

- (instancetype __nonnull)initWithIOSClass:(IOSClass *)arg0
                          withJavaUtilList:(id<JavaUtilList>)arg1 NS_UNAVAILABLE;

- (instancetype __nonnull)initWithIOSClass:(IOSClass *)arg0
     withOrgJunitRunnersModelRunnerBuilder:(OrgJunitRunnersModelRunnerBuilder *)arg1 NS_UNAVAILABLE;

- (instancetype __nonnull)initWithOrgJunitRunnersModelRunnerBuilder:(OrgJunitRunnersModelRunnerBuilder *)arg0
                                                       withIOSClass:(IOSClass *)arg1
                                                  withIOSClassArray:(IOSObjectArray *)arg2 NS_UNAVAILABLE;

- (instancetype __nonnull)initWithOrgJunitRunnersModelRunnerBuilder:(OrgJunitRunnersModelRunnerBuilder *)arg0
                                                  withIOSClassArray:(IOSObjectArray *)arg1 NS_UNAVAILABLE;

@end

J2OBJC_STATIC_INIT(OrgJunitRunnersParameterized)

FOUNDATION_EXPORT void OrgJunitRunnersParameterized_initWithIOSClass_(OrgJunitRunnersParameterized *self, IOSClass *klass);

FOUNDATION_EXPORT OrgJunitRunnersParameterized *new_OrgJunitRunnersParameterized_initWithIOSClass_(IOSClass *klass) NS_RETURNS_RETAINED;

FOUNDATION_EXPORT OrgJunitRunnersParameterized *create_OrgJunitRunnersParameterized_initWithIOSClass_(IOSClass *klass);

J2OBJC_TYPE_LITERAL_HEADER(OrgJunitRunnersParameterized)

#endif

#if !defined (OrgJunitRunnersParameterized_Parameters_) && (INCLUDE_ALL_OrgJunitRunnersParameterized || defined(INCLUDE_OrgJunitRunnersParameterized_Parameters))
#define OrgJunitRunnersParameterized_Parameters_

#define RESTRICT_JavaLangAnnotationAnnotation 1
#define INCLUDE_JavaLangAnnotationAnnotation 1
#include "java/lang/annotation/Annotation.h"

@class IOSClass;

/*!
 @brief Annotation for a method which provides parameters to be injected into the
  test class constructor by <code>Parameterized</code>
 */
@protocol OrgJunitRunnersParameterized_Parameters < JavaLangAnnotationAnnotation >

@property (readonly) NSString *name;

- (jboolean)isEqual:(id)obj;

- (NSUInteger)hash;

@end

@interface OrgJunitRunnersParameterized_Parameters : NSObject < OrgJunitRunnersParameterized_Parameters > {
 @public
  NSString *name_;
}

@end

J2OBJC_EMPTY_STATIC_INIT(OrgJunitRunnersParameterized_Parameters)

FOUNDATION_EXPORT id<OrgJunitRunnersParameterized_Parameters> create_OrgJunitRunnersParameterized_Parameters(NSString *name);

J2OBJC_TYPE_LITERAL_HEADER(OrgJunitRunnersParameterized_Parameters)

#endif

#if !defined (OrgJunitRunnersParameterized_Parameter_) && (INCLUDE_ALL_OrgJunitRunnersParameterized || defined(INCLUDE_OrgJunitRunnersParameterized_Parameter))
#define OrgJunitRunnersParameterized_Parameter_

#define RESTRICT_JavaLangAnnotationAnnotation 1
#define INCLUDE_JavaLangAnnotationAnnotation 1
#include "java/lang/annotation/Annotation.h"

@class IOSClass;

/*!
 @brief Annotation for fields of the test class which will be initialized by the
  method annotated by <code>Parameters</code><br>
  By using directly this annotation, the test class constructor isn't needed.
 <br>
  Index range must start at 0.
 Default value is 0.
 */
@protocol OrgJunitRunnersParameterized_Parameter < JavaLangAnnotationAnnotation >

@property (readonly) jint value;

- (jboolean)isEqual:(id)obj;

- (NSUInteger)hash;

@end

@interface OrgJunitRunnersParameterized_Parameter : NSObject < OrgJunitRunnersParameterized_Parameter > {
 @public
  jint value_;
}

@end

J2OBJC_EMPTY_STATIC_INIT(OrgJunitRunnersParameterized_Parameter)

FOUNDATION_EXPORT id<OrgJunitRunnersParameterized_Parameter> create_OrgJunitRunnersParameterized_Parameter(jint value);

J2OBJC_TYPE_LITERAL_HEADER(OrgJunitRunnersParameterized_Parameter)

#endif


#if __has_feature(nullability)
#pragma clang diagnostic pop
#endif

#pragma clang diagnostic pop
#pragma pop_macro("INCLUDE_ALL_OrgJunitRunnersParameterized")
