#include "io.h"
#include "pak.h"
#include "test_utils.h"
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
  asset_pack_t *pack = load_asset_pack("assets.pak");
  if (!pack) {
    printf("Failed to load asset pack");

    return EXIT_FAILURE;
  }

  asset_t assets[] = {
      (asset_t){.name = "file01", .contents = "Hello\n"},
      (asset_t){.name = "name.txt", .contents = "Abdelrahman\n"},
      (asset_t){.name = "file02", .contents = "This is the second file\n"},
  };

  for (u64 i = 0; i < ARRLEN(assets); ++i) {
    buf_t *buf = read_file_from_pack(pack, assets[i].name);
    if (!buf || buf->size == 0) {
      printf("Failed to read file %s\n", assets[i].name);

      return EXIT_FAILURE;
    }

    if (!(STREQ((char *)(buf->data), assets[i].contents))) {
      printf("File contents mismatch for file %s\n", assets[i].name);

      return EXIT_FAILURE;
    }

    close_pack_file(&buf);
    if (buf) {
      printf("Failed to close file %s\n", assets[i].name);

      return EXIT_FAILURE;
    }
  }

  close_asset_pack(&pack);
  if (pack) {
    printf("Failed to close asset pack");

    return EXIT_FAILURE;
  }

  return EXIT_SUCCESS;
}