//===--- ProtocolDispatch2.swift ------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
//  This is a simple benchmark that tests the performance of calls to
//  existential methods.
//===----------------------------------------------------------------------===//


import TestsUtils
import Foundation

public let ProtocolDispatch2 = BenchmarkInfo(
  name: "ProtocolDispatch2",
  runFunction: run_ProtocolDispatch2,
  tags: [.validation, .abstraction, .unstable])

protocol Pingable { func ping() -> Int;  func pong() -> Int}

struct Game : Pingable {
  func zero() -> Int { return 0}
  func ping() -> Int { return 1}
  func pong() -> Int { return 2}
  func puff() -> Int { return 3}
}

@inline(never)
func use_protocol(_ val : Int,_ game1 : Pingable, _ game2 : Pingable) -> Int {
  var t = game1.ping() + game1.pong()
  if (val % 2 == 0) {
    t += game1.pong() + game1.ping()
  }
  t += game1.ping() + game1.pong()

  t += game2.ping() + game2.pong()
  if (val % 2 == 0) {
    t += game2.pong() + game2.ping()
  }
  t += game2.ping() + game2.pong()

  return t
}

@inline(never)
func wrapper(_ val : Int,_ game1 : Pingable, _ game2 : Pingable) -> Int {
  return use_protocol(val, game1, game2)
}

@inline(never)
public func run_ProtocolDispatch2(_ N: Int) {
  var c = 0
  let g1 = Game()
  let g2 = Game()
  for _ in 1...N {
    c = 0
    for i in 1...5000 {
      c += wrapper(i, g1, g2)
    }
  }
  CheckResults(c == 75000)
}

