Ejemplo n.º 1
0
void testLifecycleAkwarde(void)
{
  Entity *mainStruct = yeCreateArray(NULL, NULL);
  Entity *subStruct1 = yeCreateArray(mainStruct, NULL);
  Entity *subStruct2 = yeCreateArray(subStruct1, NULL);
  Entity *test3 = yeCreateString("i am an int entity", NULL, NULL);

  g_assert(mainStruct);
  g_assert(subStruct1);
  g_assert(subStruct2);
  g_assert(test3);
  g_assert(mainStruct->refCount == 1);
  g_assert(subStruct1->refCount == 1);
  g_assert(subStruct2->refCount == 1);
  g_assert(test3->refCount == 1);
  g_assert(!yePushBack(mainStruct, test3, NULL));
  g_assert(test3->refCount == 2);
  g_assert(!yePushBack(subStruct1, test3, NULL));
  g_assert(test3->refCount == 3);
  g_assert(!yePushBack(subStruct2, test3, NULL));
  g_assert(test3->refCount == 4);
  YE_DESTROY(mainStruct);
  g_assert(test3->refCount == 1);
  g_assert(mainStruct == NULL);
  YE_DESTROY(test3);
}
Ejemplo n.º 2
0
/* this tests is actually usefull only with valgrind */
void testLifecycleFlow(void)
{
  Entity *mainStruct = yeCreateArray(NULL, NULL);
  Entity *subStruct1 = yeCreateArray(mainStruct, NULL);
  Entity *subStruct2 = yeCreateArray(NULL, NULL);
  Entity *test2 = yeCreateInt(1, subStruct2, NULL);
  Entity *test3 = yeCreateFloat(1, subStruct2, NULL);

  g_assert(test2);
  g_assert(test3);
  g_assert(mainStruct);
  g_assert(subStruct1);
  g_assert(subStruct2);
  g_assert(yeLen(mainStruct) == 1);
  g_assert(yeLen(subStruct2) == 2);
  g_assert(!yePushBack(mainStruct, subStruct2, NULL));
  g_assert(yeLen(mainStruct) == 2);
  g_assert(mainStruct->refCount == 1);
  g_assert(subStruct1->refCount == 1);
  g_assert(test3->refCount == 1);
  g_assert(test2->refCount == 1);
  g_assert(subStruct2->refCount == 2);
  YE_DESTROY(subStruct2);
  g_assert(subStruct2);
  g_assert(subStruct2->refCount == 1);  
  YE_DESTROY(mainStruct);
  g_assert(mainStruct == NULL);
}
Ejemplo n.º 3
0
// I have no index...
static void create_tild_multi_layers(Entity *mod_description, int tild,
				     Entity **map, Entity *desc, int pos,
				     int width)
{
  Entity *sp = yeGetByStrFast(desc, "start_pos");
  int start_pos = yeGetInt(yeGetByIdx(sp, 0)) +
    yeGetInt(yeGetByIdx(sp, 0)) * (width ? width : 8000);

  if (start_pos == pos) {
    yePushBack(yeCreateArrayAt(map[1], NULL, pos),
	       yeGetByStrFast(desc, "start_id"), NULL);
  }

  Y_BLOCK_ARRAY_FOREACH_PTR(YE_TO_ARRAY(mod_description)->values, tmp,
			    it, ArrayEntry) {
    const char *char_str;

    if (!tmp)
      continue;

    char_str = yeGetString(yeGetByStr(tmp->entity, "map-char"));
    if (char_str[0] == tild) {
      if (yeStringIndexChar(yeGetByStrFast(desc, "ground_char"), char_str) >= 0) {
	yeCreateInt(it, yeCreateArrayAt(map[0], NULL, pos), NULL);
      } else {
	yeCreateInt(it, yeCreateArrayAt(map[2], NULL, pos), NULL);
      }
      return;
    }
  }
  yeCreateInt(tild, yeCreateArrayAt(map[0], NULL, pos), NULL);
}
Ejemplo n.º 4
0
void testLifecycleComplex(void)
{
  Entity *mainStruct = yeCreateArray(NULL, NULL);
  Entity *subStruct1 = yeCreateArray(mainStruct, NULL);
  Entity *subStruct2 = yeCreateArray(mainStruct, NULL);
  Entity *test3 = yeCreateFloat(1, subStruct2, NULL);

  g_assert(mainStruct);
  g_assert(subStruct1);
  g_assert(subStruct2);
  g_assert(!yePushBack(subStruct1, subStruct2, NULL));
  yeExpandArray(subStruct2, 5);
  yeAttach(subStruct2, test3, 2, NULL);
  g_assert(mainStruct->refCount == 1);
  g_assert(subStruct1->refCount == 1);
  g_assert(subStruct2->refCount == 2);
  YE_DESTROY(mainStruct);
  g_assert(mainStruct == NULL);
}
Ejemplo n.º 5
0
void *load_entity(int nb, void **args)
{
  Entity *desc = args[0];

  if (nb != 1) {
    DPRINT_ERR("numbers of arguments incorect\n");
    return NULL;
  }

  const char *file_name = yeGetString(yeGetByStrFast(desc, "map"));
  int fd = open(file_name, O_RDONLY);
  int width = 0, len = 0;
  Entity *resources = ywMapGetResourcesFromEntity(desc);
  char *name = nb > 2 ? args[2] : NULL;
  Entity *father = nb > 1 ? args[1] : NULL;
  int ret = 0;
  Entity *entries;

  if (fd < 1) {
    DPRINT_ERR("error when opening '%s'\n", file_name);
    goto error;
  }

  yeReCreateString("container", desc, "<type>");
  yeCreateString("stacking", desc, "cnt-type");
  entries = yeCreateArray(desc, "entries");

  yeCreateArray(entries, NULL);
  yeCreateArray(entries, NULL);
  yeCreateArray(entries, NULL);

  if (read_map(fd, entries, resources, file_name, &width, &len, desc))
    goto error;

  YE_ARRAY_FOREACH(entries, map) {
    yeCreateString("map", map, "<type>");
    yeCreateInt(width, map, "width");
    yeCreateInt(len, map, "len");
    yePushBack(map, resources, "resources");
  }
Ejemplo n.º 6
0
Archivo: map.c Proyecto: IGLOU-EU/yirl
int ywMapPushElem(YWidgetState *state, Entity *toPush,
		  Entity *pos, const char *name)
{
  int ret =  yePushBack(ywMapGetCase(state, pos), toPush, name);
  return ret;
}