// RUN: %target-build-swift -Xfrontend -disable-access-control -module-name a %s -o %t.out -O // RUN: %target-codesign %t.out // RUN: %target-run %t.out // REQUIRES: executable_test import SwiftPrivate import StdlibUnittest var HashingTestSuite = TestSuite("Hashing") func avalancheTest( for type: Input.Type, _ hashUnderTest: @escaping (Input) -> Int, _ pValue: Double ) { typealias Output = Int let testsInBatch = 100000 let testData = (0 ..< testsInBatch).map { _ in Input.random(in: .min ... .max) } let testDataHashed = testData.map { hashUnderTest($0) } for inputBit in 0...allocate(capacity: Output.bitWidth) bitFlips.initialize(to: 0, count: Output.bitWidth) for i in testData.indices { let inputA = testData[i] let outputA = testDataHashed[i] let inputB = inputA ^ (1 << UInt64(inputBit)) let outputB = hashUnderTest(inputB) var delta = outputA ^ outputB for outputBit in 0..> 1 } } for outputBit in 0..