#!/bin/sh
. $(dirname $(readlink -f $0))/framework.sh

WORDS="Label-0
Label-1
Label-a = 9
Label-b = 10
Label-c
Label-d = 11
Label-e = 11
Label-f = 4"

# Check that counter does not go backwards
testsuccessequal "#ifndef TRIE_HASH_PerfectHash
#define TRIE_HASH_PerfectHash
#include <stddef.h>
#include <stdint.h>
enum { MyCounter = 12 };
enum PerfectKey {
    Label_0 = 0,
    Label_1 = 1,
    Label_a = 9,
    Label_b = 10,
    Label_c = 11,
    Label_d = 11,
    Label_e = 11,
    Label_f = 4,
    Unknown = -1,
};
static enum PerfectKey PerfectHash(const char *string, size_t length);
static enum PerfectKey PerfectHash7(const char *string)
{
    switch(string[0]) {
    case 'L':
        switch(string[1]) {
        case 'a':
            switch(string[2]) {
            case 'b':
                switch(string[3]) {
                case 'e':
                    switch(string[4]) {
                    case 'l':
                        switch(string[5]) {
                        case '-':
                            switch(string[6]) {
                            case '0':
                                return Label_0;
                                break;
                            case '1':
                                return Label_1;
                                break;
                            case 'a':
                                return Label_a;
                                break;
                            case 'b':
                                return Label_b;
                                break;
                            case 'c':
                                return Label_c;
                                break;
                            case 'd':
                                return Label_d;
                                break;
                            case 'e':
                                return Label_e;
                                break;
                            case 'f':
                                return Label_f;
                            }
                        }
                    }
                }
            }
        }
    }
    return Unknown;
}
static enum PerfectKey PerfectHash(const char *string, size_t length)
{
    switch (length) {
    case 7:
        return PerfectHash7(string);
    default:
        return Unknown;
    }
}
#endif                       /* TRIE_HASH_PerfectHash */" triehash --multi-byte=0 --counter-name=MyCounter /dev/stdin
