test.c revision 2c09187ba941e24577e3134adeacca97cc8b0ea4
16eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette/*
26eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette * Copyright (C) 2016 The Android Open Source Project
36eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette *
46eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette * Licensed under the Apache License, Version 2.0 (the "License");
56eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette * you may not use this file except in compliance with the License.
66eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette * You may obtain a copy of the License at
76eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette *
86eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette *      http://www.apache.org/licenses/LICENSE-2.0
96eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette *
106eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette * Unless required by applicable law or agreed to in writing, software
116eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette * distributed under the License is distributed on an "AS IS" BASIS,
126eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette * See the License for the specific language governing permissions and
146eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette * limitations under the License.
156eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette */
166eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette
176eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette// Test the minimal perfect hash generator function
186eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette
196eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette#include <stdio.h>
206eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette#include <stdlib.h>
216eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette#include <SLES/OpenSLES.h>
22049a692ac952be43d5fcd975ec6d394ca058c9d8Alan Viverette#include "MPH.h"
23049a692ac952be43d5fcd975ec6d394ca058c9d8Alan Viverette
246eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viveretteextern int IID_to_MPH(const SLInterfaceID iid);
25049a692ac952be43d5fcd975ec6d394ca058c9d8Alan Viveretteextern const struct SLInterfaceID_ SL_IID_array[MPH_MAX];
266eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette
276eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viveretteint main(int argc, char **argv)
286eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette{
296eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette    int i;
306eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette    for (i = 0; i < MPH_MAX; i++) {
316eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette        const struct SLInterfaceID_ *original = &SL_IID_array[i];
326eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette        // test the address-based lookup
336eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette        int MPH = IID_to_MPH(original);
34049a692ac952be43d5fcd975ec6d394ca058c9d8Alan Viverette        if (MPH != i) {
35049a692ac952be43d5fcd975ec6d394ca058c9d8Alan Viverette            fprintf(stderr, "error: IID_to_MPH(SL_IID_array) = %d != %d\n", MPH, i);
366eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette            return EXIT_FAILURE;
376eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette        }
386eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette        // test the content-based lookup
396eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette        const struct SLInterfaceID_ copy = *original;
406eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette        MPH = IID_to_MPH(&copy);
416eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette        if (MPH != i) {
42049a692ac952be43d5fcd975ec6d394ca058c9d8Alan Viverette            fprintf(stderr, "error: IID_to_MPH(copy) = %d != %d\n", MPH, i);
436eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette            return EXIT_FAILURE;
446eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette        }
45049a692ac952be43d5fcd975ec6d394ca058c9d8Alan Viverette    }
46049a692ac952be43d5fcd975ec6d394ca058c9d8Alan Viverette    printf("OK\n");
47049a692ac952be43d5fcd975ec6d394ca058c9d8Alan Viverette    return EXIT_SUCCESS;
48049a692ac952be43d5fcd975ec6d394ca058c9d8Alan Viverette}
49049a692ac952be43d5fcd975ec6d394ca058c9d8Alan Viverette