+#include <stdio.h>
+#include <string.h>
+#include "emufs.h"
+#include "tipo3.h"
+#include "indices.h"
+#include "indice_bplus.h"
+
+
+char* cargar_registro(char* texto_ini,int len_ini, CLAVE clave, char *texto_fin, int len_fin)
+{
+ char *reg;
+ reg = (char*)malloc(len_ini+sizeof(CLAVE)+len_fin+1); /* +1 para el \0 */
+ memcpy(reg, texto_ini, len_ini);
+ memcpy(reg+len_ini, &clave, sizeof(CLAVE));
+ strcpy(reg+len_ini+sizeof(CLAVE), texto_fin);
+ return reg;
+}
+
+
+void imprimir_reg(char* reg, int off, int len)
+{
+ CLAVE clave;
+ int i;
+ memcpy(&clave, reg+off, sizeof(CLAVE));
+ printf("CLAVE = %d\n", clave);
+ printf("REGISTRO =");
+ for(i=0; i<len; i++) printf("%c",reg[i]);
+ printf("\n");
+ printf("TAMANIO REGISTRO = %d\n\n", len);
+}
+
+
+
+int main (int argc,char* argv[])
+{
+ CLAVE clave;
+ char *texto, *texto2;
+ char *r;
+ EMUFS *emu;
+ int tam_nodo = SIZE_B_PLUS_HEADER + sizeof(CLAVE)*5 + sizeof(CLAVE)*6;
+ EMUFS_REG_SIZE len;
+ int err=0, i;
+
+ texto = "PARTE COSNSTANTE, clave =";
+ texto2= "FIN DE REGISTRO DE LONG CONSTANTE";
+ emu = emufs_crear("test",T1,512,strlen(texto2));
+ emufs_agregar_indice(emu,"claveidx",IND_PRIMARIO,IND_B_PLUS,IDX_INT,strlen(texto),tam_nodo);
+
+
+/*REGISTRO 1*/
+ clave.i_clave = 77;
+ r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+ imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+ len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+ emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+ PERR("REGISTRO 1 GRABADO");
+ free(r);
+
+/*REGISTRO 2*/
+ clave.i_clave = 90;
+ r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+ imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+ len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+ emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+ PERR("REGISTRO 2 GRABADO");
+ free(r);
+
+/*REGISTRO 3 */
+ clave.i_clave = 95;
+ r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+ imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+ len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+ emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+ PERR("REGISTRO 3 GRABADO");
+ free(r);
+
+/*REGISTRO 4 */
+ clave.i_clave = 99;
+ r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+ imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+ len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+ emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+ free(r);
+
+/*REGISTRO 5 */
+ clave.i_clave = 102;
+ r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+ imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+ len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+ emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+ PERR("REGISTRO 5 GRABADO");
+ free(r);
+
+/*REGISTRO 6*/
+ clave.i_clave = 93;
+ r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+ imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+ len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+ emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+ PERR("REGISTRO 6 GRABADO");
+ free(r);
+
+/*REGISTRO 7*/
+ clave.i_clave = 80;
+ r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+ imprimir_reg(r, strlen(texto), strlen(texto)+strlen(texto2)+sizeof(CLAVE));
+ len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+ emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+ PERR("REGISTRO 7 GRABADO");
+ free(r);
+
+for ( i=0; i<10000; i++){
+ srandom(i);
+ clave.i_clave = random();
+ r = cargar_registro(texto, strlen(texto), clave, texto2, strlen(texto2));
+ len = strlen(texto)+strlen(texto2)+sizeof(CLAVE);
+ emufs_tipo3_insertar_ordenado(emu, r, len, &err);
+ free(r);
+}
+
+emufs_destruir(emu);
+
+ return 0;
+
+}