12c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten/* 22c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * Copyright (C) 2016 The Android Open Source Project 32c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * 42c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License"); 52c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * you may not use this file except in compliance with the License. 62c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * You may obtain a copy of the License at 72c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * 82c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * http://www.apache.org/licenses/LICENSE-2.0 92c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * 102c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * Unless required by applicable law or agreed to in writing, software 112c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS, 122c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * See the License for the specific language governing permissions and 142c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten * limitations under the License. 152c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten */ 162c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten 172c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten// Test the minimal perfect hash generator function 182c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten 192c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten#include <stdio.h> 202c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten#include <stdlib.h> 212c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten#include <SLES/OpenSLES.h> 222c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten#include "MPH.h" 232c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten 242c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kastenextern int IID_to_MPH(const SLInterfaceID iid); 252c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kastenextern const struct SLInterfaceID_ SL_IID_array[MPH_MAX]; 262c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten 272c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kastenint main(int argc, char **argv) 282c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten{ 292c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten int i; 302c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten for (i = 0; i < MPH_MAX; i++) { 312c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten const struct SLInterfaceID_ *original = &SL_IID_array[i]; 322c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten // test the address-based lookup 332c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten int MPH = IID_to_MPH(original); 342c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten if (MPH != i) { 352c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten fprintf(stderr, "error: IID_to_MPH(SL_IID_array) = %d != %d\n", MPH, i); 362c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten return EXIT_FAILURE; 372c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten } 382c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten // test the content-based lookup 392c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten const struct SLInterfaceID_ copy = *original; 402c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten MPH = IID_to_MPH(©); 412c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten if (MPH != i) { 422c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten fprintf(stderr, "error: IID_to_MPH(copy) = %d != %d\n", MPH, i); 432c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten return EXIT_FAILURE; 442c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten } 452c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten } 462c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten printf("OK\n"); 472c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten return EXIT_SUCCESS; 482c09187ba941e24577e3134adeacca97cc8b0ea4Glenn Kasten} 49