This code is used for testing API and can show use cases at the same time. Be careful to only use the publicly declared and cross referenced APIs. Some APIs are internal only.
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "openicc_config.h"
#include "openicc_version.h"
#include "openicc_config_internal.h"
#define TESTS_RUN \
TEST_RUN( testVersion, "Version matching", 1 ); \
TEST_RUN( testI18N, "i18n", 1 ); \
TEST_RUN( testIO, "file i/o", 1 ); \
TEST_RUN( testStringRun, "String handling", 1 ); \
TEST_RUN( testConfig, "JSON handling", 1 ); \
TEST_RUN( testDeviceJSON, "Device JSON handling", 1 ); \
TEST_RUN( testPaths, "Paths", 1 ); \
TEST_RUN( testXDG, "XDG", 1 ); \
TEST_RUN( testODB, "ODB", 1 ); \
//TEST_RUN( testDB, "DB" );
void oyjlLibRelease();
#define OYJL_TEST_MAIN_SETUP printf("\n OpenICC Test Program\n");
#define OYJL_TEST_MAIN_FINISH printf("\n OpenICC Test Program finished\n\n"); oyjlLibRelease(); if(oyjl_print_sub) free(oyjl_print_sub);
#define OYJL_TEST_NAME "test-core"
#include "oyjl_test.h"
#include "oyjl_test_main.h"
#define free_m_( ptr_ ) { if(ptr_) {free(ptr_); ptr_ = NULL;} }
oyjlTESTRESULT_e testVersion()
{
oyjlTESTRESULT_e result = oyjlTESTRESULT_UNKNOWN;
fprintf(stdout, "\n" );
fprintf(zout, "compiled version: %d\n", OPENICC_VERSION );
result = oyjlTESTRESULT_SUCCESS;
else
result = oyjlTESTRESULT_FAIL;
return result;
}
#include <locale.h>
oyjlTESTRESULT_e testI18N()
{
const char * lang = 0, * text, * loc;
oyjlTESTRESULT_e result = oyjlTESTRESULT_UNKNOWN;
fprintf(stdout, "\n" );
loc = setlocale(LC_ALL,"de_DE.UTF8");
lang = setlocale(LC_ALL, NULL);
if(lang && (strcmp(lang, "C") != 0))
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"setlocale() initialised good %s ", lang );
} else
{ PRINT_SUB( oyjlTESTRESULT_XFAIL,
"setlocale() initialised failed %s ", lang );
}
text = _("Camera");
if(strcmp(text,"Kamera") == 0)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"dgettext() good \"%s\" ", text );
} else
{ PRINT_SUB( oyjlTESTRESULT_XFAIL,
"dgettext() failed \"%s\" ", text );
}
setlocale(LC_ALL,"");
return result;
}
oyjlTESTRESULT_e testPaths()
{
oyjlTESTRESULT_e result = oyjlTESTRESULT_UNKNOWN;
fprintf(stdout, "\n" );
const char * type_names[] = {
"openiccPATH_NONE", "openiccPATH_ICC", "openiccPATH_POLICY", "openiccPATH_MODULE", "openiccPATH_SCRIPT", "openiccPATH_CACHE", "openiccPATH_LOGO"
};
};
const char * scope_names[] = {
"openiccSCOPE_USER_SYS", "openiccSCOPE_USER", "openiccSCOPE_SYSTEM", "openiccSCOPE_OPENICC", "openiccSCOPE_MACHINE"
};
};
int i,j;
for(i = 1; i <= 6; ++i)
for(j = 1; j <= 4; ++j)
{
if(text)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccGetInstallPath( %s, %s ): %s", type_names[i],scope_names[j],
openiccNoEmptyString_m_(text) );
free_m_(text);
} else
{ PRINT_SUB( oyjlTESTRESULT_XFAIL,
"openiccGetInstallPath( %s, %s ): %s", type_names[i],scope_names[j],
openiccNoEmptyString_m_(text) );
}
}
return result;
}
const char * oiGetConfigFileName()
{
const char * file_name = "../../../OpenICC_device_config_DB.json";
FILE * fp = fopen( file_name, "r" );
if(!fp)
{
file_name = "../OpenICC_device_config_DB.json";
fp = fopen( file_name, "r" );
if(!fp)
{
file_name = "OpenICC_device_config_DB.json";
fp = fopen( file_name, "r" );
if(!fp)
{
file_name = "../openicc/OpenICC_device_config_DB.json";
fp = fopen( file_name, "r" );
if(!fp)
{
file_name = "../config/OpenICC_device_config_DB.json";
fp = fopen( file_name, "r" );
if(!fp)
{
file_name = "../../../config/OpenICC_device_config_DB.json";
fp = fopen( file_name, "r" );
if(!fp)
{
file_name = "../../../openicc/OpenICC_device_config_DB.json";
fp = fopen( file_name, "r" );
if(!fp)
file_name = NULL;
}
}
}
}
}
}
if(fp)
{
fclose(fp);
fprintf(zout, "\tfile_name: %s\n", file_name );
} else
{
fprintf(zout, "\tfile_name: \"\"\npwd: " );
system("pwd");
}
return file_name;
}
int openiccMakeDir_ (const char *);
oyjlTESTRESULT_e testIO ()
{
oyjlTESTRESULT_e result = oyjlTESTRESULT_UNKNOWN;
fprintf(stdout, "\n" );
int error = 0;
int odo = 0;
char * t1 = NULL, *t2 = NULL, *t3 = NULL;
const char * file_name = "/usr/share/color/icc/OpenICC/sRGB.icc";
int size = 0;
FILE * fp = NULL;
t1 = openiccExtractPathFromFileName_( file_name );
fprintf(zout, "file_name: %s\n", file_name );
error = !t1 || (strlen(t1) >= strlen(file_name));
if(!error)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccExtractPathFromFileName_() %s", t1 );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccExtractPathFromFileName_() " );
}
file_name = "../icc/OpenICC/sRGB.icc";
t2 = openiccExtractPathFromFileName_( file_name );
fprintf(zout, "file_name: %s\n", file_name );
error = !t2 || (strlen(t2) >= strlen(file_name));
if(!error)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccExtractPathFromFileName_() %s", t2 );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccExtractPathFromFileName_() %s ", t2?t2:"" );
}
file_name = "~/.local/share/color/icc/OpenICC/sRGB.icc";
t3 = openiccExtractPathFromFileName_( file_name );
fprintf(zout, "file_name: %s\n", file_name );
error = !t3 || (strlen(t3) >= strlen(file_name));
if(!error)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccExtractPathFromFileName_() %s", t3 );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccExtractPathFromFileName_() %s ", t3?t3:"" );
}
if(openiccIsDirFull_("/usr/share/color/icc"))
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccIsDirFull_() %s ", "/usr/share/color/icc" );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccIsDirFull_() %s ", "/usr/share/color/icc" );
}
if(openiccIsDirFull_(t2))
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccIsDirFull_() ! %s", t2 );
} else
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccIsDirFull_() ! %s ", t2?t2:"" );
}
if(openiccIsDirFull_("/not/existing"))
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccIsDirFull_(/not/existing) ! " );
} else
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccIsDirFull_(/not/existing) ! " );
}
free_m_(t3);
t3 = openiccPathGetParent_(OPENICC_DEVICE_PATH);
fprintf(zout, "name: %s\n", OPENICC_DEVICE_PATH );
error = !t3 || (strlen(t3) >= strlen(OPENICC_DEVICE_PATH));
if(!error)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccPathGetParent_() %s ", t3 );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccPathGetParent_() %s ", t3?t3:"" );
}
free_m_(t3);
t3 = openiccPathGetParent_(OPENICC_DEVICE_PATH "/");
fprintf(zout, "name: %s\n", OPENICC_DEVICE_PATH "/" );
error = !t3 || (strlen(t3) >= strlen(OPENICC_DEVICE_PATH "/"));
if(!error)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccPathGetParent_() %s ", t3 );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccPathGetParent_() %s ", t3?t3:"" );
}
free_m_(t1);
free_m_(t2);
free_m_(t3);
odo = *openicc_debug;
*openicc_debug = 2;
if(openiccIsFileFull_("/not/existing", "r"))
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccIsFileFull_(\"/not/existing\", \"r\") ! " );
} else
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccIsFileFull_(\"/not/existing\", \"r\") ! " );
}
if(openiccIsFileFull_("/etc/shadow", "rw"))
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccIsFileFull_(/etc/shadow) ! " );
} else
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccIsFileFull_(/etc/shadow) ! " );
}
file_name = oiGetConfigFileName();
if(openiccIsFileFull_("................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................", "rw"))
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccIsFileFull_(longlong) ! " );
} else
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccIsFileFull_(longlong) ! " );
}
if(openiccIsFileFull_(file_name, "r"))
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccIsFileFull_() " );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccIsFileFull_() " );
}
t1 = openiccReadFile( file_name, &size );
if(t1 && size == 2394)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccReadFile() &size %d ", size );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccReadFile() %s ", file_name );
}
free_m_(t1);
t1 = openiccReadFile( "not_existing.file", &size );
if(t1 == NULL)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccReadFile(not existing) &size %d ", size );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccReadFile(not existing) %s ", file_name );
}
free_m_(t1);
error = openiccMakeDir_ ("");
if(!error)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccMakeDir_(\"\") %d ", error );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccMakeDir_(\"\") %d ", error );
}
error = openiccMakeDir_ (NULL);
if(error)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccMakeDir_(NULL) %d ", error );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccMakeDir_(NULL) %d ", error );
}
error = openiccMakeDir_ ("/never");
if(error)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccMakeDir_(/never) %d ", error );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccMakeDir_(/never) %d ", error );
}
error = openiccMakeDir_ ("/etc/never/ever");
if(error)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccMakeDir_(/etc/never/ever) %d ", error );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccMakeDir_(/etc/never/ever) %d ", error );
}
*openicc_debug = odo;
t1 = openiccReadFile( file_name, &size );
file_name = "test.txt";
if(t1)
size = strlen(t1);
size = openiccWriteFile( file_name,
t1,
size );
if(size)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccWriteFile() size %d ", size );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccWriteFile() %s ", file_name );
}
free_m_(t1);
fp = fopen( file_name, "r" );
size = 0;
error = openiccReadFileSToMem( fp, &t1, &size );
if(t1)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccReadFileSToMem() &size %u ", (unsigned)size );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccReadFileSToMem() %s ", file_name );
}
free_m_(t1);
if(fp) fclose(fp);
return result;
}
oyjlTESTRESULT_e testStringRun ()
{
oyjlTESTRESULT_e result = oyjlTESTRESULT_UNKNOWN;
fprintf(stdout, "\n" );
int error = 0;
char * t = NULL;
error = openiccMessage_p(
openiccMSG_WARN, config,
"test message %s", OPENICC_VERSION_NAME );
if( !error )
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccMessage_p()... " );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccMessage_p()... " );
}
oyjlStringAdd( &t, 0,0, OPENICC_BASE_PATH "%s", "/behaviour");
if( t && strlen(t) > strlen(OPENICC_BASE_PATH) )
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"oyjlStringAdd() %s", t );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"oyjlStringAdd() ... " );
}
STRING_ADD( t, "/rendering_intent" );
if( t && strlen(t) > 40 )
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccStringAdd_() %s", t );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccStringAdd_() ... " );
}
free_m_(t);
return result;
}
oyjlTESTRESULT_e testConfig()
{
oyjlTESTRESULT_e result = oyjlTESTRESULT_UNKNOWN;
const char * file_name;
char * text;
int size = 0;
int key_names_n = 0, values_n = 0,i,
error OI_UNUSED = 0;
char ** key_names = NULL, ** values = NULL;
const char * base_key;
oyjl_val root, array, v;
char * json = NULL;
int level = 0;
fprintf(stdout, "\n" );
root = (oyjl_val) calloc( sizeof(struct oyjl_val_s), 1 );
base_key = "org/freedesktop/openicc/[]";
array = oyjlTreeGetValue( root, OYJL_CREATE_NEW, base_key );
v = oyjlTreeGetValue( array, OYJL_CREATE_NEW, "my_key_A" );
oyjlValueSetString( v, "my_value_A" );
v = oyjlTreeGetValue( array, OYJL_CREATE_NEW, "my_key_B" );
oyjlValueSetString( v, "my_value_B" );
oyjlTreeToJson( root, &level, &json ); level = 0;
if(root && json)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"oyjlTreeGetValue(root,OYJL_CREATE_NEW,\"%s\")", base_key );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"oyjlTreeGetValue(root,OYJL_CREATE_NEW,\"%s\")", base_key );
}
oyjlTreeFree( root ); root = NULL;
if(verbose)
fprintf(zout, "%s\n", json );
free_m_(json);
base_key = "org/freedesktop/openicc/device/camera/[1]";
file_name = oiGetConfigFileName();
text = openiccReadFile( file_name, &size );
root = oyjlTreeParse( text, NULL, 0 );
oyjlTreeToJson( root, &level, &json );
oyjlTreeFree( root ); root = NULL;
free_m_(text);
free_m_(json);
if(config)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"config created " );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"config created " );
}
myAllocFunc, &key_names, &key_names_n );
if(key_names_n)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccConfig_GetKeyNames() %d", key_names_n );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccConfig_GetKeyNames() " );
}
myAllocFunc, &values, &values_n );
i = 0;
while(values && values[i]) ++i;
if(key_names_n == values_n && values_n == i)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccConfig_GetStrings() %d==%d==%d", key_names_n,values_n,i );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccConfig_GetStrings() %d==%d==%d", key_names_n,values_n,i );
}
if(key_names)
for(i = 0; i < key_names_n; ++i)
{
const char * t = NULL;
if(!t)
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccConfig_GetString() " );
}
if(verbose)
fprintf(zout, "\t%s:\t\"%s\"\n", (key_names && key_names[i])?key_names[i]:"????", t?t:"????" );
myDeAllocFunc( key_names[i] );
if(values && values[i]) myDeAllocFunc(values[i]);
}
if( key_names ) { myDeAllocFunc(key_names); key_names = NULL; }
if( values ) { myDeAllocFunc(values); values = NULL; }
myAllocFunc, &key_names, &i );
if(key_names_n < i )
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccConfig_GetKeyNames(many levels) %d<%d", key_names_n,i );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccConfig_GetKeyNames(many levels) %d<%d", key_names_n,i );
}
key_names_n = i;
if(verbose)
{
for(i = 0; i < key_names_n; ++i)
{
const char * key = key_names[i];
const char * t = NULL;
fprintf(zout, "\t[%d]%s: %s%s%s\n", i, key, t?"\"":"", t?t:"XPATH", t?"\"":"");
}
}
oyjlStringListRelease( &key_names, i, myDeAllocFunc );
myAllocFunc, &key_names, &i );
if(i == 1)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccConfig_GetKeyNames(\"org\",one level) 1 == %d", i );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccConfig_GetKeyNames(\"org\",one level) 1 == %d", i );
}
i = 0;
if(verbose)
fprintf(zout, "\t%s\n", (key_names && key_names[i])?key_names[i]:"????" );
while(key_names && key_names[i]) myDeAllocFunc( key_names[i++] );
if( key_names ) { myDeAllocFunc(key_names); key_names = NULL; }
return result;
}
oyjlTESTRESULT_e testDeviceJSON ()
{
oyjlTESTRESULT_e result = oyjlTESTRESULT_UNKNOWN;
const char * file_name;
char * text = 0;
char ** keys = 0;
char ** values = 0;
int i,j, n = 0, devices_n, flags;
char * json, * full_json = NULL, * device_class;
const char * devices_filter[] = {OPENICC_DEVICE_CAMERA,NULL},
* old_device_class = NULL,
* d = NULL;
int size = 0;
const char * non_json = "{\"org\":{\"free{\"openicc\")))";
fprintf(stdout, "\n" );
if( !config )
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccConfig_FromMem(\"%s\") ", non_json );
} else
{ PRINT_SUB( oyjlTESTRESULT_XFAIL,
"openiccConfig_FromMem(\"%s\") ", non_json );
}
file_name = oiGetConfigFileName();
text = openiccReadFile( file_name, &size );
free_m_(text);
if(verbose)
fprintf( zout, "Found %d devices.\n", devices_n );
if( devices_n )
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccConfig_FromMem(\"%s\") %d ", file_name, devices_n );
} else
{ PRINT_SUB( oyjlTESTRESULT_XFAIL,
"openiccConfig_FromMem()... " );
}
for(i = 0; i < devices_n; ++i)
{
&keys, &values, malloc,free );
if(i && verbose)
fprintf( zout,"\n");
n = 0; if(keys) while(keys[n]) ++n;
if(verbose)
fprintf( zout, "[%d] device class:\"%s\" with %d key/value pairs\n", i, d, n);
for( j = 0; j < n; ++j )
{
if(verbose)
fprintf(zout, "%s:\"%s\"\n", keys[j], values[j]);
free_m_(keys[j]);
free_m_(values[j]);
}
free_m_(keys); free_m_(values);
}
if(verbose)
fprintf(zout, "\n" );
i = 2;
old_device_class, &json, malloc,free );
if( device_class && strcmp(device_class,"camera") == 0 )
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccConfig_DeviceClassGet([%d]) %s ", i, device_class );
} else
{ PRINT_SUB( oyjlTESTRESULT_XFAIL,
"openiccConfig_DeviceClassGet()... " );
}
free_m_(json);
free_m_(device_class);
if( devices_n == 2 )
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccConfig_DevicesCount(%s) %d ", OPENICC_DEVICE_CAMERA, devices_n );
} else
{ PRINT_SUB( oyjlTESTRESULT_XFAIL,
"openiccConfig_DevicesCount()... " );
}
old_device_class = NULL;
for(i = 0; i < devices_n; ++i)
{
flags = 0;
if(i != 0)
flags |= OPENICC_CONFIGS_SKIP_HEADER;
if(i != devices_n - 1)
flags |= OPENICC_CONFIGS_SKIP_FOOTER;
old_device_class, &json, malloc,free );
old_device_class = d;
STRING_ADD( full_json, json );
free_m_(json);
}
free_m_(full_json);
if( devices_n == 2 )
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccConfig_DeviceGetJSON() " );
} else
{ PRINT_SUB( oyjlTESTRESULT_XFAIL,
"openiccConfig_DeviceGetJSON() " );
}
return result;
}
#include "xdg_bds.h"
oyjlTESTRESULT_e testXDG()
{
oyjlTESTRESULT_e result = oyjlTESTRESULT_UNKNOWN;
const char * config_file = OPENICC_DB_PREFIX OPENICC_SLASH OPENICC_DB;
int i;
int npaths;
xdg_error er;
char **paths;
fprintf(stdout, "\n" );
if ((npaths = xdg_bds(&er, &paths, xdg_conf, xdg_write,
(scope == openiccSCOPE_SYSTEM) ? xdg_local : xdg_user,
config_file)) == 0)
{
ERRc_S("%s %d", _("Could not find config"), scope );
return 1;
}
if(verbose)
{
fprintf( zout, "%s\n", _("Paths:") );
for(i=0; i < npaths; ++i)
fprintf( zout, "%s\n", paths[i]);
}
xdg_free(paths, npaths);
if(npaths == 1)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"xdg_bds openiccSCOPE_USER found %d ", npaths );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"xdg_bds openiccSCOPE_USER found %d ", npaths );
}
if ((npaths = xdg_bds(&er, &paths, xdg_conf, xdg_write,
(scope == openiccSCOPE_SYSTEM) ? xdg_local : xdg_user,
config_file)) == 0)
{
ERRc_S("%s %d", _("Could not find config"), scope );
}
if(verbose)
{
fprintf( zout, "%s\n", _("Paths:") );
for(i=0; i < npaths; ++i)
fprintf( zout, "%s\n", paths[i]);
}
xdg_free(paths, npaths);
if(npaths == 1)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"xdg_bds openiccSCOPE_SYSTEM found %d ", npaths );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"xdg_bds openiccSCOPE_SYSTEM found %d ", npaths );
}
return result;
}
#include "openicc_db.h"
oyjlTESTRESULT_e testODB()
{
oyjlTESTRESULT_e result = oyjlTESTRESULT_UNKNOWN;
const char * top_key_name = OPENICC_DEVICE_PATH;
const char * key = "org/freedesktop/openicc/device/camera/[0]/key";
char * gkey, * temp, * temp2;
char ** key_names = NULL;
int key_names_n = 0, i,error = 0;
fprintf(stdout, "\n" );
if(db)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"db created " );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"db created " );
}
myAllocFunc, myDeAllocFunc,
NULL, &key_names_n );
if(!key_names_n)
{
const char * db_file = oiGetConfigFileName();
int size = 0;
char * text = openiccReadFile( db_file, &size );
if(text)
{
int count = openiccArray_Count( (openiccArray_s*)&db->
ks );
free_m_(text);
if( openiccArray_Push( (openiccArray_s*)&db->ks ))
{
ERRc_S("%s", _("Could not alloc memory") );
return 1;
}
db->ks[count] = config;
}
}
if(strcmp(key,"key") == 0 && !temp)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccGetShortKeyFromFullKeyPath(xxx/key) \"%s\"", key );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccGetShortKeyFromFullKeyPath(xxx/key) \"%s\"", key );
}
if(strcmp(key,"key") == 0 && !temp)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccGetShortKeyFromFullKeyPath(key) \"%s\"", key );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccGetShortKeyFromFullKeyPath(key) \"%s\"", key );
}
if(strcmp(key,"key") == 0 && temp)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccGetShortKeyFromFullKeyPath(key.ignore) \"%s\"", key );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccGetShortKeyFromFullKeyPath(key.ignore) \"%s\"", key );
}
free_m_(temp);
if(strcmp(key,"key") == 0 && temp)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccGetShortKeyFromFullKeyPath(path/key.ignore)" );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccGetShortKeyFromFullKeyPath(path/key.ignore)\"%s\"", key );
}
free_m_(temp);
myAllocFunc, myDeAllocFunc,
&key_names, &key_names_n );
if(key_names_n)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccDB_GetKeyNames() %d", key_names_n );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccDB_GetKeyNames() " );
}
for(i = 0; i < key_names_n; ++i)
{
const char * t = "";
if(error)
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccDB_GetString() " );
}
if(verbose)
fprintf(zout, "\t%s:\t\"%s\"\n", key_names[i]?key_names[i]:"????", t?t:"" );
}
oyjlStringListRelease( &key_names, key_names_n, myDeAllocFunc );
key = "org/freedesktop/openicc/device/camera";
if(temp)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccDBSearchEmptyKeyname() %s", temp );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccDBSearchEmptyKeyname() %s", temp );
}
gkey = NULL;
oyjlStringAdd( &gkey, 0,0, "%s%s", temp, "/my_test_key");
error =
openiccDBSetString( gkey, openiccSCOPE_SYSTEM,
"my_test_value",
"my_test_comment" );
if(!error)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccDBSetString(%s) %d", gkey, error );
} else
{ PRINT_SUB( oyjlTESTRESULT_XFAIL,
"openiccDBSetString(%s) %d", gkey, error );
}
error =
openiccDBSetString( gkey, openiccSCOPE_USER,
"my_test_value",
"my_test_comment" );
if(!error)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccDBSetString(%s) %d", gkey, error );
} else
{ PRINT_SUB( oyjlTESTRESULT_XFAIL,
"openiccDBSetString(%s) %d", gkey, error );
}
const char * value = NULL;
if(error == 0 && value && strcmp(value, "my_test_value") == 0)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccDB_GetString(%s) %d", gkey, error, value );
} else
{ PRINT_SUB( oyjlTESTRESULT_FAIL,
"openiccDB_GetString(%s) %d", gkey, error );
}
if(!error && temp && temp2 && strcmp(temp, temp2) == 0)
{ PRINT_SUB( oyjlTESTRESULT_SUCCESS,
"openiccDBSetString(%s,\"delete\") %d", gkey, error );
} else
{ PRINT_SUB( oyjlTESTRESULT_XFAIL,
"openiccDBSetString(%s,\"delete\") %d", gkey, error );
}
free_m_(gkey);
free_m_(temp);
free_m_(temp2);
return result;
}