276 lines
7.5 KiB
PHP
276 lines
7.5 KiB
PHP
<?php
|
|
|
|
// require_once(DIR_ALVEOLATA . '/definitions.php');
|
|
require_once(DIR_ALVEOLATA . '/list/functions.php');
|
|
require_once(DIR_ALVEOLATA . '/database/implementation-sqlite/wrapper-class.php');
|
|
require_once(DIR_ALVEOLATA . '/database/functions.php');
|
|
// require_once(DIR_ALVEOLATA . '/storage/implementation-sqltable/functions.php');
|
|
require_once(DIR_ALVEOLATA . '/storage/implementation-sqltable/wrapper-class.php');
|
|
// require_once(DIR_ALVEOLATA . '/storage/implementation-sqltablecluster/functions.php');
|
|
require_once(DIR_ALVEOLATA . '/storage/implementation-sqltablecluster/wrapper-class.php');
|
|
|
|
|
|
\alveolata\test\add(
|
|
[
|
|
'name' => 'alveolata',
|
|
'sections' => [
|
|
[
|
|
'name' => 'storage',
|
|
'sections' => [
|
|
[
|
|
'name' => 'sqltablecluster',
|
|
'setup' => function (&$environment) {
|
|
$environment['path_database'] = '/tmp/localdb.sqlite';
|
|
exec(sprintf('echo "" > %s', $environment['path_database']));
|
|
$database = \alveolata\database\make(
|
|
'sqlite',
|
|
[
|
|
'path' => $environment['path_database'],
|
|
]
|
|
);
|
|
$database->query(
|
|
'CREATE TABLE fehuz(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
value TEXT
|
|
);',
|
|
[]
|
|
);
|
|
$database->query(
|
|
'CREATE TABLE uruz(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
fehuz_id INTEGER NOT NULL,
|
|
value TEXT
|
|
);',
|
|
[]
|
|
);
|
|
$database->query(
|
|
'CREATE TABLE thurisaz(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
value TEXT
|
|
);',
|
|
[]
|
|
);
|
|
$database->query(
|
|
'CREATE TABLE ansuz(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
fehuz_id INTEGER NOT NULL,
|
|
thurisaz_id INTEGER NOT NULL,
|
|
FOREIGN KEY (fehuz_id) REFERENCES fehuz(id),
|
|
FOREIGN KEY (thurisaz_id) REFERENCES thurisaz(id)
|
|
);',
|
|
[]
|
|
);
|
|
$sqltable_thurisaz = \alveolata\storage\implementation_sqltable::make(
|
|
$database,
|
|
'thurisaz'
|
|
);
|
|
$sqltablecluster = \alveolata\storage\implementation_sqltablecluster::make(
|
|
\alveolata\storage\implementation_sqltable::make(
|
|
$database,
|
|
'fehuz'
|
|
),
|
|
[
|
|
'uruz' => [
|
|
'target_table' => \alveolata\storage\implementation_sqltable::make(
|
|
$database,
|
|
'uruz'
|
|
),
|
|
'core_id_column' => 'fehuz_id',
|
|
'include_own_id' => false,
|
|
'exclude_core_id' => false,
|
|
]
|
|
],
|
|
[
|
|
'thurisaz' => [
|
|
'target_table' => $sqltable_thurisaz,
|
|
'edge_table' => \alveolata\storage\implementation_sqltable::make(
|
|
$database,
|
|
'ansuz'
|
|
),
|
|
'core_id_column' => 'fehuz_id',
|
|
'target_id_column' => 'thurisaz_id',
|
|
]
|
|
],
|
|
function ($stuff) {
|
|
return [
|
|
'fehuz' => $stuff['core_row']['value'],
|
|
'uruz' => \alveolata\list_\map(
|
|
$stuff['tight_supplement_values']['uruz'],
|
|
function ($x) {return $x['value'];}
|
|
),
|
|
'thurisaz' => \alveolata\list_\map(
|
|
$stuff['loose_supplement_values']['thurisaz'],
|
|
function ($x) {return $x['value'];}
|
|
),
|
|
];
|
|
},
|
|
function ($value) {
|
|
return [
|
|
'core_row' => [
|
|
'value' => $value['fehuz'],
|
|
],
|
|
'tight_supplement_values' => [
|
|
'uruz' => \alveolata\list_\map(
|
|
$value['uruz'],
|
|
function ($x) {return ['value' => $x];}
|
|
),
|
|
],
|
|
'loose_supplement_values' => [
|
|
'thurisaz' => \alveolata\list_\map(
|
|
$value['thurisaz'],
|
|
function ($x) {return ['value' => $x];}
|
|
),
|
|
],
|
|
];
|
|
}
|
|
);
|
|
$environment['sqltable_thurisaz'] = $sqltable_thurisaz;
|
|
$environment['storage'] = $sqltablecluster;
|
|
},
|
|
'sections' => [
|
|
[
|
|
'name' => 'create_delete',
|
|
'cases' => [
|
|
[
|
|
'name' => 'test',
|
|
'procedure' => function ($assert, $environment) {
|
|
// constants
|
|
$value = [
|
|
'fehuz' => 'fehuz',
|
|
'uruz' => [
|
|
'uruz1',
|
|
'uruz2',
|
|
],
|
|
'thurisaz' => [
|
|
// 'thurisaz1',
|
|
// 'thurisaz2',
|
|
],
|
|
];
|
|
|
|
// execution & assertions
|
|
$assert->runs(
|
|
function () use (&$environment, &$value) {
|
|
$key = $environment['storage']->create($value);
|
|
$environment['storage']->delete($key);
|
|
}
|
|
);
|
|
}
|
|
],
|
|
]
|
|
],
|
|
[
|
|
'name' => 'read',
|
|
'cases' => [
|
|
[
|
|
'name' => 'test',
|
|
'procedure' => function ($assert, $environment) {
|
|
// constants
|
|
$value = [
|
|
'fehuz' => 'fehuz',
|
|
'uruz' => [
|
|
'uruz1',
|
|
'uruz2',
|
|
],
|
|
'thurisaz' => [
|
|
// 'thurisaz1',
|
|
// 'thurisaz2',
|
|
],
|
|
];
|
|
|
|
// setup
|
|
$key = $environment['storage']->create($value);
|
|
|
|
// execution
|
|
$value_read = $environment['storage']->read($key);
|
|
|
|
// assertions
|
|
$assert->equal($value_read, $value);
|
|
|
|
// cleanup
|
|
$environment['storage']->delete($key);
|
|
}
|
|
],
|
|
]
|
|
],
|
|
[
|
|
'name' => 'search',
|
|
'cases' => [
|
|
[
|
|
'name' => 'test',
|
|
'procedure' => function ($assert, $environment) {
|
|
// constants
|
|
$value = [
|
|
'fehuz' => 'fehuz',
|
|
'uruz' => [
|
|
'uruz1',
|
|
'uruz2',
|
|
],
|
|
'thurisaz' => [
|
|
// 'thurisaz1',
|
|
// 'thurisaz2',
|
|
],
|
|
];
|
|
|
|
// setup
|
|
$key = $environment['storage']->create($value);
|
|
|
|
// execution
|
|
$keys = $environment['storage']->search(['value' => 'fehuz']);
|
|
|
|
// assertions
|
|
$assert->equal($keys, [$key]);
|
|
|
|
// cleanup
|
|
$environment['storage']->delete($key);
|
|
}
|
|
],
|
|
]
|
|
],
|
|
/*
|
|
[
|
|
'name' => 'update',
|
|
'cases' => [
|
|
[
|
|
'name' => 'test',
|
|
'procedure' => function ($assert, $environment) {
|
|
// constants
|
|
$value1 = [
|
|
'foo' => 'Foo',
|
|
'bar' => [['val' => 0], ['val' => 2]],
|
|
'baz' => [['val' => 1], ['val' => 3]],
|
|
];
|
|
$value2 = [
|
|
'foo' => 'Fox',
|
|
'bar' => [['val' => 4], ['val' => 6]],
|
|
'baz' => [['val' => 5], ['val' => 7]],
|
|
];
|
|
|
|
// setup
|
|
$key = $environment['storage']->create($value1);
|
|
|
|
// execution
|
|
$environment['storage']->update($key, $value2);
|
|
$value_read = $environment['storage']->read($key);
|
|
|
|
// assertions
|
|
$assert->equal($value_read, $value2);
|
|
|
|
// cleanup
|
|
$environment['storage']->delete($key);
|
|
}
|
|
],
|
|
]
|
|
],
|
|
*/
|
|
],
|
|
'cleanup' => function (&$environment) {
|
|
// $environment['storage']->teardown();
|
|
exec(sprintf('rm -f %s', $environment['path_database']));
|
|
}
|
|
]
|
|
]
|
|
],
|
|
]
|
|
]
|
|
);
|
|
|