#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include "sdbm.h"
bool check;
int main(){ //Creates three databases
puts("Creating 3 databases");
check = (sdbm_create("DATA1")&&sdbm_create("DATA2")&&sdbm_create("DATA3"));
if (check) {puts("Three databases created!");}
else {puts("Failed to create three databases!");}
puts("Insert, remove, put, sync, get"); //test insert,remove,put,sync,get
sdbm_open("DATA1");
sdbm_insert("KEY1", "VAL1");
sdbm_put("KEY1", "VAL1");
sdbm_get("DATA1", "KEY1");
sdbm_sync();
sdbm_close();
puts("Creating database with illegal arguments"); //Creates with illegal arguments for filenames
check = sdbm_create("/");
if (check) {puts("Accepted Illegal argument.");}
else {puts("Rejected Illegal argument.");}
puts("Creating database with file name NULL"); //Tests on a file named null
check = sdbm_create("NULL");
if (check) {puts("Accepted NULL. Will now try to open NULL");
check = sdbm_open("NULL");
if (check) {puts("Opened NULL. Will now try to insert in NULL");
check = sdbm_insert("KEY1", "VAL1");
if (check) {puts("Insert worked");}
else {puts("Insert failed");}
}
else {puts("Could not open NULL.");}
}
else {puts("Rejected NULL Filename.");}
puts("Opening a database, then creating different one"); //Creating while open
sdbm_open("DATA1");
check = sdbm_create("DATA4");
if (check) {puts("Created while open.");}
else {puts("Could not create while open.");}
puts("Opening while open");
check = sdbm_open("DATA2"); //Opening while one is open
if (check) {puts("Opened while open.");}
else {puts("Could not open while open.");}
sdbm_close("DATA1");
sdbm_close("DATA2");
puts("Opening a database twice in a row"); //Opening DATA3 twice in a row
sdbm_open("DATA3");
check = sdbm_open("DATA3");
if (check) {puts("Opened twice");}
else {puts("Failed to open twice");}
puts("Opening after closed"); //
sdbm_close("DATA3");
check = sdbm_open("DATA3");
if (check) {puts("Opened after closed.");}
else {puts("Opened after closed.");}
sdbm_close("DATA3");
puts("Attempting to open nonexistent database.");
check = sdbm_open("garbage");
if (check) {puts("Opened nonexistent database.");}
else {puts("Could not open a nonexistent database.");}
/*
puts("Inserting 50 keys");
char *key = "key";
for (int i = 0; i < 50; i++) {
char *k = malloc (12);
k = strcat(key, i+1); //fix this
sdbm_insert(k);
}
puts("Finished insertion, checking get, remove, put");
sdbm_get("key1");
sdbm_remove("key2");
sdbm_put("key1", "val1");
sdbm_get("key1");
*/
return EXIT_SUCCESS;
}