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(&copy);
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