test-sorted.c revision 548dde4863e9a2315e3f327efe63ff55949addb8
1ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang/* test-sorted.c 2ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * 3ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * This test ensures that the ExifTagTable[] array is stored in sorted 4ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * order. If that were not so, then it a binary search of the array would 5ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * not give correct results. 6ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * 7ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * Copyright 2009 Dan Fandrich <dan@coneharvesters.com> 8ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * 9ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * This library is free software; you can redistribute it and/or 10ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * modify it under the terms of the GNU Lesser General Public 11ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * License as published by the Free Software Foundation; either 12ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * version 2 of the License, or (at your option) any later version. 13b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian * 14b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian * This library is distributed in the hope that it will be useful, 15b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian * but WITHOUT ANY WARRANTY; without even the implied warranty of 16b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian * Lesser General Public License for more details. 18b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian * 19b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian * You should have received a copy of the GNU Lesser General Public 20b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian * License along with this library; if not, write to the 21b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 22b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian * Boston, MA 02110-1301 USA 23b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian */ 24b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 25b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#include <libexif/exif-tag.h> 26b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#include <stdio.h> 27ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 28ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangint 29b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanianmain (void) 30b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian{ 31b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian int rc = 0; 32ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang unsigned int i, num; 33ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ExifTag last = 0, current; 34b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian num = exif_tag_table_count() - 1; /* last entry is a NULL terminator */ 35b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian for (i=0; i < num; ++i) { 36b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian current = exif_tag_table_get_tag(i); 37b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian if (current < last) { 38b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian printf("Tag 0x%04x in ExifTagTable[] is out of order\n", 39b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian current); 40b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian rc = 1; 41b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian } 42b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian if (exif_tag_table_get_name(i) == NULL) { 43b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian printf("Tag 0x%04x has a NULL name\n", current); 44b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian rc = 1; 45b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian } 46b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian last = current; 47b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian } 48b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 49b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian return rc; 50b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian} 51b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian