#import <Foundation/Foundation.h>
#import "IntegrationCaseManager.h"

#import "InAppDisplayBannerViewController.h"
#import "InAppMrecBannerViewController.h"
#import "InAppDisplayInterstitialViewController.h"
#import "InAppVideoInterstitialViewController.h"
#import "InAppVideoRewardedViewController.h"
#import "InAppNativeViewController.h"

#import "AdMobDisplayBannerViewController.h"
#import "AdMobMrecBannerViewController.h"
#import "AdMobDisplayInterstitialViewController.h"
#import "AdMobVideoInterstitialViewController.h"
#import "AdMobVideoRewardedViewController.h"
#import "AdMobNativeViewController.h"

#import "MAXDisplayBannerViewController.h"
#import "MAXMrecBannerViewController.h"
#import "MAXDisplayInterstitialViewController.h"
#import "MAXVideoInterstitialViewController.h"
#import "MAXVideoRewardedViewController.h"
#import "MAXNativeViewController.h"

@implementation IntegrationCaseManager

+ (NSArray<IntegrationCase *> *)allCases {
    
    return
    [
        [NSArray alloc]
        initWithObjects:
            [
                [IntegrationCase alloc]
                initWithTitle:@"In-App Display Banner 320x50"
                integrationKind:IntegrationKindInApp
                adFormat:AdFormatDisplayBanner
                configurationClosure:^UIViewController *{
                    return [[InAppDisplayBannerViewController alloc] init];
                }
            ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"In-App Mrec Banner 300x250"
            integrationKind:IntegrationKindInApp
            adFormat:AdFormatVideoBanner
            configurationClosure:^UIViewController *{
                return [[InAppMrecBannerViewController alloc] initWithAdSize:CGSizeMake(300, 250)];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"In-App Display Interstitial 320x480"
            integrationKind:IntegrationKindInApp
            adFormat:AdFormatDisplayInterstitial
            configurationClosure:^UIViewController *{
                return [[InAppDisplayInterstitialViewController alloc] init];
            }
            ],
          
        [
            [IntegrationCase alloc]
            initWithTitle:@"In-App Video Interstitial 320x480"
            integrationKind:IntegrationKindInApp
            adFormat:AdFormatVideoInterstitial
            configurationClosure:^UIViewController *{
                return [[InAppVideoInterstitialViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"In-App Video Rewarded 320x480"
            integrationKind:IntegrationKindInApp
            adFormat:AdFormatVideoRewarded
            configurationClosure:^UIViewController *{
                return [[InAppVideoRewardedViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"In-App Native"
            integrationKind:IntegrationKindInApp
            adFormat:AdFormatNative
            configurationClosure:^UIViewController *{
                return [[InAppNativeViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"AdMob Display Banner 320x50"
            integrationKind:IntegrationKindAdMob
            adFormat:AdFormatDisplayBanner
            configurationClosure:^UIViewController *{
                return [[AdMobDisplayBannerViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"AdMob Mrec Banner 300x250"
            integrationKind:IntegrationKindAdMob
            adFormat:AdFormatVideoBanner
            configurationClosure:^UIViewController *{
                return [[AdMobMrecBannerViewController alloc] initWithAdSize:CGSizeMake(300, 250)];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"AdMob Display Interstitial 320x480"
            integrationKind:IntegrationKindAdMob
            adFormat:AdFormatDisplayInterstitial
            configurationClosure:^UIViewController *{
                return [[AdMobDisplayInterstitialViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"AdMob Video Interstitial 320x480"
            integrationKind:IntegrationKindAdMob
            adFormat:AdFormatVideoInterstitial
            configurationClosure:^UIViewController *{
                return [[AdMobVideoInterstitialViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"AdMob Video Rewarded 320x480"
            integrationKind:IntegrationKindAdMob
            adFormat:AdFormatVideoRewarded
            configurationClosure:^UIViewController *{
                return [[AdMobVideoRewardedViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"AdMob Native"
            integrationKind:IntegrationKindAdMob
            adFormat:AdFormatNative
            configurationClosure:^UIViewController *{
                return [[AdMobNativeViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"MAX Display Banner 320x50"
            integrationKind:IntegrationKindMAX
            adFormat:AdFormatDisplayBanner
            configurationClosure:^UIViewController *{
                return [[MAXDisplayBannerViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"MAX Mrec Banner 300x250"
            integrationKind:IntegrationKindMAX
            adFormat:AdFormatVideoBanner
            configurationClosure:^UIViewController *{
                return [[MAXMrecBannerViewController alloc] initWithAdSize:CGSizeMake(300, 250)];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"MAX Display Interstitial 320x480"
            integrationKind:IntegrationKindMAX
            adFormat:AdFormatDisplayInterstitial
            configurationClosure:^UIViewController *{
                return [[MAXDisplayInterstitialViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"MAX Video Interstitial 320x480"
            integrationKind:IntegrationKindMAX
            adFormat:AdFormatVideoInterstitial
            configurationClosure:^UIViewController *{
                return [[MAXVideoInterstitialViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"MAX Video Rewarded 320x480"
            integrationKind:IntegrationKindMAX
            adFormat:AdFormatVideoRewarded
            configurationClosure:^UIViewController *{
                return [[MAXVideoRewardedViewController alloc] init];
            }
        ],
        
        [
            [IntegrationCase alloc]
            initWithTitle:@"MAX Native"
            integrationKind:IntegrationKindMAX
            adFormat:AdFormatNative
            configurationClosure:^UIViewController *{
                return [[MAXNativeViewController alloc] initWithAdSize:CGSizeMake(320, 450)];
            }
        ],
        
        nil];
}

@end
