/*
 * Copyright 2001-2004 Brandon Long
 * All Rights Reserved.
 *
 * ClearSilver Templating System
 *
 * This code is made available under the terms of the ClearSilver License.
 * http://www.clearsilver.net/license.hdf
 *
 */

/*
 * Tests for ulist library
 */

#include "util/neo_misc.h"
#include "util/neo_err.h"
#include "util/ulist.h"

NEOERR *TestIntegerStorage() {
  NEOERR *err;
  ULIST *arr;
  int x;

  // Simple append test
  err = uListInit(&arr, 100, 0);
  if (err) return nerr_pass(err);
  for (x = 0; x < 1000; x++) {
    err = uListAppend(arr, (void *)x);
    if (err) return nerr_pass(err);
  }

  for (x = 0; x < 1000; x++) {
    int y;

    err = uListGet(arr, x, (void *)&y);
    if (err) return nerr_pass(err);
    if (x != y) {
      return nerr_raise(NERR_ASSERT, 
          "Value returned didn't match value stored: Got %d, Expected %d", 
          y, x);
    }
  }

  return STATUS_OK;
}


int main(int argc, char *argv[]) {
  NEOERR *err;

  nerr_init();

  err = TestIntegerStorage();
  if (err) {
    nerr_log_error(err);
    printf("FAIL\n");
    return -1;
  }
  printf("PASS\n");
  return 0;
}