//===--- SortLargeExistentials.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 test is a variant of the SortLettersInPlace.

import TestsUtils

public let SortLargeExistentials = BenchmarkInfo(
  name: "SortLargeExistentials",
  runFunction: run_SortLargeExistentials,
  tags: [.validation, .api, .algorithm])

protocol LetterKind {
  var value: String { get }
  func lessthan(_ rhs: LetterKind) -> Bool
}

// A struct which exceeds the size of the existential inline buffer.
struct Letter : LetterKind {
  let value: String

  // Make this struct a large struct which does not fit into the 3-word
  // existential inline buffer. Also provide an answer to ...
  var a: Int = 42
  var b: Int = 42
  var c: Int = 42
  var d: Int = 42

  init(_ value: String) {
    self.value = value
  }

  func lessthan(_ rhs: LetterKind) -> Bool {
    return value < rhs.value
  }
}

let lettersTemplate : [LetterKind] = [
  Letter("k"), Letter("a"), Letter("x"), Letter("i"), Letter("f"), Letter("l"),
  Letter("o"), Letter("w"), Letter("h"), Letter("p"), Letter("b"), Letter("u"),
  Letter("n"), Letter("c"), Letter("j"), Letter("t"), Letter("y"), Letter("s"),
  Letter("d"), Letter("v"), Letter("r"), Letter("e"), Letter("q"), Letter("m"),
  Letter("z"), Letter("g"),
  Letter("k"), Letter("a"), Letter("x"), Letter("i"), Letter("f"), Letter("l"),
  Letter("o"), Letter("w"), Letter("h"), Letter("p"), Letter("b"), Letter("u"),
  Letter("n"), Letter("c"), Letter("j"), Letter("t"), Letter("y"), Letter("s"),
  Letter("d"), Letter("v"), Letter("r"), Letter("e"), Letter("q"), Letter("m"),
  Letter("z"), Letter("g"),
  Letter("k"), Letter("a"), Letter("x"), Letter("i"), Letter("f"), Letter("l"),
  Letter("o"), Letter("w"), Letter("h"), Letter("p"), Letter("b"), Letter("u"),
  Letter("n"), Letter("c"), Letter("j"), Letter("t"), Letter("y"), Letter("s"),
  Letter("d"), Letter("v"), Letter("r"), Letter("e"), Letter("q"), Letter("m"),
  Letter("z"), Letter("g"),
  Letter("k"), Letter("a"), Letter("x"), Letter("i"), Letter("f"), Letter("l"),
  Letter("o"), Letter("w"), Letter("h"), Letter("p"), Letter("b"), Letter("u"),
  Letter("n"), Letter("c"), Letter("j"), Letter("t"), Letter("y"), Letter("s"),
  Letter("d"), Letter("v"), Letter("r"), Letter("e"), Letter("q"), Letter("m"),
  Letter("z"), Letter("g"),
  Letter("k"), Letter("a"), Letter("x"), Letter("i"), Letter("f"), Letter("l"),
  Letter("o"), Letter("w"), Letter("h"), Letter("p"), Letter("b"), Letter("u"),
  Letter("n"), Letter("c"), Letter("j"), Letter("t"), Letter("y"), Letter("s"),
  Letter("d"), Letter("v"), Letter("r"), Letter("e"), Letter("q"), Letter("m"),
  Letter("z"), Letter("g")
]

@inline(never)
public func run_SortLargeExistentials(_ N: Int) {
  for _ in 1...100*N {
    var letters = lettersTemplate

    letters.sort {
      return $0.lessthan($1)
    }

    // Check whether letters are sorted.
    CheckResults(letters[0].value <= letters[letters.count/2].value)
  }
}
